diff options
author | Norbert Preining <norbert@preining.info> | 2023-12-04 03:01:04 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-12-04 03:01:04 +0000 |
commit | db0fe20663f1bcb3fcf87c3fb05a727420edd203 (patch) | |
tree | e5abdee7535ece54123168f0fa9a21fa0a627464 /support | |
parent | de2c50ca7889fda13da11c1ccf6bdbd199ba8c2b (diff) |
CTAN sync 202312040301
Diffstat (limited to 'support')
479 files changed, 10233 insertions, 11604 deletions
diff --git a/support/texlab/CHANGELOG.md b/support/texlab/CHANGELOG.md index f36aed1950..a8bae12b05 100644 --- a/support/texlab/CHANGELOG.md +++ b/support/texlab/CHANGELOG.md @@ -5,6 +5,18 @@ 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.12.0] - 2023-12-03 + +### Added + +- Infer `texlab.build.auxDirectory`, `texlab.build.logDirectory` and `texlab.build.pdfDirectory` from `latexmkrc` if available ([#907](https://github.com/latex-lsp/texlab/issues/907)) + +### Fixed + +- Do not report `undefined reference` errors when using `\nocite{*}` ([#964](https://github.com/latex-lsp/texlab/issues/964)) +- Fix potential crash when parsing build log files ([#973](https://github.com/latex-lsp/texlab/issues/973)) +- Set the final tab stop of the `\begin` snippet inside the environment ([#963](https://github.com/latex-lsp/texlab/issues/963)) + ## [5.11.0] - 2023-11-05 ### Added diff --git a/support/texlab/Cargo.lock b/support/texlab/Cargo.lock index 1b4136224c..347193badd 100644 --- a/support/texlab/Cargo.lock +++ b/support/texlab/Cargo.lock @@ -24,19 +24,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] name = "anstream" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", @@ -67,17 +58,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" dependencies = [ - "windows-sys 0.48.0", + "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -87,15 +78,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] -name = "assert_unordered" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74323b7881323eb351134e08ee5331594826789557afef8e309baf481b2264" -dependencies = [ - "ansi_term", -] - -[[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -108,7 +90,8 @@ dependencies = [ "bibtex-utils", "dirs", "distro", - "itertools 0.11.0", + "itertools 0.12.0", + "line-index", "log", "notify", "once_cell", @@ -128,13 +111,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" [[package]] +name = "bibfmt" +version = "0.0.0" +dependencies = [ + "expect-test", + "line-index", + "parser", + "rowan", + "syntax", +] + +[[package]] name = "bibtex-utils" version = "0.0.0" dependencies = [ "chrono", "expect-test", "human_name", - "itertools 0.11.0", + "itertools 0.12.0", "parser", "rowan", "rustc-hash", @@ -155,19 +149,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] name = "bstr" -version = "1.6.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" dependencies = [ "memchr", "regex-automata", @@ -244,7 +229,7 @@ dependencies = [ "bibtex-utils", "expect-test", "isocountry", - "itertools 0.11.0", + "itertools 0.12.0", "parser", "rowan", "rustc-hash", @@ -256,9 +241,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.4" +version = "4.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d7b8d5ec32af0fadc644bf1fd509a688c2103b185644bb1e29d164e0703136" +checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272" dependencies = [ "clap_builder", "clap_derive", @@ -266,9 +251,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.4" +version = "4.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5179bb514e4d7c2051749d8fcefa2ed6d06a9f4e6d69faf3805f5d80b8cf8d56" +checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1" dependencies = [ "anstream", "anstyle", @@ -278,9 +263,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.2" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -290,9 +275,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -310,7 +295,7 @@ dependencies = [ "crossbeam-channel", "distro", "expect-test", - "itertools 0.11.0", + "itertools 0.12.0", "libc", "log", "rowan", @@ -331,8 +316,7 @@ dependencies = [ "distro", "expect-test", "fuzzy-matcher", - "itertools 0.11.0", - "log", + "line-index", "rayon", "rowan", "rustc-hash", @@ -346,7 +330,7 @@ name = "completion-data" version = "0.0.0" dependencies = [ "flate2", - "itertools 0.11.0", + "itertools 0.12.0", "once_cell", "rustc-hash", "serde", @@ -354,33 +338,12 @@ dependencies = [ ] [[package]] -name = "console" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" -dependencies = [ - "encode_unicode", - "lazy_static", - "libc", - "windows-sys 0.45.0", -] - -[[package]] name = "countme" version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" [[package]] -name = "cpufeatures" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] - -[[package]] name = "crc32fast" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -455,7 +418,7 @@ dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.9.0", + "memoffset", "scopeguard", ] @@ -469,21 +432,11 @@ dependencies = [ ] [[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] name = "definition" version = "0.0.0" dependencies = [ "base-db", - "itertools 0.11.0", + "itertools 0.12.0", "rowan", "rustc-hash", "syntax", @@ -495,7 +448,8 @@ name = "diagnostics" version = "0.0.0" dependencies = [ "base-db", - "itertools 0.11.0", + "itertools 0.12.0", + "line-index", "rowan", "rustc-hash", "syntax", @@ -504,16 +458,6 @@ dependencies = [ ] [[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] name = "dirs" version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -531,7 +475,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -555,12 +499,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] name = "encoding_rs" version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -586,7 +524,7 @@ checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -630,7 +568,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6584280525fb2059cba3db2c04abf947a1a29a45ddae89f3870f8281704fafc9" dependencies = [ - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -642,14 +580,14 @@ dependencies = [ "cfg-if", "libc", "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -674,9 +612,9 @@ dependencies = [ [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -700,16 +638,6 @@ dependencies = [ ] [[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] name = "getrandom" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -721,19 +649,6 @@ dependencies = [ ] [[package]] -name = "globset" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" -dependencies = [ - "aho-corasick", - "bstr", - "fnv", - "log", - "regex", -] - -[[package]] name = "half" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -758,6 +673,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] +name = "highlights" +version = "0.0.0" +dependencies = [ + "base-db", + "expect-test", + "rowan", + "test-utils", +] + +[[package]] name = "hover" version = "0.0.0" dependencies = [ @@ -792,9 +717,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -805,9 +730,9 @@ name = "inlay-hints" version = "0.0.0" dependencies = [ "base-db", + "expect-test", "rowan", "rustc-hash", - "syntax", "test-utils", ] @@ -832,24 +757,6 @@ dependencies = [ ] [[package]] -name = "insta" -version = "1.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e02c584f4595792d09509a94cdb92a3cef7592b1eb2d9877ee6f527062d0ea" -dependencies = [ - "console", - "globset", - "lazy_static", - "linked-hash-map", - "pest", - "pest_derive", - "serde", - "similar", - "walkdir", - "yaml-rust", -] - -[[package]] name = "is-terminal" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -857,7 +764,7 @@ checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi", "rustix", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -881,9 +788,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" dependencies = [ "either", ] @@ -937,21 +844,32 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.148" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +name = "line-index" +version = "0.0.0" +dependencies = [ + "rustc-hash", + "text-size", +] + +[[package]] +name = "links" +version = "0.0.0" +dependencies = [ + "base-db", + "expect-test", + "test-utils", +] [[package]] name = "linux-raw-sys" -version = "0.4.7" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" [[package]] name = "lock_api" @@ -1034,15 +952,6 @@ checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" @@ -1068,7 +977,7 @@ dependencies = [ "libc", "log", "wasi", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1087,7 +996,7 @@ dependencies = [ "log", "mio", "walkdir", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1161,72 +1070,28 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.48.5", + "windows-targets", ] [[package]] name = "parser" version = "0.0.0" dependencies = [ - "insta", + "expect-test", "logos", "once_cell", "regex", "rowan", "rustc-hash", "syntax", + "tempfile", ] [[package]] name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "pest" -version = "2.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" -dependencies = [ - "memchr", - "thiserror", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bee7be22ce7918f641a33f08e3f43388c7656772244e2bbb2477f44cc9021a" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1511785c5e98d79a05e8a6bc34b4ac2168a0e3e92161862030ad84daa223141" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.7.3" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42f0394d3123e33353ca5e1e89092e533d2cc490389f2bd6131c43c634ebc5f" -dependencies = [ - "once_cell", - "pest", - "sha2", -] +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" @@ -1366,6 +1231,15 @@ dependencies = [ ] [[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] name = "redox_users" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1388,25 +1262,25 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.5" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", "regex-automata", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", ] [[package]] name = "regex-automata" -version = "0.3.8" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", ] [[package]] @@ -1417,9 +1291,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rename" @@ -1434,13 +1308,13 @@ dependencies = [ [[package]] name = "rowan" -version = "0.15.11" +version = "0.15.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64449cfef9483a475ed56ae30e2da5ee96448789fb2aa240a04beb6a055078bf" +checksum = "906057e449592587bf6724f00155bf82a6752c868d78a8fb3aa41f4e6357cfe8" dependencies = [ "countme", "hashbrown", - "memoffset 0.8.0", + "memoffset", "rustc-hash", "text-size", ] @@ -1453,15 +1327,15 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.14" +version = "0.38.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" dependencies = [ "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1487,18 +1361,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", @@ -1507,9 +1381,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -1528,9 +1402,9 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" dependencies = [ "proc-macro2", "quote", @@ -1538,23 +1412,6 @@ dependencies = [ ] [[package]] -name = "sha2" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "similar" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" - -[[package]] name = "siphasher" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1588,7 +1445,8 @@ dependencies = [ "base-db", "distro", "expect-test", - "itertools 0.11.0", + "itertools 0.12.0", + "line-index", "regex", "rowan", "syntax", @@ -1612,21 +1470,21 @@ dependencies = [ name = "syntax" version = "0.0.0" dependencies = [ - "itertools 0.11.0", + "itertools 0.12.0", "rowan", ] [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "rustix", - "windows-sys 0.48.0", + "windows-sys", ] [[package]] @@ -1635,17 +1493,18 @@ version = "0.0.0" dependencies = [ "base-db", "distro", + "line-index", "rowan", "url", ] [[package]] name = "texlab" -version = "5.11.0" +version = "5.12.0" dependencies = [ "anyhow", - "assert_unordered", "base-db", + "bibfmt", "citeproc", "clap", "commands", @@ -1660,11 +1519,11 @@ dependencies = [ "encoding_rs_io", "fern", "folding", - "fuzzy-matcher", + "highlights", "hover", "inlay-hints", - "insta", - "itertools 0.11.0", + "line-index", + "links", "log", "lsp-server", "lsp-types", @@ -1673,7 +1532,6 @@ dependencies = [ "once_cell", "parking_lot", "parser", - "rayon", "references", "regex", "rename", @@ -1697,18 +1555,18 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", @@ -1771,18 +1629,6 @@ dependencies = [ ] [[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "ucd-trie" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" - -[[package]] name = "unicode-bidi" version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1823,9 +1669,9 @@ checksum = "402bb19d8e03f1d1a7450e2bd613980869438e0666331be3e073089124aa1adc" [[package]] name = "url" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -1840,12 +1686,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] name = "walkdir" version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1958,35 +1798,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets", ] [[package]] @@ -1995,104 +1811,53 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] diff --git a/support/texlab/crates/base-db/Cargo.toml b/support/texlab/crates/base-db/Cargo.toml index b440ff5c61..f5e2c07829 100644 --- a/support/texlab/crates/base-db/Cargo.toml +++ b/support/texlab/crates/base-db/Cargo.toml @@ -7,20 +7,21 @@ edition.workspace = true rust-version.workspace = true [dependencies] +bibtex-utils = { path = "../bibtex-utils" } dirs = "5.0.1" distro = { path = "../distro" } -itertools = "0.11.0" +itertools = "0.12.0" +line-index = { path = "../line-index" } log = "0.4.20" notify = "6.0.1" once_cell = "1.18.0" parser = { path = "../parser" } percent-encoding = "2.3.0" -regex = "1.9.5" -rowan = "0.15.11" +regex = "1.10.2" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } -url = "=2.3.1" -bibtex-utils = { path = "../bibtex-utils" } +url = "2.5.0" [lib] doctest = false diff --git a/support/texlab/crates/base-db/src/document.rs b/support/texlab/crates/base-db/src/document.rs index 8642694811..9f45876d7e 100644 --- a/support/texlab/crates/base-db/src/document.rs +++ b/support/texlab/crates/base-db/src/document.rs @@ -1,15 +1,12 @@ use std::path::PathBuf; use distro::Language; +use line_index::{LineCol, LineIndex}; use rowan::TextRange; -use syntax::{bibtex, latex, BuildError}; +use syntax::{bibtex, latex, latexmkrc::LatexmkrcData, BuildError}; use url::Url; -use crate::{ - semantics, - util::{LineCol, LineIndex}, - Config, -}; +use crate::{semantics, Config}; #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)] pub enum Owner { @@ -78,6 +75,10 @@ impl Document { DocumentData::Log(LogDocumentData { errors }) } Language::Root => DocumentData::Root, + Language::Latexmkrc => { + let data = parser::parse_latexmkrc(&text).unwrap_or_default(); + DocumentData::Latexmkrc(data) + } Language::Tectonic => DocumentData::Tectonic, }; @@ -134,6 +135,7 @@ pub enum DocumentData { Aux(AuxDocumentData), Log(LogDocumentData), Root, + Latexmkrc(LatexmkrcData), Tectonic, } @@ -169,6 +171,14 @@ impl DocumentData { None } } + + pub fn as_latexmkrc(&self) -> Option<&LatexmkrcData> { + if let DocumentData::Latexmkrc(data) = self { + Some(data) + } else { + None + } + } } #[derive(Debug, Clone)] @@ -216,4 +226,22 @@ impl<'a> DocumentLocation<'a> { pub fn new(document: &'a Document, range: TextRange) -> Self { Self { document, range } } + + fn eq_key(&self) -> (&Url, TextRange) { + (&self.document.uri, self.range) + } +} + +impl<'a> PartialEq for DocumentLocation<'a> { + fn eq(&self, other: &Self) -> bool { + self.eq_key() == other.eq_key() + } +} + +impl<'a> Eq for DocumentLocation<'a> {} + +impl<'a> std::hash::Hash for DocumentLocation<'a> { + fn hash<H: std::hash::Hasher>(&self, state: &mut H) { + self.eq_key().hash(state) + } } diff --git a/support/texlab/crates/base-db/src/graph.rs b/support/texlab/crates/base-db/src/graph.rs index 46b9038de8..088e0828b7 100644 --- a/support/texlab/crates/base-db/src/graph.rs +++ b/support/texlab/crates/base-db/src/graph.rs @@ -138,9 +138,8 @@ impl<'a> Graph<'a> { fn add_implicit_edges(&mut self, source: &'a Document, base_dir: &Url) { if source.language == Language::Tex { - let config = &self.workspace.config().build; - let aux_dir = self.workspace.output_dir(base_dir, config.aux_dir.clone()); - let log_dir = self.workspace.output_dir(base_dir, config.log_dir.clone()); + let aux_dir = self.workspace.aux_dir(base_dir); + let log_dir = self.workspace.log_dir(base_dir); let relative_path = base_dir.make_relative(&source.uri).unwrap(); diff --git a/support/texlab/crates/base-db/src/util.rs b/support/texlab/crates/base-db/src/util.rs index 6d6d6897a6..068a0c9b2a 100644 --- a/support/texlab/crates/base-db/src/util.rs +++ b/support/texlab/crates/base-db/src/util.rs @@ -1,10 +1,8 @@ mod label; -mod line_index; pub mod queries; mod regex_filter; pub use self::{ label::{render_label, FloatKind, RenderedLabel, RenderedObject}, - line_index::{LineCol, LineColUtf16, LineIndex}, regex_filter::filter_regex_patterns, }; diff --git a/support/texlab/crates/base-db/src/workspace.rs b/support/texlab/crates/base-db/src/workspace.rs index b4a524ad4a..330ed5a493 100644 --- a/support/texlab/crates/base-db/src/workspace.rs +++ b/support/texlab/crates/base-db/src/workspace.rs @@ -5,11 +5,13 @@ use std::{ use distro::{Distro, Language}; use itertools::Itertools; +use line_index::LineCol; use rowan::{TextLen, TextRange}; use rustc_hash::FxHashSet; +use syntax::latexmkrc::LatexmkrcData; use url::Url; -use crate::{graph, util::LineCol, Config, Document, DocumentData, DocumentParams, Owner}; +use crate::{graph, Config, Document, DocumentData, DocumentParams, Owner}; #[derive(Debug, Default)] pub struct Workspace { @@ -114,22 +116,11 @@ impl Workspace { self.iter() .filter(|document| document.uri.scheme() == "file") .flat_map(|document| { - let dir1 = self.output_dir( - &self.current_dir(&document.dir), - self.config.build.aux_dir.clone(), - ); - - let dir2 = self.output_dir( - &self.current_dir(&document.dir), - self.config.build.log_dir.clone(), - ); - - let dir3 = &document.dir; - [ - dir1.to_file_path(), - dir2.to_file_path(), - dir3.to_file_path(), - ] + let current_dir = &self.current_dir(&document.dir); + let doc_dir = document.dir.to_file_path(); + let aux_dir = self.aux_dir(current_dir).to_file_path(); + let log_dir = self.log_dir(current_dir).to_file_path(); + [aux_dir, log_dir, doc_dir] }) .flatten() .for_each(|path| { @@ -153,13 +144,45 @@ impl Workspace { .unwrap_or_else(|| base_dir.clone()) } - pub fn output_dir(&self, base_dir: &Url, relative_path: String) -> Url { - let mut path = relative_path; - if !path.ends_with('/') { - path.push('/'); + pub fn aux_dir(&self, base_dir: &Url) -> Url { + self.output_dir(base_dir, &self.config.build.aux_dir, |data| { + data.aux_dir.as_deref() + }) + } + + pub fn log_dir(&self, base_dir: &Url) -> Url { + self.output_dir(base_dir, &self.config.build.log_dir, |_| None) + } + + pub fn pdf_dir(&self, base_dir: &Url) -> Url { + self.output_dir(base_dir, &self.config.build.pdf_dir, |_| None) + } + + fn current_latexmkrc(&self, base_dir: &Url) -> Option<&LatexmkrcData> { + self.documents + .iter() + .filter(|document| document.language == Language::Latexmkrc) + .find(|document| document.uri.join(".").as_ref() == Ok(base_dir)) + .and_then(|document| document.data.as_latexmkrc()) + } + + fn output_dir( + &self, + base_dir: &Url, + config: &str, + extract_latexmkrc: impl FnOnce(&LatexmkrcData) -> Option<&str>, + ) -> Url { + let mut dir: String = self + .current_latexmkrc(base_dir) + .and_then(|data| extract_latexmkrc(data).or_else(|| data.out_dir.as_deref())) + .unwrap_or(config) + .into(); + + if !dir.ends_with('/') { + dir.push('/'); } - base_dir.join(&path).unwrap_or_else(|_| base_dir.clone()) + base_dir.join(&dir).unwrap_or_else(|_| base_dir.clone()) } pub fn contains(&self, path: &Path) -> bool { @@ -298,7 +321,10 @@ impl Workspace { continue; }; - if !matches!(lang, Language::Tex | Language::Root | Language::Tectonic) { + if !matches!( + lang, + Language::Tex | Language::Root | Language::Tectonic | Language::Latexmkrc + ) { continue; } diff --git a/support/texlab/crates/bibfmt/Cargo.toml b/support/texlab/crates/bibfmt/Cargo.toml new file mode 100644 index 0000000000..18a4eb6dca --- /dev/null +++ b/support/texlab/crates/bibfmt/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "bibfmt" +version = "0.0.0" +license.workspace = true +authors.workspace = true +edition.workspace = true +rust-version.workspace = true + +[dependencies] +rowan = "0.15.13" +syntax = { path = "../syntax" } +line-index = { path = "../line-index" } + +[lib] +doctest = false + +[dev-dependencies] +expect-test = "1.4.1" +parser = { path = "../parser" } diff --git a/support/texlab/crates/bibfmt/src/lib.rs b/support/texlab/crates/bibfmt/src/lib.rs new file mode 100644 index 0000000000..cfce131f2c --- /dev/null +++ b/support/texlab/crates/bibfmt/src/lib.rs @@ -0,0 +1,193 @@ +use line_index::LineIndex; +use rowan::{ast::AstNode, NodeOrToken}; +use syntax::bibtex::{self, HasName, HasType, HasValue}; + +pub struct Options { + pub insert_spaces: bool, + pub tab_size: usize, + pub line_length: usize, +} + +impl Options { + fn indent(&self) -> String { + if self.insert_spaces { + std::iter::repeat(' ').take(self.tab_size).collect() + } else { + String::from("\t") + } + } +} + +impl Default for Options { + fn default() -> Self { + Self { + insert_spaces: true, + tab_size: 4, + line_length: 80, + } + } +} + +pub fn format(root: &bibtex::SyntaxNode, line_index: &LineIndex, options: &Options) -> String { + let indent = options.indent(); + let mut output = String::new(); + for elem in root.children_with_tokens() { + match elem { + NodeOrToken::Token(token) => { + output.push_str(token.text()); + } + NodeOrToken::Node(node) => { + let mut fmt = Formatter { + indent: &indent, + output: &mut output, + options, + align: Vec::new(), + line_index, + }; + + fmt.visit_node(node); + } + } + } + + output +} + +struct Formatter<'a> { + output: &'a mut String, + indent: &'a str, + options: &'a Options, + align: Vec<usize>, + line_index: &'a LineIndex, +} + +impl<'a> Formatter<'a> { + fn visit_token_lowercase(&mut self, token: &bibtex::SyntaxToken) { + self.output.push_str(&token.text().to_lowercase()); + } + + fn should_insert_space( + &self, + previous: &bibtex::SyntaxToken, + current: &bibtex::SyntaxToken, + ) -> bool { + let previous = self.line_index.line_col(previous.text_range().end()); + let current = self.line_index.line_col(current.text_range().start()); + previous.line != current.line || previous.col < current.col + } + + fn base_align(&self) -> usize { + self.output[self.output.rfind('\n').unwrap_or(0)..] + .chars() + .count() + } + + fn visit_node(&mut self, parent: bibtex::SyntaxNode) { + match parent.kind() { + bibtex::PREAMBLE => { + let preamble = bibtex::Preamble::cast(parent).unwrap(); + self.visit_token_lowercase(&preamble.type_token().unwrap()); + self.output.push('{'); + if preamble.syntax().children().next().is_some() { + self.align.push(self.base_align()); + for node in preamble.syntax().children() { + self.visit_node(node); + } + self.output.push('}'); + } + } + bibtex::STRING => { + let string = bibtex::StringDef::cast(parent).unwrap(); + self.visit_token_lowercase(&string.type_token().unwrap()); + self.output.push('{'); + if let Some(name) = string.name_token() { + self.output.push_str(name.text()); + self.output.push_str(" = "); + if let Some(value) = string.value() { + self.align.push(self.base_align()); + self.visit_node(value.syntax().clone()); + self.output.push('}'); + } + } + } + bibtex::ENTRY => { + let entry = bibtex::Entry::cast(parent).unwrap(); + self.visit_token_lowercase(&entry.type_token().unwrap()); + self.output.push('{'); + if let Some(key) = entry.name_token() { + self.output.push_str(&key.to_string()); + self.output.push(','); + self.output.push('\n'); + for field in entry.fields() { + self.visit_node(field.syntax().clone()); + } + self.output.push('}'); + } + } + bibtex::FIELD => { + let field = bibtex::Field::cast(parent).unwrap(); + self.output.push_str(&self.indent); + let name = field.name_token().unwrap(); + self.output.push_str(name.text()); + self.output.push_str(" = "); + if let Some(value) = field.value() { + let count = name.text().chars().count(); + self.align.push(self.options.tab_size + count + 3); + self.visit_node(value.syntax().clone()); + self.output.push(','); + self.output.push('\n'); + } + } + kind if bibtex::Value::can_cast(kind) => { + let tokens: Vec<_> = parent + .descendants_with_tokens() + .filter_map(|element| element.into_token()) + .filter(|token| token.kind() != bibtex::WHITESPACE) + .collect(); + + self.output.push_str(tokens[0].text()); + + let align = self.align.pop().unwrap_or_default(); + let mut length = align + tokens[0].text().chars().count(); + for i in 1..tokens.len() { + let previous = &tokens[i - 1]; + let current = &tokens[i]; + let current_length = current.text().chars().count(); + + let insert_space = self.should_insert_space(previous, current); + let space_length = if insert_space { 1 } else { 0 }; + + if length + current_length + space_length > self.options.line_length { + self.output.push('\n'); + self.output.push_str(self.indent.as_ref()); + for _ in 0..=align - self.options.tab_size as usize { + self.output.push(' '); + } + length = align; + } else if insert_space { + self.output.push(' '); + length += 1; + } + self.output.push_str(current.text()); + length += current_length; + } + } + bibtex::ROOT | bibtex::JUNK => { + for element in parent.children_with_tokens() { + match element { + NodeOrToken::Token(token) => { + self.output.push_str(token.text()); + } + NodeOrToken::Node(node) => { + self.visit_node(node); + } + } + } + } + _ => unreachable!(), + } + } +} + +#[cfg(test)] +mod tests; diff --git a/support/texlab/crates/bibfmt/src/tests.rs b/support/texlab/crates/bibfmt/src/tests.rs new file mode 100644 index 0000000000..c081a15eca --- /dev/null +++ b/support/texlab/crates/bibfmt/src/tests.rs @@ -0,0 +1,144 @@ +use expect_test::{expect, Expect}; +use line_index::LineIndex; +use syntax::bibtex; + +use crate::Options; + +fn check(input: &str, expect: Expect) { + let green = parser::parse_bibtex(input); + let root = bibtex::SyntaxNode::new_root(green); + let line_index = LineIndex::new(input); + let output = crate::format(&root, &line_index, &Options::default()); + expect.assert_eq(&output); +} + +#[test] +fn test_wrap_long_lines() { + check( + r#"@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Lorem ipsum dolor sit amet, + consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},}"#, + expect![[r#" + @article{foo, + bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit + amet, consectetur adipiscing elit.}, + }"#]], + ); +} + +#[test] +fn test_multiple_entries() { + check( + r#"@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Lorem ipsum dolor sit amet, +consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},} + +@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Lorem ipsum dolor sit amet, +consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},}"#, + expect![[r#" + @article{foo, + bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit + amet, consectetur adipiscing elit.}, + } + + @article{foo, + bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit + amet, consectetur adipiscing elit.}, + }"#]], + ); +} + +#[test] +fn test_trailing_comma() { + check( + r#"@article{foo, bar = baz}"#, + expect![[r#" + @article{foo, + bar = baz, + }"#]], + ); +} + +#[test] +fn test_insert_braces() { + check( + r#"@article{foo, bar = baz,"#, + expect![[r#" + @article{foo, + bar = baz, + }"#]], + ); +} + +#[test] +fn test_comment() { + check( + r#"Foo Bar +@article{foo, bar = "\baz",} +Baz +@article{f,} +Qux"#, + expect![[r#" + Foo Bar + @article{foo, + bar = "\baz", + } + Baz + @article{f, + } + Qux"#]], + ); +} + +#[test] +fn test_command() { + check( + r#"@article{foo, bar = "\baz",}"#, + expect![[r#" + @article{foo, + bar = "\baz", + }"#]], + ); +} + +#[test] +fn test_join_strings() { + check( + r#"@article{foo, bar = "baz" # "qux"}"#, + expect![[r#" + @article{foo, + bar = "baz" # "qux", + }"#]], + ); +} + +#[test] +fn test_parens() { + check( + r#"@article(foo,)"#, + expect![[r#" + @article{foo, + }"#]], + ); +} + +#[test] +fn test_string() { + check( + r#"@string{foo="bar"}"#, + expect![[r#"@string{foo = "bar"}"#]], + ); +} + +#[test] +fn test_preamble() { + check( + r#"@preamble{ + "foo bar baz" }"#, + expect![[r#"@preamble{"foo bar baz"}"#]], + ); +} diff --git a/support/texlab/crates/bibtex-utils/Cargo.toml b/support/texlab/crates/bibtex-utils/Cargo.toml index 7dd75ff738..1789a9747b 100644 --- a/support/texlab/crates/bibtex-utils/Cargo.toml +++ b/support/texlab/crates/bibtex-utils/Cargo.toml @@ -9,8 +9,8 @@ rust-version.workspace = true [dependencies] chrono = { version = "0.4.26", default-features = false, features = ["std"] } human_name = "2.0.2" -itertools = "0.11.0" -rowan = "0.15.11" +itertools = "0.12.0" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } unicode-normalization = "0.1.22" diff --git a/support/texlab/crates/citeproc/Cargo.toml b/support/texlab/crates/citeproc/Cargo.toml index c298c6f7d1..cccbd002c4 100644 --- a/support/texlab/crates/citeproc/Cargo.toml +++ b/support/texlab/crates/citeproc/Cargo.toml @@ -9,13 +9,13 @@ rust-version.workspace = true [dependencies] bibtex-utils = { path = "../bibtex-utils" } isocountry = "0.3.2" -itertools = "0.11.0" -rowan = "0.15.11" +itertools = "0.12.0" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } titlecase = "2.2.1" unicode-normalization = "0.1.22" -url = "=2.3.1" +url = "2.5.0" [lib] doctest = false diff --git a/support/texlab/crates/commands/Cargo.toml b/support/texlab/crates/commands/Cargo.toml index cf395e5bf8..2b010ec126 100644 --- a/support/texlab/crates/commands/Cargo.toml +++ b/support/texlab/crates/commands/Cargo.toml @@ -9,16 +9,16 @@ rust-version.workspace = true [dependencies] anyhow = "1.0.72" base-db = { path = "../base-db" } -bstr = "1.6.0" +bstr = "1.8.0" crossbeam-channel = "0.5.8" -itertools = "0.11.0" -libc = "0.2.147" +itertools = "0.12.0" +libc = "0.2.150" log = "0.4.19" -rowan = "0.15.11" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } -thiserror = "1.0.43" -url = "2.3.1" +thiserror = "1.0.50" +url = "2.5.0" [dev-dependencies] distro = { path = "../distro" } diff --git a/support/texlab/crates/commands/src/clean.rs b/support/texlab/crates/commands/src/clean.rs index 562d9c49b6..706e7dfaf1 100644 --- a/support/texlab/crates/commands/src/clean.rs +++ b/support/texlab/crates/commands/src/clean.rs @@ -29,18 +29,15 @@ impl CleanCommand { }; let out_dir = match target { - CleanTarget::Auxiliary => &workspace.config().build.aux_dir, - CleanTarget::Artifacts => &workspace.config().build.pdf_dir, + CleanTarget::Auxiliary => workspace.aux_dir(&base_dir), + CleanTarget::Artifacts => workspace.pdf_dir(&base_dir), }; - let out_dir = workspace - .output_dir(&base_dir, out_dir.clone()) - .to_file_path() - .unwrap(); + let out_dir_path = out_dir.to_file_path().unwrap(); let executable = String::from("latexmk"); let args = vec![ - format!("-outdir={}", out_dir.display()), + format!("-outdir={}", out_dir_path.display()), String::from(flag), path.display().to_string(), ]; diff --git a/support/texlab/crates/commands/src/fwd_search.rs b/support/texlab/crates/commands/src/fwd_search.rs index 9004ef9b09..7e82f38487 100644 --- a/support/texlab/crates/commands/src/fwd_search.rs +++ b/support/texlab/crates/commands/src/fwd_search.rs @@ -58,9 +58,8 @@ impl ForwardSearch { return Err(ForwardSearchError::NotLocal(parent.uri.clone())); } - let dir = workspace.current_dir(&parent.dir); let dir = workspace - .output_dir(&dir, workspace.config().build.pdf_dir.clone()) + .pdf_dir(&workspace.current_dir(&parent.dir)) .to_file_path() .unwrap(); diff --git a/support/texlab/crates/completion-data/Cargo.toml b/support/texlab/crates/completion-data/Cargo.toml index b0053c7701..56f78314b0 100644 --- a/support/texlab/crates/completion-data/Cargo.toml +++ b/support/texlab/crates/completion-data/Cargo.toml @@ -7,12 +7,12 @@ edition.workspace = true rust-version.workspace = true [dependencies] -flate2 = "1.0.27" -itertools = "0.11.0" +flate2 = "1.0.28" +itertools = "0.12.0" once_cell = "1.18.0" rustc-hash = "1.1.0" -serde = { version = "1.0.188", features = ["derive"] } -serde_json = "1.0.107" +serde = { version = "1.0.193", features = ["derive"] } +serde_json = "1.0.108" [lib] doctest = false diff --git a/support/texlab/crates/completion/Cargo.toml b/support/texlab/crates/completion/Cargo.toml index 671728aea8..d44e87db1e 100644 --- a/support/texlab/crates/completion/Cargo.toml +++ b/support/texlab/crates/completion/Cargo.toml @@ -10,19 +10,18 @@ rust-version.workspace = true base-db = { path = "../base-db" } completion-data = { path = "../completion-data" } fuzzy-matcher = { version = "0.3.7", features = ["compact"] } -itertools = "0.11.0" -log = "0.4.20" +line-index = { path = "../line-index" } rayon = "1.7.0" -rowan = "0.15.11" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } -url = "=2.3.1" +url = "2.5.0" [dev-dependencies] criterion = "0.5.1" distro = { path = "../distro" } -test-utils = { path = "../test-utils" } expect-test = "1.4.1" +test-utils = { path = "../test-utils" } [lib] doctest = false diff --git a/support/texlab/crates/completion/benches/bench_main.rs b/support/texlab/crates/completion/benches/bench_main.rs index 66c7a3a726..24427969d7 100644 --- a/support/texlab/crates/completion/benches/bench_main.rs +++ b/support/texlab/crates/completion/benches/bench_main.rs @@ -1,7 +1,8 @@ -use base_db::{util::LineCol, FeatureParams, Owner, Workspace}; +use base_db::{FeatureParams, Owner, Workspace}; use completion::CompletionParams; use criterion::{criterion_group, criterion_main, Criterion}; use distro::Language; +use line_index::LineCol; use rowan::TextSize; use url::Url; diff --git a/support/texlab/crates/definition/Cargo.toml b/support/texlab/crates/definition/Cargo.toml index 800ca7f6da..c3549495ed 100644 --- a/support/texlab/crates/definition/Cargo.toml +++ b/support/texlab/crates/definition/Cargo.toml @@ -8,12 +8,12 @@ rust-version.workspace = true [dependencies] base-db = { path = "../base-db" } -rowan = "0.15.11" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } [dev-dependencies] -itertools = "0.11.0" +itertools = "0.12.0" test-utils = { path = "../test-utils" } [lib] diff --git a/support/texlab/crates/definition/src/citation.rs b/support/texlab/crates/definition/src/citation.rs index 509b008b26..52c0636e2d 100644 --- a/support/texlab/crates/definition/src/citation.rs +++ b/support/texlab/crates/definition/src/citation.rs @@ -8,7 +8,8 @@ use crate::DefinitionContext; use super::DefinitionResult; pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { - let data = context.params.document.data.as_tex()?; + let feature = &context.params.feature; + let data = feature.document.data.as_tex()?; let citation = queries::object_at_cursor( &data.semantics.citations, @@ -17,7 +18,7 @@ pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { )?; let name = citation.object.name_text(); - for (document, entry) in queries::objects_with_name::<bib::Entry>(&context.project, name) { + for (document, entry) in queries::objects_with_name::<bib::Entry>(&feature.project, name) { context.results.insert(DefinitionResult { origin_selection_range: citation.object.name_range(), target: document, diff --git a/support/texlab/crates/definition/src/command.rs b/support/texlab/crates/definition/src/command.rs index 661f953212..d618ca9ddf 100644 --- a/support/texlab/crates/definition/src/command.rs +++ b/support/texlab/crates/definition/src/command.rs @@ -7,7 +7,8 @@ use crate::DefinitionContext; use super::DefinitionResult; pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { - let data = context.params.document.data.as_tex()?; + let feature = &context.params.feature; + let data = feature.document.data.as_tex()?; let root = data.root_node(); let name = root .token_at_offset(context.params.offset) @@ -15,7 +16,7 @@ pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { let origin_selection_range = name.text_range(); - for document in &context.project.documents { + for document in &feature.project.documents { let DocumentData::Tex(data) = &document.data else { continue; }; diff --git a/support/texlab/crates/definition/src/include.rs b/support/texlab/crates/definition/src/include.rs index df2c5c763c..bc9311ba01 100644 --- a/support/texlab/crates/definition/src/include.rs +++ b/support/texlab/crates/definition/src/include.rs @@ -5,12 +5,13 @@ use crate::DefinitionContext; use super::DefinitionResult; pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { - let start = context.params.document; - let parents = context.params.workspace.parents(start); + let feature = &context.params.feature; + let start = feature.document; + let parents = feature.workspace.parents(start); let results = parents .into_iter() .chain(std::iter::once(start)) - .flat_map(|parent| base_db::graph::Graph::new(context.params.workspace, parent).edges) + .flat_map(|parent| base_db::graph::Graph::new(feature.workspace, parent).edges) .filter(|edge| edge.source == start) .flat_map(|edge| { let origin_selection_range = edge.weight?.link.path.range; diff --git a/support/texlab/crates/definition/src/label.rs b/support/texlab/crates/definition/src/label.rs index 80f1442daf..e32c0a93d0 100644 --- a/support/texlab/crates/definition/src/label.rs +++ b/support/texlab/crates/definition/src/label.rs @@ -11,7 +11,8 @@ use crate::DefinitionContext; use super::DefinitionResult; pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { - let data = context.params.document.data.as_tex()?; + let feature = &context.params.feature; + let data = feature.document.data.as_tex()?; let reference = queries::object_at_cursor( &data.semantics.labels, context.params.offset, @@ -19,10 +20,10 @@ pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { )?; let name = reference.object.name_text(); - let labels = queries::objects_with_name::<tex::Label>(&context.project, name); + let labels = queries::objects_with_name::<tex::Label>(&feature.project, name); for (document, label) in labels.filter(|(_, label)| label.kind == tex::LabelKind::Definition) { let target_selection_range = label.name.range; - let target_range = render_label(context.params.workspace, &context.project, label) + let target_range = render_label(feature.workspace, &feature.project, label) .map_or(target_selection_range, |label| label.range); context.results.insert(DefinitionResult { diff --git a/support/texlab/crates/definition/src/lib.rs b/support/texlab/crates/definition/src/lib.rs index 2c1614f04e..55319b7fe4 100644 --- a/support/texlab/crates/definition/src/lib.rs +++ b/support/texlab/crates/definition/src/lib.rs @@ -4,14 +4,13 @@ mod include; mod label; mod string_ref; -use base_db::{Document, Project, Workspace}; +use base_db::{Document, FeatureParams}; use rowan::{TextRange, TextSize}; use rustc_hash::FxHashSet; #[derive(Debug)] -pub struct DefinitionParams<'db> { - pub workspace: &'db Workspace, - pub document: &'db Document, +pub struct DefinitionParams<'a> { + pub feature: FeatureParams<'a>, pub offset: TextSize, } @@ -24,17 +23,14 @@ pub struct DefinitionResult<'a> { } #[derive(Debug)] -struct DefinitionContext<'db> { - params: DefinitionParams<'db>, - project: Project<'db>, - results: FxHashSet<DefinitionResult<'db>>, +struct DefinitionContext<'a> { + params: DefinitionParams<'a>, + results: FxHashSet<DefinitionResult<'a>>, } pub fn goto_definition(params: DefinitionParams) -> FxHashSet<DefinitionResult> { - let project = params.workspace.project(params.document); let mut context = DefinitionContext { params, - project, results: FxHashSet::default(), }; diff --git a/support/texlab/crates/definition/src/string_ref.rs b/support/texlab/crates/definition/src/string_ref.rs index 678fc5911e..48af5c725e 100644 --- a/support/texlab/crates/definition/src/string_ref.rs +++ b/support/texlab/crates/definition/src/string_ref.rs @@ -6,7 +6,8 @@ use crate::DefinitionContext; use super::DefinitionResult; pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { - let data = context.params.document.data.as_bib()?; + let feature = &context.params.feature; + let data = feature.document.data.as_bib()?; let root = data.root_node(); let name = root .token_at_offset(context.params.offset) @@ -25,7 +26,7 @@ pub(super) fn goto_definition(context: &mut DefinitionContext) -> Option<()> { { context.results.insert(DefinitionResult { origin_selection_range, - target: context.params.document, + target: feature.document, target_range: string.full_range, target_selection_range: string.name.range, }); diff --git a/support/texlab/crates/definition/src/tests.rs b/support/texlab/crates/definition/src/tests.rs index 8c08be72d1..8d81927d32 100644 --- a/support/texlab/crates/definition/src/tests.rs +++ b/support/texlab/crates/definition/src/tests.rs @@ -1,35 +1,22 @@ +use rowan::TextRange; use rustc_hash::FxHashSet; use crate::{DefinitionParams, DefinitionResult}; fn check(input: &str) { let fixture = test_utils::fixture::Fixture::parse(input); - let workspace = &fixture.workspace; - - let mut origin_selection_range = None; - let mut origin_document = None; - let mut origin_cursor = None; - for document in &fixture.documents { - if let Some(cursor) = document.cursor { - origin_document = Some(document); - origin_cursor = Some(cursor); - origin_selection_range = document - .ranges - .iter() - .find(|range| range.contains_inclusive(cursor)) - .copied(); - - break; - } - } - - let origin_document = origin_document.unwrap(); + let (feature, offset) = fixture.make_params().unwrap(); + let origin_document = feature.document; + let origin_selection_range = fixture + .locations() + .filter(|location| location.document == origin_document) + .find(|location| location.range.contains_inclusive(offset)) + .map_or_else(|| TextRange::default(), |location| location.range); let mut expected = FxHashSet::default(); for document in &fixture.documents { let mut ranges = document.ranges.iter(); while let Some(target_selection_range) = ranges.next().copied() { - let origin_selection_range = origin_selection_range.unwrap(); if (&origin_document.uri, origin_selection_range) != (&document.uri, target_selection_range) { @@ -43,11 +30,7 @@ fn check(input: &str) { } } - let actual = crate::goto_definition(DefinitionParams { - workspace, - document: workspace.lookup(&origin_document.uri).unwrap(), - offset: origin_cursor.unwrap(), - }); + let actual = crate::goto_definition(DefinitionParams { feature, offset }); assert_eq!(actual, expected); } diff --git a/support/texlab/crates/diagnostics/Cargo.toml b/support/texlab/crates/diagnostics/Cargo.toml index 3f87c8c879..490bee32f3 100644 --- a/support/texlab/crates/diagnostics/Cargo.toml +++ b/support/texlab/crates/diagnostics/Cargo.toml @@ -8,11 +8,12 @@ rust-version.workspace = true [dependencies] base-db = { path = "../base-db" } -itertools = "0.11.0" -rowan = "0.15.11" +itertools = "0.12.0" +line-index = { path = "../line-index" } +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } -url = "=2.3.1" +url = "2.5.0" [dev-dependencies] test-utils = { path = "../test-utils" } diff --git a/support/texlab/crates/diagnostics/src/build_log.rs b/support/texlab/crates/diagnostics/src/build_log.rs index 525bd982ff..4c53a35ff8 100644 --- a/support/texlab/crates/diagnostics/src/build_log.rs +++ b/support/texlab/crates/diagnostics/src/build_log.rs @@ -1,6 +1,7 @@ use std::borrow::Cow; use base_db::{Document, Workspace}; +use line_index::LineCol; use rowan::{TextLen, TextRange, TextSize}; use rustc_hash::FxHashMap; use syntax::BuildError; @@ -43,15 +44,15 @@ impl DiagnosticSource for BuildErrors { let Ok(full_path_uri) = Url::from_file_path(&full_path) else { continue; }; + let tex_document = workspace.lookup(&full_path_uri).unwrap_or(root_document); let range = find_range_of_hint(tex_document, error).unwrap_or_else(|| { let line = error.line.unwrap_or(0); - let offset = *tex_document + let offset = tex_document .line_index - .newlines - .get(line as usize) - .unwrap_or(&TextSize::from(0)); + .offset(LineCol { line, col: 0 }) + .unwrap_or(TextSize::from(0)); TextRange::empty(offset) }); @@ -91,16 +92,17 @@ impl DiagnosticSource for BuildErrors { } fn find_range_of_hint(document: &Document, error: &BuildError) -> Option<TextRange> { - let line = error.line? as usize; + let line = error.line?; let hint = error.hint.as_deref()?; let line_index = &document.line_index; - let line_start = line_index.newlines.get(line).copied()?; + let line_start = line_index.offset(LineCol { line, col: 0 })?; let line_end = line_index - .newlines - .get(line + 1) - .copied() - .unwrap_or((&document.text).text_len()); + .offset(LineCol { + line: line + 1, + col: 0, + }) + .unwrap_or_else(|| document.text.text_len()); let line_text = &document.text[line_start.into()..line_end.into()]; let hint_start = line_start + TextSize::try_from(line_text.find(hint)?).unwrap(); diff --git a/support/texlab/crates/diagnostics/src/citations.rs b/support/texlab/crates/diagnostics/src/citations.rs index 1ab7b6db30..0b750aaadb 100644 --- a/support/texlab/crates/diagnostics/src/citations.rs +++ b/support/texlab/crates/diagnostics/src/citations.rs @@ -47,7 +47,8 @@ fn detect_undefined_citations<'db>( .collect(); for citation in &data.semantics.citations { - if !entries.contains(citation.name.text.as_str()) { + let name = citation.name_text(); + if name != "*" && !entries.contains(name) { let diagnostic = Diagnostic { range: citation.name.range, data: DiagnosticData::Tex(TexError::UndefinedCitation), diff --git a/support/texlab/crates/diagnostics/src/tests.rs b/support/texlab/crates/diagnostics/src/tests.rs index b9eafc0284..539e3ba765 100644 --- a/support/texlab/crates/diagnostics/src/tests.rs +++ b/support/texlab/crates/diagnostics/src/tests.rs @@ -1,14 +1,12 @@ use std::borrow::Cow; -use test_utils::fixture::Fixture; - use crate::{ types::{BibError, Diagnostic, DiagnosticData, TexError}, DiagnosticBuilder, DiagnosticManager, DiagnosticSource, }; fn check(input: &str, expected_data: &[DiagnosticData]) { - let fixture = Fixture::parse(input); + let fixture = test_utils::fixture::Fixture::parse(input); let mut manager = DiagnosticManager::default(); let mut expected = DiagnosticBuilder::default(); diff --git a/support/texlab/crates/distro/src/language.rs b/support/texlab/crates/distro/src/language.rs index 207b700581..201ed0702b 100644 --- a/support/texlab/crates/distro/src/language.rs +++ b/support/texlab/crates/distro/src/language.rs @@ -7,6 +7,7 @@ pub enum Language { Aux, Log, Root, + Latexmkrc, Tectonic, } @@ -21,6 +22,10 @@ impl Language { return Some(Self::Tectonic); } + if name.eq_ignore_ascii_case(".latexmkrc") || name.eq_ignore_ascii_case("latexmkrc") { + return Some(Self::Latexmkrc); + } + let extname = path.extension()?.to_str()?; match extname.to_lowercase().as_str() { "tex" | "sty" | "cls" | "def" | "lco" | "rnw" => Some(Self::Tex), diff --git a/support/texlab/crates/folding/Cargo.toml b/support/texlab/crates/folding/Cargo.toml index 2cf82699ea..e7646b61a8 100644 --- a/support/texlab/crates/folding/Cargo.toml +++ b/support/texlab/crates/folding/Cargo.toml @@ -8,7 +8,7 @@ rust-version.workspace = true [dependencies] base-db = { path = "../base-db" } -rowan = "0.15.11" +rowan = "0.15.13" syntax = { path = "../syntax" } [dev-dependencies] diff --git a/support/texlab/crates/folding/src/tests.rs b/support/texlab/crates/folding/src/tests.rs index 405b56bda1..1e86b30088 100644 --- a/support/texlab/crates/folding/src/tests.rs +++ b/support/texlab/crates/folding/src/tests.rs @@ -2,8 +2,7 @@ use expect_test::{expect, Expect}; fn check(input: &str, expect: Expect) { let fixture = test_utils::fixture::Fixture::parse(input); - let workspace = &fixture.workspace; - let document = workspace.lookup(&fixture.documents[0].uri).unwrap(); + let document = fixture.make_params().unwrap().0.document; let data = crate::find_all(document); expect.assert_debug_eq(&data); } diff --git a/support/texlab/crates/highlights/Cargo.toml b/support/texlab/crates/highlights/Cargo.toml new file mode 100644 index 0000000000..e3247e50fd --- /dev/null +++ b/support/texlab/crates/highlights/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "highlights" +version = "0.0.0" +license.workspace = true +authors.workspace = true +edition.workspace = true +rust-version.workspace = true + +[dependencies] +base-db = { path = "../base-db" } +rowan = "0.15.13" + +[dev-dependencies] +expect-test = "1.4.1" +test-utils = { path = "../test-utils" } + +[lib] +doctest = false diff --git a/support/texlab/crates/highlights/src/label.rs b/support/texlab/crates/highlights/src/label.rs new file mode 100644 index 0000000000..ee606c175b --- /dev/null +++ b/support/texlab/crates/highlights/src/label.rs @@ -0,0 +1,26 @@ +use base_db::semantics::tex::LabelKind; + +use crate::{Highlight, HighlightKind, HighlightParams}; + +pub fn find_highlights(params: &HighlightParams, results: &mut Vec<Highlight>) -> Option<()> { + let data = params.feature.document.data.as_tex()?; + let labels = &data.semantics.labels; + let cursor = labels + .iter() + .find(|label| label.name.range.contains(params.offset))?; + + for label in labels + .iter() + .filter(|label| label.name.text == cursor.name.text) + { + let range = label.name.range; + let kind = match label.kind { + LabelKind::Definition => HighlightKind::Write, + LabelKind::Reference | LabelKind::ReferenceRange => HighlightKind::Read, + }; + + results.push(Highlight { range, kind }); + } + + Some(()) +} diff --git a/support/texlab/crates/highlights/src/lib.rs b/support/texlab/crates/highlights/src/lib.rs new file mode 100644 index 0000000000..1845da3907 --- /dev/null +++ b/support/texlab/crates/highlights/src/lib.rs @@ -0,0 +1,31 @@ +use base_db::FeatureParams; +use rowan::{TextRange, TextSize}; + +mod label; + +#[derive(Debug, PartialEq, Eq, Clone)] +pub struct Highlight { + pub range: TextRange, + pub kind: HighlightKind, +} + +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)] +pub enum HighlightKind { + Write, + Read, +} + +#[derive(Debug)] +pub struct HighlightParams<'a> { + pub feature: FeatureParams<'a>, + pub offset: TextSize, +} + +pub fn find_all(params: HighlightParams) -> Vec<Highlight> { + let mut results = Vec::new(); + label::find_highlights(¶ms, &mut results); + results +} + +#[cfg(test)] +mod tests; diff --git a/support/texlab/crates/highlights/src/tests.rs b/support/texlab/crates/highlights/src/tests.rs new file mode 100644 index 0000000000..74c3cc0c18 --- /dev/null +++ b/support/texlab/crates/highlights/src/tests.rs @@ -0,0 +1,41 @@ +use crate::{HighlightKind, HighlightParams}; + +fn check(input: &str, expected_kinds: &[HighlightKind]) { + let fixture = test_utils::fixture::Fixture::parse(input); + + let (feature, offset) = fixture.make_params().unwrap(); + + let expected_ranges = fixture + .locations() + .map(|location| location.range) + .collect::<Vec<_>>(); + + let results = crate::find_all(HighlightParams { feature, offset }); + + let actual_ranges = results + .iter() + .map(|result| result.range) + .collect::<Vec<_>>(); + assert_eq!(actual_ranges, expected_ranges); + + assert_eq!( + results.iter().map(|result| result.kind).collect::<Vec<_>>(), + expected_kinds + ); +} + +#[test] +fn test_label() { + check( + r#" +%! main.tex +\label{foo} + | + ^^^ +\ref{foo} + ^^^ +\label{bar} +"#, + &[HighlightKind::Write, HighlightKind::Read], + ) +} diff --git a/support/texlab/crates/hover/Cargo.toml b/support/texlab/crates/hover/Cargo.toml index 0db19b8189..af8f4f566b 100644 --- a/support/texlab/crates/hover/Cargo.toml +++ b/support/texlab/crates/hover/Cargo.toml @@ -11,7 +11,7 @@ base-db = { path = "../base-db" } bibtex-utils = { path = "../bibtex-utils" } citeproc = { path = "../citeproc" } completion-data = { path = "../completion-data" } -rowan = "0.15.11" +rowan = "0.15.13" syntax = { path = "../syntax" } [dev-dependencies] diff --git a/support/texlab/crates/hover/src/citation.rs b/support/texlab/crates/hover/src/citation.rs index 49e5359bba..372668997e 100644 --- a/support/texlab/crates/hover/src/citation.rs +++ b/support/texlab/crates/hover/src/citation.rs @@ -4,14 +4,14 @@ use syntax::bibtex; use crate::{Hover, HoverData, HoverParams}; -pub(super) fn find_hover<'db>(params: &HoverParams<'db>) -> Option<Hover<'db>> { - let offset = params.offset; +pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> { + let HoverParams { feature, offset } = params; - let (name, range) = match ¶ms.document.data { + let (name, range) = match &feature.document.data { DocumentData::Tex(data) => { let result = queries::object_at_cursor( &data.semantics.citations, - offset, + *offset, queries::SearchMode::Full, )?; (&result.object.name.text, result.range) @@ -19,7 +19,7 @@ pub(super) fn find_hover<'db>(params: &HoverParams<'db>) -> Option<Hover<'db>> { DocumentData::Bib(data) => { let result = queries::object_at_cursor( &data.semantics.entries, - offset, + *offset, queries::SearchMode::Name, )?; (&result.object.name.text, result.range) @@ -27,7 +27,7 @@ pub(super) fn find_hover<'db>(params: &HoverParams<'db>) -> Option<Hover<'db>> { _ => return None, }; - let text = params.project.documents.iter().find_map(|document| { + let text = feature.project.documents.iter().find_map(|document| { let data = document.data.as_bib()?; let root = bibtex::Root::cast(data.root_node())?; let entry = root.find_entry(name)?; diff --git a/support/texlab/crates/hover/src/entry_type.rs b/support/texlab/crates/hover/src/entry_type.rs index f4941b4ee0..f3417e960d 100644 --- a/support/texlab/crates/hover/src/entry_type.rs +++ b/support/texlab/crates/hover/src/entry_type.rs @@ -3,8 +3,8 @@ use syntax::bibtex; use crate::{Hover, HoverData, HoverParams}; -pub(super) fn find_hover<'db>(params: &'db HoverParams) -> Option<Hover<'db>> { - let data = params.document.data.as_bib()?; +pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> { + let data = params.feature.document.data.as_bib()?; let root = data.root_node(); let name = root .token_at_offset(params.offset) diff --git a/support/texlab/crates/hover/src/field_type.rs b/support/texlab/crates/hover/src/field_type.rs index 18ebe6b78f..ec9078410a 100644 --- a/support/texlab/crates/hover/src/field_type.rs +++ b/support/texlab/crates/hover/src/field_type.rs @@ -4,8 +4,8 @@ use syntax::bibtex; use crate::{Hover, HoverData, HoverParams}; -pub(super) fn find_hover<'db>(params: &HoverParams<'db>) -> Option<Hover<'db>> { - let data = params.document.data.as_bib()?; +pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> { + let data = params.feature.document.data.as_bib()?; let root = data.root_node(); let name = root .token_at_offset(params.offset) diff --git a/support/texlab/crates/hover/src/label.rs b/support/texlab/crates/hover/src/label.rs index fc9694fc6c..fc944aeaed 100644 --- a/support/texlab/crates/hover/src/label.rs +++ b/support/texlab/crates/hover/src/label.rs @@ -8,19 +8,20 @@ use base_db::{ use crate::{Hover, HoverData, HoverParams}; -pub(super) fn find_hover<'db>(params: &'db HoverParams<'db>) -> Option<Hover<'db>> { - let data = params.document.data.as_tex()?; +pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> { + let feature = ¶ms.feature; + let data = feature.document.data.as_tex()?; let cursor = queries::object_at_cursor( &data.semantics.labels, params.offset, queries::SearchMode::Full, )?; - let (_, definition) = tex::Label::find_all(¶ms.project) + let (_, definition) = tex::Label::find_all(&feature.project) .filter(|(_, label)| label.kind == tex::LabelKind::Definition) .find(|(_, label)| label.name_text() == cursor.object.name_text())?; - let label = render_label(params.workspace, ¶ms.project, definition)?; + let label = render_label(feature.workspace, &feature.project, definition)?; Some(Hover { range: cursor.range, data: HoverData::Label(label), diff --git a/support/texlab/crates/hover/src/lib.rs b/support/texlab/crates/hover/src/lib.rs index 88be3b919a..bd16be3282 100644 --- a/support/texlab/crates/hover/src/lib.rs +++ b/support/texlab/crates/hover/src/lib.rs @@ -8,30 +8,16 @@ mod string_ref; use base_db::{ data::{BibtexEntryType, BibtexFieldType}, util::RenderedLabel, - Document, Project, Workspace, + FeatureParams, }; use rowan::{TextRange, TextSize}; #[derive(Debug)] -pub struct HoverParams<'db> { - pub document: &'db Document, - pub project: Project<'db>, - pub workspace: &'db Workspace, +pub struct HoverParams<'a> { + pub feature: FeatureParams<'a>, pub offset: TextSize, } -impl<'db> HoverParams<'db> { - pub fn new(workspace: &'db Workspace, document: &'db Document, offset: TextSize) -> Self { - let project = workspace.project(document); - Self { - document, - project, - workspace, - offset, - } - } -} - #[derive(Debug, Clone)] pub struct Hover<'db> { pub range: TextRange, @@ -48,13 +34,13 @@ pub enum HoverData<'db> { StringRef(String), } -pub fn find<'db>(params: &'db HoverParams<'db>) -> Option<Hover<'db>> { - citation::find_hover(params) - .or_else(|| package::find_hover(params)) - .or_else(|| entry_type::find_hover(params)) - .or_else(|| field_type::find_hover(params)) - .or_else(|| label::find_hover(params)) - .or_else(|| string_ref::find_hover(params)) +pub fn find(params: HoverParams) -> Option<Hover> { + citation::find_hover(¶ms) + .or_else(|| package::find_hover(¶ms)) + .or_else(|| entry_type::find_hover(¶ms)) + .or_else(|| field_type::find_hover(¶ms)) + .or_else(|| label::find_hover(¶ms)) + .or_else(|| string_ref::find_hover(¶ms)) } #[cfg(test)] diff --git a/support/texlab/crates/hover/src/package.rs b/support/texlab/crates/hover/src/package.rs index 1d6b328860..1dfc86573d 100644 --- a/support/texlab/crates/hover/src/package.rs +++ b/support/texlab/crates/hover/src/package.rs @@ -2,8 +2,8 @@ use base_db::semantics::tex::LinkKind; use crate::{Hover, HoverData, HoverParams}; -pub(super) fn find_hover<'db>(params: &HoverParams<'db>) -> Option<Hover<'db>> { - let data = params.document.data.as_tex()?; +pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> { + let data = params.feature.document.data.as_tex()?; data.semantics .links .iter() diff --git a/support/texlab/crates/hover/src/string_ref.rs b/support/texlab/crates/hover/src/string_ref.rs index 7ea84113e0..6726041af2 100644 --- a/support/texlab/crates/hover/src/string_ref.rs +++ b/support/texlab/crates/hover/src/string_ref.rs @@ -4,8 +4,8 @@ use syntax::bibtex::{self, HasName, HasValue}; use crate::{Hover, HoverData, HoverParams}; -pub(super) fn find_hover<'db>(params: &HoverParams<'db>) -> Option<Hover<'db>> { - let data = params.document.data.as_bib()?; +pub(super) fn find_hover<'a>(params: &HoverParams<'a>) -> Option<Hover<'a>> { + let data = params.feature.document.data.as_bib()?; let root = bibtex::Root::cast(data.root_node())?; let name = root .syntax() diff --git a/support/texlab/crates/hover/src/tests.rs b/support/texlab/crates/hover/src/tests.rs index 0db913d0b5..bbe33fa2db 100644 --- a/support/texlab/crates/hover/src/tests.rs +++ b/support/texlab/crates/hover/src/tests.rs @@ -4,12 +4,9 @@ use crate::HoverParams; fn check(input: &str, expect: Expect) { let fixture = test_utils::fixture::Fixture::parse(input); - let workspace = &fixture.workspace; - let document = workspace.lookup(&fixture.documents[0].uri).unwrap(); - let offset = fixture.documents[0].cursor.unwrap(); - let params = HoverParams::new(workspace, document, offset); - - let data = crate::find(¶ms).map(|hover| { + let (feature, offset) = fixture.make_params().unwrap(); + let params = HoverParams { feature, offset }; + let data = crate::find(params).map(|hover| { assert_eq!(fixture.documents[0].ranges[0], hover.range); hover.data }); diff --git a/support/texlab/crates/inlay-hints/Cargo.toml b/support/texlab/crates/inlay-hints/Cargo.toml index 82b1c729b9..06a525a2f3 100644 --- a/support/texlab/crates/inlay-hints/Cargo.toml +++ b/support/texlab/crates/inlay-hints/Cargo.toml @@ -8,12 +8,12 @@ rust-version.workspace = true [dependencies] base-db = { path = "../base-db" } -rowan = "0.15.11" +rowan = "0.15.13" rustc-hash = "1.1.0" -syntax = { path = "../syntax" } [dev-dependencies] test-utils = { path = "../test-utils" } +expect-test = "1.4.1" [lib] doctest = false diff --git a/support/texlab/crates/inlay-hints/src/lib.rs b/support/texlab/crates/inlay-hints/src/lib.rs index 48373d305b..e3c80751f0 100644 --- a/support/texlab/crates/inlay-hints/src/lib.rs +++ b/support/texlab/crates/inlay-hints/src/lib.rs @@ -34,3 +34,6 @@ struct InlayHintBuilder<'a> { params: InlayHintParams<'a>, hints: Vec<InlayHint<'a>>, } + +#[cfg(test)] +mod tests; diff --git a/support/texlab/crates/inlay-hints/src/tests.rs b/support/texlab/crates/inlay-hints/src/tests.rs new file mode 100644 index 0000000000..5b8a43d614 --- /dev/null +++ b/support/texlab/crates/inlay-hints/src/tests.rs @@ -0,0 +1,108 @@ +use expect_test::{expect, Expect}; +use rowan::{TextLen, TextRange}; + +fn check(input: &str, expect: Expect) { + let fixture = test_utils::fixture::Fixture::parse(input); + + let (feature, _) = fixture.make_params().unwrap(); + let range = TextRange::new(0.into(), feature.document.text.text_len()); + let params = crate::InlayHintParams { range, feature }; + let actual = crate::find_all(params).unwrap_or_default(); + + let expected_offsets = fixture.locations().map(|location| location.range.start()); + for (hint, offset) in actual.iter().zip(expected_offsets) { + assert_eq!(hint.offset, offset); + } + + let data = actual.into_iter().map(|hint| hint.data).collect::<Vec<_>>(); + expect.assert_debug_eq(&data); +} + +#[test] +fn test_label_definition() { + check( + r#" +%! main.tex +\documentclass{article} +\usepackage{caption} +\begin{document} +\section{Foo}\label{sec:foo} + ! +\section{Bar}\label{sec:bar} + ! +\subsection{Baz}\label{sec:baz} + ! +\begin{figure} + Test + \label{fig:qux} + ! + \caption{Qux} +\end{figure} +\end{document} + +%! main.aux +\relax +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{fig:qux}{{\caption@xref {fig:qux}{ on input line 15}}{1}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Qux\relax }}{1}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1}Foo}{1}{}\protected@file@percent } +\newlabel{sec:foo}{{1}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {2}Bar}{1}{}\protected@file@percent } +\newlabel{sec:bar}{{2}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Baz}{1}{}\protected@file@percent } +\newlabel{sec:baz}{{2.1}{1}} +\gdef \@abspage@last{1}"#, + expect![[r#" + [ + LabelDefinition( + RenderedLabel { + range: 62..90, + number: Some( + "1", + ), + object: Section { + prefix: "Section", + text: "Foo", + }, + }, + ), + LabelDefinition( + RenderedLabel { + range: 91..226, + number: Some( + "2", + ), + object: Section { + prefix: "Section", + text: "Bar", + }, + }, + ), + LabelDefinition( + RenderedLabel { + range: 120..226, + number: Some( + "2.1", + ), + object: Section { + prefix: "Subsection", + text: "Baz", + }, + }, + ), + LabelDefinition( + RenderedLabel { + range: 152..226, + number: Some( + "fig:qux", + ), + object: Float { + kind: Figure, + caption: "Qux", + }, + }, + ), + ] + "#]], + ); +} diff --git a/support/texlab/crates/line-index/Cargo.toml b/support/texlab/crates/line-index/Cargo.toml new file mode 100644 index 0000000000..73d2766d60 --- /dev/null +++ b/support/texlab/crates/line-index/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "line-index" +version = "0.0.0" +license.workspace = true +authors.workspace = true +edition.workspace = true +rust-version.workspace = true + +[dependencies] +rustc-hash = "1.1.0" +text-size = "1.1.1" + +[lib] +doctest = false diff --git a/support/texlab/crates/base-db/src/util/line_index.rs b/support/texlab/crates/line-index/src/lib.rs index 3c5907782a..f604825d07 100644 --- a/support/texlab/crates/base-db/src/util/line_index.rs +++ b/support/texlab/crates/line-index/src/lib.rs @@ -4,8 +4,8 @@ //! representation. use std::iter; -use rowan::{TextRange, TextSize}; use rustc_hash::FxHashMap; +use text_size::{TextRange, TextSize}; #[derive(Clone, Debug, PartialEq, Eq)] pub struct LineIndex { @@ -113,24 +113,24 @@ impl LineIndex { } } - pub fn offset(&self, line_col: LineCol) -> TextSize { - self.newlines[line_col.line as usize] + TextSize::from(line_col.col) + pub fn offset(&self, line_col: LineCol) -> Option<TextSize> { + Some(self.newlines.get(line_col.line as usize)? + TextSize::from(line_col.col)) } - pub fn to_utf16(&self, line_col: LineCol) -> LineColUtf16 { + pub fn to_utf16(&self, line_col: LineCol) -> Option<LineColUtf16> { let col = self.utf8_to_utf16_col(line_col.line, line_col.col.into()); - LineColUtf16 { + Some(LineColUtf16 { line: line_col.line, col: col as u32, - } + }) } - pub fn to_utf8(&self, line_col: LineColUtf16) -> LineCol { + pub fn to_utf8(&self, line_col: LineColUtf16) -> Option<LineCol> { let col = self.utf16_to_utf8_col(line_col.line, line_col.col); - LineCol { + Some(LineCol { line: line_col.line, col: col.into(), - } + }) } pub fn lines(&self, range: TextRange) -> impl Iterator<Item = TextRange> + '_ { diff --git a/support/texlab/crates/links/Cargo.toml b/support/texlab/crates/links/Cargo.toml new file mode 100644 index 0000000000..d3df0c95f8 --- /dev/null +++ b/support/texlab/crates/links/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "links" +version = "0.0.0" +license.workspace = true +authors.workspace = true +edition.workspace = true +rust-version.workspace = true + +[dependencies] +base-db = { path = "../base-db" } + +[dev-dependencies] +test-utils = { path = "../test-utils" } +expect-test = "1.4.1" + +[lib] +doctest = false diff --git a/support/texlab/crates/links/src/include.rs b/support/texlab/crates/links/src/include.rs new file mode 100644 index 0000000000..374e0089df --- /dev/null +++ b/support/texlab/crates/links/src/include.rs @@ -0,0 +1,26 @@ +use base_db::{DocumentLocation, FeatureParams}; + +pub(super) fn find_links<'a>( + params: FeatureParams<'a>, + results: &mut Vec<DocumentLocation<'a>>, +) -> Option<()> { + let document = params.document; + let parent = *params + .workspace + .parents(document) + .iter() + .next() + .unwrap_or(&document); + + let graph = base_db::graph::Graph::new(params.workspace, parent); + + for edge in &graph.edges { + if edge.source == document { + if let Some(weight) = &edge.weight { + results.push(DocumentLocation::new(edge.target, weight.link.path.range)); + } + } + } + + Some(()) +} diff --git a/support/texlab/crates/links/src/lib.rs b/support/texlab/crates/links/src/lib.rs new file mode 100644 index 0000000000..67e48cf930 --- /dev/null +++ b/support/texlab/crates/links/src/lib.rs @@ -0,0 +1,12 @@ +use base_db::{DocumentLocation, FeatureParams}; + +mod include; + +pub fn find_links(params: FeatureParams) -> Vec<DocumentLocation> { + let mut results = Vec::new(); + include::find_links(params, &mut results); + results +} + +#[cfg(test)] +mod tests; diff --git a/support/texlab/crates/links/src/tests.rs b/support/texlab/crates/links/src/tests.rs new file mode 100644 index 0000000000..d083b33be6 --- /dev/null +++ b/support/texlab/crates/links/src/tests.rs @@ -0,0 +1,57 @@ +use expect_test::{expect, Expect}; + +fn check(input: &str, expect: Expect) { + let fixture = test_utils::fixture::Fixture::parse(input); + let (params, _) = fixture.make_params().unwrap(); + let links = crate::find_links(params); + + let actual_ranges = links.iter().map(|link| link.range).collect::<Vec<_>>(); + + let expected_ranges = fixture + .locations() + .map(|location| location.range) + .collect::<Vec<_>>(); + + assert_eq!(actual_ranges, expected_ranges); + + let actual_targets = links + .iter() + .map(|link| link.document.uri.as_str()) + .collect::<Vec<_>>(); + + expect.assert_debug_eq(&actual_targets); +} + +#[test] +fn test_document_include() { + check( + r#" +%! foo.tex +\input{bar.tex} + ^^^^^^^ + +%! bar.tex"#, + expect![[r#" + [ + "file:///texlab/bar.tex", + ] + "#]], + ); +} + +#[test] +fn test_document_import() { + check( + r#" +%! foo.tex +\import{.}{bar/baz} + ^^^^^^^ + +%! bar/baz.tex"#, + expect![[r#" + [ + "file:///texlab/bar/baz.tex", + ] + "#]], + ); +} diff --git a/support/texlab/crates/parser/Cargo.toml b/support/texlab/crates/parser/Cargo.toml index 989569d0b6..47ab9bc721 100644 --- a/support/texlab/crates/parser/Cargo.toml +++ b/support/texlab/crates/parser/Cargo.toml @@ -9,13 +9,14 @@ rust-version.workspace = true [dependencies] logos = "0.13.0" once_cell = "1.18.0" -regex = "1.9.1" -rowan = "0.15.11" +regex = "1.10.2" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } +tempfile = "3.8.1" [dev-dependencies] -insta = { version = "1.32.0", features = ["glob", "redactions", "json"] } +expect-test = "1.4.1" [lib] doctest = false diff --git a/support/texlab/crates/parser/src/bibtex.rs b/support/texlab/crates/parser/src/bibtex.rs index d74254b2c5..fda0d4a0ad 100644 --- a/support/texlab/crates/parser/src/bibtex.rs +++ b/support/texlab/crates/parser/src/bibtex.rs @@ -436,17 +436,4 @@ impl From<ContentToken> for SyntaxKind { } #[cfg(test)] -mod tests { - use syntax::bibtex; - - use super::parse_bibtex; - - #[test] - fn test_parse() { - insta::glob!("test_data/bibtex/{,**/}*.txt", |path| { - let text = std::fs::read_to_string(path).unwrap().replace("\r\n", "\n"); - let root = bibtex::SyntaxNode::new_root(parse_bibtex(&text)); - insta::assert_debug_snapshot!(root); - }); - } -} +mod tests; diff --git a/support/texlab/crates/parser/src/bibtex/tests.rs b/support/texlab/crates/parser/src/bibtex/tests.rs new file mode 100644 index 0000000000..e2bb1314d8 --- /dev/null +++ b/support/texlab/crates/parser/src/bibtex/tests.rs @@ -0,0 +1,3994 @@ +use expect_test::{expect, Expect}; + +use crate::parse_bibtex; + +fn check(input: &str, expect: Expect) { + let root = syntax::bibtex::SyntaxNode::new_root(parse_bibtex(input)); + expect.assert_debug_eq(&root); +} + +#[test] +fn test_smoke() { + check( + r#""#, + expect![[r#" + ROOT@0..0 + + "#]], + ); +} + +#[test] +fn test_preamble() { + check( + r#"@article{test, author = {\"{\i}}}"#, + expect![[r#" + ROOT@0..33 + ENTRY@0..33 + TYPE@0..8 "@article" + L_DELIM@8..9 "{" + NAME@9..13 "test" + COMMA@13..14 "," + WHITESPACE@14..15 " " + FIELD@15..32 + NAME@15..21 "author" + WHITESPACE@21..22 " " + EQ@22..23 "=" + WHITESPACE@23..24 " " + CURLY_GROUP@24..32 + L_CURLY@24..25 "{" + ACCENT@25..31 + ACCENT_NAME@25..27 "\\\"" + L_CURLY@27..28 "{" + COMMAND_NAME@28..30 "\\i" + R_CURLY@30..31 "}" + R_CURLY@31..32 "}" + R_DELIM@32..33 "}" + + "#]], + ); +} + +#[test] +fn test_comment() { + check( + r#"Some junk here + +@comment{foo, + author = {Foo Bar}, + title = {Some Title}, +} +"#, + expect![[r#" + ROOT@0..82 + JUNK@0..16 "Some junk here\n\n" + TYPE@16..24 "@comment" + JUNK@24..82 "{foo,\n author = {F ..." + + "#]], + ); +} + +#[test] +fn test_issue_809() { + check( + r#"@article{issue_809, + title = {foo (" bar) baz}, +}"#, + expect![[r#" + ROOT@0..50 + ENTRY@0..50 + TYPE@0..8 "@article" + L_DELIM@8..9 "{" + NAME@9..18 "issue_809" + COMMA@18..19 "," + WHITESPACE@19..22 "\n " + FIELD@22..48 + NAME@22..27 "title" + WHITESPACE@27..28 " " + EQ@28..29 "=" + WHITESPACE@29..30 " " + CURLY_GROUP@30..47 + L_CURLY@30..31 "{" + WORD@31..34 "foo" + WHITESPACE@34..35 " " + WORD@35..36 "(" + QUOTE@36..37 "\"" + WHITESPACE@37..38 " " + WORD@38..42 "bar)" + WHITESPACE@42..43 " " + WORD@43..46 "baz" + R_CURLY@46..47 "}" + COMMA@47..48 "," + WHITESPACE@48..49 "\n" + R_DELIM@49..50 "}" + + "#]], + ); +} + +#[test] +fn test_issue_945() { + check( + r#"@article{test, author = {\"{\i}}}"#, + expect![[r#" + ROOT@0..33 + ENTRY@0..33 + TYPE@0..8 "@article" + L_DELIM@8..9 "{" + NAME@9..13 "test" + COMMA@13..14 "," + WHITESPACE@14..15 " " + FIELD@15..32 + NAME@15..21 "author" + WHITESPACE@21..22 " " + EQ@22..23 "=" + WHITESPACE@23..24 " " + CURLY_GROUP@24..32 + L_CURLY@24..25 "{" + ACCENT@25..31 + ACCENT_NAME@25..27 "\\\"" + L_CURLY@27..28 "{" + COMMAND_NAME@28..30 "\\i" + R_CURLY@30..31 "}" + R_CURLY@31..32 "}" + R_DELIM@32..33 "}" + + "#]], + ); +} + +#[test] +fn test_aho_2006() { + check( + r#"@book{10.5555/1177220, + author = {Aho, Alfred V. and Lam, Monica S. and Sethi, Ravi and Ullman, Jeffrey D.}, + title = {Compilers: Principles, Techniques, and Tools (2nd Edition)}, + year = {2006}, + isbn = {0321486811}, + publisher = {Addison-Wesley Longman Publishing Co., Inc.}, + address = {USA} +}"#, + expect![[r#" + ROOT@0..314 + ENTRY@0..314 + TYPE@0..5 "@book" + L_DELIM@5..6 "{" + NAME@6..21 "10.5555/1177220" + COMMA@21..22 "," + WHITESPACE@22..27 "\n " + FIELD@27..111 + NAME@27..33 "author" + WHITESPACE@33..34 " " + EQ@34..35 "=" + WHITESPACE@35..36 " " + CURLY_GROUP@36..110 + L_CURLY@36..37 "{" + WORD@37..40 "Aho" + COMMA@40..41 "," + WHITESPACE@41..42 " " + WORD@42..48 "Alfred" + WHITESPACE@48..49 " " + WORD@49..51 "V." + WHITESPACE@51..52 " " + WORD@52..55 "and" + WHITESPACE@55..56 " " + WORD@56..59 "Lam" + COMMA@59..60 "," + WHITESPACE@60..61 " " + WORD@61..67 "Monica" + WHITESPACE@67..68 " " + WORD@68..70 "S." + WHITESPACE@70..71 " " + WORD@71..74 "and" + WHITESPACE@74..75 " " + WORD@75..80 "Sethi" + COMMA@80..81 "," + WHITESPACE@81..82 " " + WORD@82..86 "Ravi" + WHITESPACE@86..87 " " + WORD@87..90 "and" + WHITESPACE@90..91 " " + WORD@91..97 "Ullman" + COMMA@97..98 "," + WHITESPACE@98..99 " " + WORD@99..106 "Jeffrey" + WHITESPACE@106..107 " " + WORD@107..109 "D." + R_CURLY@109..110 "}" + COMMA@110..111 "," + WHITESPACE@111..116 "\n " + FIELD@116..185 + NAME@116..121 "title" + WHITESPACE@121..122 " " + EQ@122..123 "=" + WHITESPACE@123..124 " " + CURLY_GROUP@124..184 + L_CURLY@124..125 "{" + WORD@125..135 "Compilers:" + WHITESPACE@135..136 " " + WORD@136..146 "Principles" + COMMA@146..147 "," + WHITESPACE@147..148 " " + WORD@148..158 "Techniques" + COMMA@158..159 "," + WHITESPACE@159..160 " " + WORD@160..163 "and" + WHITESPACE@163..164 " " + WORD@164..169 "Tools" + WHITESPACE@169..170 " " + WORD@170..174 "(2nd" + WHITESPACE@174..175 " " + WORD@175..183 "Edition)" + R_CURLY@183..184 "}" + COMMA@184..185 "," + WHITESPACE@185..190 "\n " + FIELD@190..204 + NAME@190..194 "year" + WHITESPACE@194..195 " " + EQ@195..196 "=" + WHITESPACE@196..197 " " + CURLY_GROUP@197..203 + L_CURLY@197..198 "{" + INTEGER@198..202 "2006" + R_CURLY@202..203 "}" + COMMA@203..204 "," + WHITESPACE@204..209 "\n " + FIELD@209..229 + NAME@209..213 "isbn" + WHITESPACE@213..214 " " + EQ@214..215 "=" + WHITESPACE@215..216 " " + CURLY_GROUP@216..228 + L_CURLY@216..217 "{" + INTEGER@217..227 "0321486811" + R_CURLY@227..228 "}" + COMMA@228..229 "," + WHITESPACE@229..234 "\n " + FIELD@234..292 + NAME@234..243 "publisher" + WHITESPACE@243..244 " " + EQ@244..245 "=" + WHITESPACE@245..246 " " + CURLY_GROUP@246..291 + L_CURLY@246..247 "{" + WORD@247..261 "Addison-Wesley" + WHITESPACE@261..262 " " + WORD@262..269 "Longman" + WHITESPACE@269..270 " " + WORD@270..280 "Publishing" + WHITESPACE@280..281 " " + WORD@281..284 "Co." + COMMA@284..285 "," + WHITESPACE@285..286 " " + WORD@286..290 "Inc." + R_CURLY@290..291 "}" + COMMA@291..292 "," + WHITESPACE@292..297 "\n " + FIELD@297..313 + NAME@297..304 "address" + WHITESPACE@304..305 " " + EQ@305..306 "=" + WHITESPACE@306..307 " " + CURLY_GROUP@307..312 + L_CURLY@307..308 "{" + WORD@308..311 "USA" + R_CURLY@311..312 "}" + WHITESPACE@312..313 "\n" + R_DELIM@313..314 "}" + + "#]], + ); +} + +#[test] +fn test_aksin_2006() { + check( + r#"@string{jomch = {J.~Organomet. Chem.}} + +@article{aksin, + author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent + and {\c{C}}etinkaya, Bekir and Ni, Chaoying and + B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan}, + title = {Effect of immobilization on catalytic characteristics of + saturated {Pd-N}-heterocyclic carbenes in {Mizoroki-Heck} + reactions}, + journaltitle = jomch, + date = 2006, + volume = 691, + number = 13, + pages = {3027-3036}, + indextitle = {Effect of immobilization on catalytic characteristics}, +}"#, + expect![[r#" + ROOT@0..679 + STRING@0..40 + TYPE@0..7 "@string" + L_DELIM@7..8 "{" + NAME@8..13 "jomch" + WHITESPACE@13..16 " " + EQ@16..17 "=" + WHITESPACE@17..18 " " + CURLY_GROUP@18..39 + L_CURLY@18..19 "{" + WORD@19..21 "J." + NBSP@21..22 "~" + WORD@22..32 "Organomet." + WHITESPACE@32..33 " " + WORD@33..38 "Chem." + R_CURLY@38..39 "}" + R_DELIM@39..40 "}" + JUNK@40..42 "\n\n" + ENTRY@42..679 + TYPE@42..50 "@article" + L_DELIM@50..51 "{" + NAME@51..56 "aksin" + COMMA@56..57 "," + WHITESPACE@57..62 "\n " + FIELD@62..284 + NAME@62..68 "author" + WHITESPACE@68..75 " " + EQ@75..76 "=" + WHITESPACE@76..77 " " + CURLY_GROUP@77..283 + L_CURLY@77..78 "{" + WORD@78..81 "Aks" + CURLY_GROUP@81..85 + L_CURLY@81..82 "{" + COMMAND@82..84 + COMMAND_NAME@82..84 "\\i" + R_CURLY@84..85 "}" + WORD@85..86 "n" + COMMA@86..87 "," + WHITESPACE@87..88 " " + CURLY_GROUP@88..93 + L_CURLY@88..89 "{" + ACCENT@89..92 + ACCENT_NAME@89..91 "\\\"" + WORD@91..92 "O" + R_CURLY@92..93 "}" + WORD@93..96 "zge" + WHITESPACE@96..97 " " + WORD@97..100 "and" + WHITESPACE@100..101 " " + WORD@101..102 "T" + CURLY_GROUP@102..107 + L_CURLY@102..103 "{" + ACCENT@103..106 + ACCENT_NAME@103..105 "\\\"" + WORD@105..106 "u" + R_CURLY@106..107 "}" + WORD@107..112 "rkmen" + COMMA@112..113 "," + WHITESPACE@113..114 " " + WORD@114..120 "Hayati" + WHITESPACE@120..121 " " + WORD@121..124 "and" + WHITESPACE@124..125 " " + WORD@125..130 "Artok" + COMMA@130..131 "," + WHITESPACE@131..132 " " + WORD@132..138 "Levent" + WHITESPACE@138..159 "\n " + WORD@159..162 "and" + WHITESPACE@162..163 " " + CURLY_GROUP@163..170 + L_CURLY@163..164 "{" + ACCENT@164..169 + ACCENT_NAME@164..166 "\\c" + L_CURLY@166..167 "{" + WORD@167..168 "C" + R_CURLY@168..169 "}" + R_CURLY@169..170 "}" + WORD@170..178 "etinkaya" + COMMA@178..179 "," + WHITESPACE@179..180 " " + WORD@180..185 "Bekir" + WHITESPACE@185..186 " " + WORD@186..189 "and" + WHITESPACE@189..190 " " + WORD@190..192 "Ni" + COMMA@192..193 "," + WHITESPACE@193..194 " " + WORD@194..202 "Chaoying" + WHITESPACE@202..203 " " + WORD@203..206 "and" + WHITESPACE@206..227 "\n " + WORD@227..228 "B" + CURLY_GROUP@228..233 + L_CURLY@228..229 "{" + ACCENT@229..232 + ACCENT_NAME@229..231 "\\\"" + WORD@231..232 "u" + R_CURLY@232..233 "}" + WORD@233..234 "y" + CURLY_GROUP@234..239 + L_CURLY@234..235 "{" + ACCENT@235..238 + ACCENT_NAME@235..237 "\\\"" + WORD@237..238 "u" + R_CURLY@238..239 "}" + WORD@239..241 "kg" + CURLY_GROUP@241..246 + L_CURLY@241..242 "{" + ACCENT@242..245 + ACCENT_NAME@242..244 "\\\"" + WORD@244..245 "u" + R_CURLY@245..246 "}" + WORD@246..248 "ng" + CURLY_GROUP@248..253 + L_CURLY@248..249 "{" + ACCENT@249..252 + ACCENT_NAME@249..251 "\\\"" + WORD@251..252 "o" + R_CURLY@252..253 "}" + WORD@253..254 "r" + COMMA@254..255 "," + WHITESPACE@255..256 " " + WORD@256..261 "Orhan" + WHITESPACE@261..262 " " + WORD@262..265 "and" + WHITESPACE@265..266 " " + CURLY_GROUP@266..271 + L_CURLY@266..267 "{" + ACCENT@267..270 + ACCENT_NAME@267..269 "\\\"" + WORD@269..270 "O" + R_CURLY@270..271 "}" + WORD@271..275 "zkal" + COMMA@275..276 "," + WHITESPACE@276..277 " " + WORD@277..282 "Erhan" + R_CURLY@282..283 "}" + COMMA@283..284 "," + WHITESPACE@284..289 "\n " + FIELD@289..471 + NAME@289..294 "title" + WHITESPACE@294..302 " " + EQ@302..303 "=" + WHITESPACE@303..304 " " + CURLY_GROUP@304..470 + L_CURLY@304..305 "{" + WORD@305..311 "Effect" + WHITESPACE@311..312 " " + WORD@312..314 "of" + WHITESPACE@314..315 " " + WORD@315..329 "immobilization" + WHITESPACE@329..330 " " + WORD@330..332 "on" + WHITESPACE@332..333 " " + WORD@333..342 "catalytic" + WHITESPACE@342..343 " " + WORD@343..358 "characteristics" + WHITESPACE@358..359 " " + WORD@359..361 "of" + WHITESPACE@361..382 "\n " + WORD@382..391 "saturated" + WHITESPACE@391..392 " " + CURLY_GROUP@392..398 + L_CURLY@392..393 "{" + WORD@393..397 "Pd-N" + R_CURLY@397..398 "}" + WORD@398..411 "-heterocyclic" + WHITESPACE@411..412 " " + WORD@412..420 "carbenes" + WHITESPACE@420..421 " " + WORD@421..423 "in" + WHITESPACE@423..424 " " + CURLY_GROUP@424..439 + L_CURLY@424..425 "{" + WORD@425..438 "Mizoroki-Heck" + R_CURLY@438..439 "}" + WHITESPACE@439..460 "\n " + WORD@460..469 "reactions" + R_CURLY@469..470 "}" + COMMA@470..471 "," + WHITESPACE@471..476 "\n " + FIELD@476..497 + NAME@476..488 "journaltitle" + WHITESPACE@488..489 " " + EQ@489..490 "=" + WHITESPACE@490..491 " " + LITERAL@491..496 + NAME@491..496 "jomch" + COMMA@496..497 "," + WHITESPACE@497..502 "\n " + FIELD@502..522 + NAME@502..506 "date" + WHITESPACE@506..515 " " + EQ@515..516 "=" + WHITESPACE@516..517 " " + LITERAL@517..521 + INTEGER@517..521 "2006" + COMMA@521..522 "," + WHITESPACE@522..527 "\n " + FIELD@527..546 + NAME@527..533 "volume" + WHITESPACE@533..540 " " + EQ@540..541 "=" + WHITESPACE@541..542 " " + LITERAL@542..545 + INTEGER@542..545 "691" + COMMA@545..546 "," + WHITESPACE@546..551 "\n " + FIELD@551..569 + NAME@551..557 "number" + WHITESPACE@557..564 " " + EQ@564..565 "=" + WHITESPACE@565..566 " " + LITERAL@566..568 + INTEGER@566..568 "13" + COMMA@568..569 "," + WHITESPACE@569..574 "\n " + FIELD@574..601 + NAME@574..579 "pages" + WHITESPACE@579..587 " " + EQ@587..588 "=" + WHITESPACE@588..589 " " + CURLY_GROUP@589..600 + L_CURLY@589..590 "{" + WORD@590..599 "3027-3036" + R_CURLY@599..600 "}" + COMMA@600..601 "," + WHITESPACE@601..606 "\n " + FIELD@606..677 + NAME@606..616 "indextitle" + WHITESPACE@616..619 " " + EQ@619..620 "=" + WHITESPACE@620..621 " " + CURLY_GROUP@621..676 + L_CURLY@621..622 "{" + WORD@622..628 "Effect" + WHITESPACE@628..629 " " + WORD@629..631 "of" + WHITESPACE@631..632 " " + WORD@632..646 "immobilization" + WHITESPACE@646..647 " " + WORD@647..649 "on" + WHITESPACE@649..650 " " + WORD@650..659 "catalytic" + WHITESPACE@659..660 " " + WORD@660..675 "characteristics" + R_CURLY@675..676 "}" + COMMA@676..677 "," + WHITESPACE@677..678 "\n" + R_DELIM@678..679 "}" + + "#]], + ); +} + +#[test] +fn test_almendro_1998() { + check( + r#"@patent{almendro, + author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez, + Alberto and Nozal, Fernando}, + title = {Elektromagnetisches Signalhorn}, + number = {EU-29702195U}, + date = 1998, + location = {countryfr and countryuk and countryde}, + langid = {german}, + annotation = {This is a \texttt{patent} entry with a \texttt{location} + field. The number is given in the \texttt{number} field. Note + the format of the \texttt{location} field in the database + file. Compare \texttt{laufenberg}, \texttt{sorace}, and + \texttt{kowalik}}, +}"#, + expect![[r#" + ROOT@0..706 + ENTRY@0..706 + TYPE@0..7 "@patent" + L_DELIM@7..8 "{" + NAME@8..16 "almendro" + COMMA@16..17 "," + WHITESPACE@17..22 "\n " + FIELD@22..150 + NAME@22..28 "author" + WHITESPACE@28..35 " " + EQ@35..36 "=" + WHITESPACE@36..37 " " + CURLY_GROUP@37..149 + L_CURLY@37..38 "{" + WORD@38..46 "Almendro" + COMMA@46..47 "," + WHITESPACE@47..48 " " + WORD@48..51 "Jos" + CURLY_GROUP@51..56 + L_CURLY@51..52 "{" + ACCENT@52..55 + ACCENT_NAME@52..54 "\\'" + WORD@54..55 "e" + R_CURLY@55..56 "}" + WHITESPACE@56..57 " " + WORD@57..59 "L." + WHITESPACE@59..60 " " + WORD@60..63 "and" + WHITESPACE@63..64 " " + WORD@64..68 "Mart" + CURLY_GROUP@68..73 + L_CURLY@68..69 "{" + ACCENT@69..72 + ACCENT_NAME@69..71 "\\'" + WORD@71..72 "i" + R_CURLY@72..73 "}" + WORD@73..74 "n" + COMMA@74..75 "," + WHITESPACE@75..76 " " + WORD@76..83 "Jacinto" + WHITESPACE@83..84 " " + WORD@84..87 "and" + WHITESPACE@87..88 " " + WORD@88..89 "S" + CURLY_GROUP@89..94 + L_CURLY@89..90 "{" + ACCENT@90..93 + ACCENT_NAME@90..92 "\\'" + WORD@92..93 "a" + R_CURLY@93..94 "}" + WORD@94..99 "nchez" + COMMA@99..100 "," + WHITESPACE@100..121 "\n " + WORD@121..128 "Alberto" + WHITESPACE@128..129 " " + WORD@129..132 "and" + WHITESPACE@132..133 " " + WORD@133..138 "Nozal" + COMMA@138..139 "," + WHITESPACE@139..140 " " + WORD@140..148 "Fernando" + R_CURLY@148..149 "}" + COMMA@149..150 "," + WHITESPACE@150..155 "\n " + FIELD@155..203 + NAME@155..160 "title" + WHITESPACE@160..168 " " + EQ@168..169 "=" + WHITESPACE@169..170 " " + CURLY_GROUP@170..202 + L_CURLY@170..171 "{" + WORD@171..190 "Elektromagnetisches" + WHITESPACE@190..191 " " + WORD@191..201 "Signalhorn" + R_CURLY@201..202 "}" + COMMA@202..203 "," + WHITESPACE@203..208 "\n " + FIELD@208..238 + NAME@208..214 "number" + WHITESPACE@214..221 " " + EQ@221..222 "=" + WHITESPACE@222..223 " " + CURLY_GROUP@223..237 + L_CURLY@223..224 "{" + WORD@224..236 "EU-29702195U" + R_CURLY@236..237 "}" + COMMA@237..238 "," + WHITESPACE@238..243 "\n " + FIELD@243..263 + NAME@243..247 "date" + WHITESPACE@247..256 " " + EQ@256..257 "=" + WHITESPACE@257..258 " " + LITERAL@258..262 + INTEGER@258..262 "1998" + COMMA@262..263 "," + WHITESPACE@263..268 "\n " + FIELD@268..323 + NAME@268..276 "location" + WHITESPACE@276..281 " " + EQ@281..282 "=" + WHITESPACE@282..283 " " + CURLY_GROUP@283..322 + L_CURLY@283..284 "{" + WORD@284..293 "countryfr" + WHITESPACE@293..294 " " + WORD@294..297 "and" + WHITESPACE@297..298 " " + WORD@298..307 "countryuk" + WHITESPACE@307..308 " " + WORD@308..311 "and" + WHITESPACE@311..312 " " + WORD@312..321 "countryde" + R_CURLY@321..322 "}" + COMMA@322..323 "," + WHITESPACE@323..328 "\n " + FIELD@328..352 + NAME@328..334 "langid" + WHITESPACE@334..341 " " + EQ@341..342 "=" + WHITESPACE@342..343 " " + CURLY_GROUP@343..351 + L_CURLY@343..344 "{" + WORD@344..350 "german" + R_CURLY@350..351 "}" + COMMA@351..352 "," + WHITESPACE@352..357 "\n " + FIELD@357..704 + NAME@357..367 "annotation" + WHITESPACE@367..370 " " + EQ@370..371 "=" + WHITESPACE@371..372 " " + CURLY_GROUP@372..703 + L_CURLY@372..373 "{" + WORD@373..377 "This" + WHITESPACE@377..378 " " + WORD@378..380 "is" + WHITESPACE@380..381 " " + WORD@381..382 "a" + WHITESPACE@382..383 " " + COMMAND@383..390 + COMMAND_NAME@383..390 "\\texttt" + CURLY_GROUP@390..398 + L_CURLY@390..391 "{" + WORD@391..397 "patent" + R_CURLY@397..398 "}" + WHITESPACE@398..399 " " + WORD@399..404 "entry" + WHITESPACE@404..405 " " + WORD@405..409 "with" + WHITESPACE@409..410 " " + WORD@410..411 "a" + WHITESPACE@411..412 " " + COMMAND@412..419 + COMMAND_NAME@412..419 "\\texttt" + CURLY_GROUP@419..429 + L_CURLY@419..420 "{" + WORD@420..428 "location" + R_CURLY@428..429 "}" + WHITESPACE@429..450 "\n " + WORD@450..456 "field." + WHITESPACE@456..457 " " + WORD@457..460 "The" + WHITESPACE@460..461 " " + WORD@461..467 "number" + WHITESPACE@467..468 " " + WORD@468..470 "is" + WHITESPACE@470..471 " " + WORD@471..476 "given" + WHITESPACE@476..477 " " + WORD@477..479 "in" + WHITESPACE@479..480 " " + WORD@480..483 "the" + WHITESPACE@483..484 " " + COMMAND@484..491 + COMMAND_NAME@484..491 "\\texttt" + CURLY_GROUP@491..499 + L_CURLY@491..492 "{" + WORD@492..498 "number" + R_CURLY@498..499 "}" + WHITESPACE@499..500 " " + WORD@500..506 "field." + WHITESPACE@506..507 " " + WORD@507..511 "Note" + WHITESPACE@511..532 "\n " + WORD@532..535 "the" + WHITESPACE@535..536 " " + WORD@536..542 "format" + WHITESPACE@542..543 " " + WORD@543..545 "of" + WHITESPACE@545..546 " " + WORD@546..549 "the" + WHITESPACE@549..550 " " + COMMAND@550..557 + COMMAND_NAME@550..557 "\\texttt" + CURLY_GROUP@557..567 + L_CURLY@557..558 "{" + WORD@558..566 "location" + R_CURLY@566..567 "}" + WHITESPACE@567..568 " " + WORD@568..573 "field" + WHITESPACE@573..574 " " + WORD@574..576 "in" + WHITESPACE@576..577 " " + WORD@577..580 "the" + WHITESPACE@580..581 " " + WORD@581..589 "database" + WHITESPACE@589..610 "\n " + WORD@610..615 "file." + WHITESPACE@615..616 " " + WORD@616..623 "Compare" + WHITESPACE@623..624 " " + COMMAND@624..631 + COMMAND_NAME@624..631 "\\texttt" + CURLY_GROUP@631..643 + L_CURLY@631..632 "{" + WORD@632..642 "laufenberg" + R_CURLY@642..643 "}" + COMMA@643..644 "," + WHITESPACE@644..645 " " + COMMAND@645..652 + COMMAND_NAME@645..652 "\\texttt" + CURLY_GROUP@652..660 + L_CURLY@652..653 "{" + WORD@653..659 "sorace" + R_CURLY@659..660 "}" + COMMA@660..661 "," + WHITESPACE@661..662 " " + WORD@662..665 "and" + WHITESPACE@665..686 "\n " + COMMAND@686..693 + COMMAND_NAME@686..693 "\\texttt" + CURLY_GROUP@693..702 + L_CURLY@693..694 "{" + WORD@694..701 "kowalik" + R_CURLY@701..702 "}" + R_CURLY@702..703 "}" + COMMA@703..704 "," + WHITESPACE@704..705 "\n" + R_DELIM@705..706 "}" + + "#]], + ); +} + +#[test] +fn test_averroes_1998() { + check( + r#"@book{averroes/bland, + author = {Averroes}, + title = {The Epistle on the Possibility of Conjunction with the Active + Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}}, + date = 1982, + editor = {Bland, Kalman P.}, + translator = {Bland, Kalman P.}, + series = {Moreshet: Studies in {Jewish} History, Literature and Thought}, + number = 7, + publisher = {Jewish Theological Seminary of America}, + location = {New York}, + keywords = {primary}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Epistle on the Possibility of Conjunction, The}, + shorttitle = {Possibility of Conjunction}, + annotation = {A \texttt{book} entry with a \texttt{series} and a + \texttt{number}. Note the concatenation of the \texttt{editor} + and \texttt{translator} fields as well as the + \texttt{indextitle} field}, +}"#, + expect![[r#" + ROOT@0..1008 + ENTRY@0..1008 + TYPE@0..5 "@book" + L_DELIM@5..6 "{" + NAME@6..20 "averroes/bland" + COMMA@20..21 "," + WHITESPACE@21..26 "\n " + FIELD@26..52 + NAME@26..32 "author" + WHITESPACE@32..39 " " + EQ@39..40 "=" + WHITESPACE@40..41 " " + CURLY_GROUP@41..51 + L_CURLY@41..42 "{" + WORD@42..50 "Averroes" + R_CURLY@50..51 "}" + COMMA@51..52 "," + WHITESPACE@52..57 "\n " + FIELD@57..220 + NAME@57..62 "title" + WHITESPACE@62..70 " " + EQ@70..71 "=" + WHITESPACE@71..72 " " + CURLY_GROUP@72..219 + L_CURLY@72..73 "{" + WORD@73..76 "The" + WHITESPACE@76..77 " " + WORD@77..84 "Epistle" + WHITESPACE@84..85 " " + WORD@85..87 "on" + WHITESPACE@87..88 " " + WORD@88..91 "the" + WHITESPACE@91..92 " " + WORD@92..103 "Possibility" + WHITESPACE@103..104 " " + WORD@104..106 "of" + WHITESPACE@106..107 " " + WORD@107..118 "Conjunction" + WHITESPACE@118..119 " " + WORD@119..123 "with" + WHITESPACE@123..124 " " + WORD@124..127 "the" + WHITESPACE@127..128 " " + WORD@128..134 "Active" + WHITESPACE@134..155 "\n " + WORD@155..164 "Intellect" + WHITESPACE@164..165 " " + WORD@165..167 "by" + WHITESPACE@167..168 " " + CURLY_GROUP@168..179 + L_CURLY@168..169 "{" + WORD@169..172 "Ibn" + WHITESPACE@172..173 " " + WORD@173..178 "Rushd" + R_CURLY@178..179 "}" + WHITESPACE@179..180 " " + WORD@180..184 "with" + WHITESPACE@184..185 " " + WORD@185..188 "the" + WHITESPACE@188..189 " " + WORD@189..199 "Commentary" + WHITESPACE@199..200 " " + WORD@200..202 "of" + WHITESPACE@202..203 " " + CURLY_GROUP@203..218 + L_CURLY@203..204 "{" + WORD@204..209 "Moses" + WHITESPACE@209..210 " " + WORD@210..217 "Narboni" + R_CURLY@217..218 "}" + R_CURLY@218..219 "}" + COMMA@219..220 "," + WHITESPACE@220..225 "\n " + FIELD@225..245 + NAME@225..229 "date" + WHITESPACE@229..238 " " + EQ@238..239 "=" + WHITESPACE@239..240 " " + LITERAL@240..244 + INTEGER@240..244 "1982" + COMMA@244..245 "," + WHITESPACE@245..250 "\n " + FIELD@250..284 + NAME@250..256 "editor" + WHITESPACE@256..263 " " + EQ@263..264 "=" + WHITESPACE@264..265 " " + CURLY_GROUP@265..283 + L_CURLY@265..266 "{" + WORD@266..271 "Bland" + COMMA@271..272 "," + WHITESPACE@272..273 " " + WORD@273..279 "Kalman" + WHITESPACE@279..280 " " + WORD@280..282 "P." + R_CURLY@282..283 "}" + COMMA@283..284 "," + WHITESPACE@284..289 "\n " + FIELD@289..323 + NAME@289..299 "translator" + WHITESPACE@299..302 " " + EQ@302..303 "=" + WHITESPACE@303..304 " " + CURLY_GROUP@304..322 + L_CURLY@304..305 "{" + WORD@305..310 "Bland" + COMMA@310..311 "," + WHITESPACE@311..312 " " + WORD@312..318 "Kalman" + WHITESPACE@318..319 " " + WORD@319..321 "P." + R_CURLY@321..322 "}" + COMMA@322..323 "," + WHITESPACE@323..328 "\n " + FIELD@328..407 + NAME@328..334 "series" + WHITESPACE@334..341 " " + EQ@341..342 "=" + WHITESPACE@342..343 " " + CURLY_GROUP@343..406 + L_CURLY@343..344 "{" + WORD@344..353 "Moreshet:" + WHITESPACE@353..354 " " + WORD@354..361 "Studies" + WHITESPACE@361..362 " " + WORD@362..364 "in" + WHITESPACE@364..365 " " + CURLY_GROUP@365..373 + L_CURLY@365..366 "{" + WORD@366..372 "Jewish" + R_CURLY@372..373 "}" + WHITESPACE@373..374 " " + WORD@374..381 "History" + COMMA@381..382 "," + WHITESPACE@382..383 " " + WORD@383..393 "Literature" + WHITESPACE@393..394 " " + WORD@394..397 "and" + WHITESPACE@397..398 " " + WORD@398..405 "Thought" + R_CURLY@405..406 "}" + COMMA@406..407 "," + WHITESPACE@407..412 "\n " + FIELD@412..429 + NAME@412..418 "number" + WHITESPACE@418..425 " " + EQ@425..426 "=" + WHITESPACE@426..427 " " + LITERAL@427..428 + INTEGER@427..428 "7" + COMMA@428..429 "," + WHITESPACE@429..434 "\n " + FIELD@434..490 + NAME@434..443 "publisher" + WHITESPACE@443..447 " " + EQ@447..448 "=" + WHITESPACE@448..449 " " + CURLY_GROUP@449..489 + L_CURLY@449..450 "{" + WORD@450..456 "Jewish" + WHITESPACE@456..457 " " + WORD@457..468 "Theological" + WHITESPACE@468..469 " " + WORD@469..477 "Seminary" + WHITESPACE@477..478 " " + WORD@478..480 "of" + WHITESPACE@480..481 " " + WORD@481..488 "America" + R_CURLY@488..489 "}" + COMMA@489..490 "," + WHITESPACE@490..495 "\n " + FIELD@495..521 + NAME@495..503 "location" + WHITESPACE@503..508 " " + EQ@508..509 "=" + WHITESPACE@509..510 " " + CURLY_GROUP@510..520 + L_CURLY@510..511 "{" + WORD@511..514 "New" + WHITESPACE@514..515 " " + WORD@515..519 "York" + R_CURLY@519..520 "}" + COMMA@520..521 "," + WHITESPACE@521..526 "\n " + FIELD@526..551 + NAME@526..534 "keywords" + WHITESPACE@534..539 " " + EQ@539..540 "=" + WHITESPACE@540..541 " " + CURLY_GROUP@541..550 + L_CURLY@541..542 "{" + WORD@542..549 "primary" + R_CURLY@549..550 "}" + COMMA@550..551 "," + WHITESPACE@551..556 "\n " + FIELD@556..581 + NAME@556..562 "langid" + WHITESPACE@562..569 " " + EQ@569..570 "=" + WHITESPACE@570..571 " " + CURLY_GROUP@571..580 + L_CURLY@571..572 "{" + WORD@572..579 "english" + R_CURLY@579..580 "}" + COMMA@580..581 "," + WHITESPACE@581..586 "\n " + FIELD@586..620 + NAME@586..596 "langidopts" + WHITESPACE@596..599 " " + EQ@599..600 "=" + WHITESPACE@600..601 " " + CURLY_GROUP@601..619 + L_CURLY@601..602 "{" + WORD@602..618 "variant=american" + R_CURLY@618..619 "}" + COMMA@619..620 "," + WHITESPACE@620..625 "\n " + FIELD@625..689 + NAME@625..635 "indextitle" + WHITESPACE@635..638 " " + EQ@638..639 "=" + WHITESPACE@639..640 " " + CURLY_GROUP@640..688 + L_CURLY@640..641 "{" + WORD@641..648 "Epistle" + WHITESPACE@648..649 " " + WORD@649..651 "on" + WHITESPACE@651..652 " " + WORD@652..655 "the" + WHITESPACE@655..656 " " + WORD@656..667 "Possibility" + WHITESPACE@667..668 " " + WORD@668..670 "of" + WHITESPACE@670..671 " " + WORD@671..682 "Conjunction" + COMMA@682..683 "," + WHITESPACE@683..684 " " + WORD@684..687 "The" + R_CURLY@687..688 "}" + COMMA@688..689 "," + WHITESPACE@689..694 "\n " + FIELD@694..738 + NAME@694..704 "shorttitle" + WHITESPACE@704..707 " " + EQ@707..708 "=" + WHITESPACE@708..709 " " + CURLY_GROUP@709..737 + L_CURLY@709..710 "{" + WORD@710..721 "Possibility" + WHITESPACE@721..722 " " + WORD@722..724 "of" + WHITESPACE@724..725 " " + WORD@725..736 "Conjunction" + R_CURLY@736..737 "}" + COMMA@737..738 "," + WHITESPACE@738..743 "\n " + FIELD@743..1006 + NAME@743..753 "annotation" + WHITESPACE@753..756 " " + EQ@756..757 "=" + WHITESPACE@757..758 " " + CURLY_GROUP@758..1005 + L_CURLY@758..759 "{" + WORD@759..760 "A" + WHITESPACE@760..761 " " + COMMAND@761..768 + COMMAND_NAME@761..768 "\\texttt" + CURLY_GROUP@768..774 + L_CURLY@768..769 "{" + WORD@769..773 "book" + R_CURLY@773..774 "}" + WHITESPACE@774..775 " " + WORD@775..780 "entry" + WHITESPACE@780..781 " " + WORD@781..785 "with" + WHITESPACE@785..786 " " + WORD@786..787 "a" + WHITESPACE@787..788 " " + COMMAND@788..795 + COMMAND_NAME@788..795 "\\texttt" + CURLY_GROUP@795..803 + L_CURLY@795..796 "{" + WORD@796..802 "series" + R_CURLY@802..803 "}" + WHITESPACE@803..804 " " + WORD@804..807 "and" + WHITESPACE@807..808 " " + WORD@808..809 "a" + WHITESPACE@809..830 "\n " + COMMAND@830..837 + COMMAND_NAME@830..837 "\\texttt" + CURLY_GROUP@837..845 + L_CURLY@837..838 "{" + WORD@838..844 "number" + R_CURLY@844..845 "}" + WORD@845..846 "." + WHITESPACE@846..847 " " + WORD@847..851 "Note" + WHITESPACE@851..852 " " + WORD@852..855 "the" + WHITESPACE@855..856 " " + WORD@856..869 "concatenation" + WHITESPACE@869..870 " " + WORD@870..872 "of" + WHITESPACE@872..873 " " + WORD@873..876 "the" + WHITESPACE@876..877 " " + COMMAND@877..884 + COMMAND_NAME@877..884 "\\texttt" + CURLY_GROUP@884..892 + L_CURLY@884..885 "{" + WORD@885..891 "editor" + R_CURLY@891..892 "}" + WHITESPACE@892..913 "\n " + WORD@913..916 "and" + WHITESPACE@916..917 " " + COMMAND@917..924 + COMMAND_NAME@917..924 "\\texttt" + CURLY_GROUP@924..936 + L_CURLY@924..925 "{" + WORD@925..935 "translator" + R_CURLY@935..936 "}" + WHITESPACE@936..937 " " + WORD@937..943 "fields" + WHITESPACE@943..944 " " + WORD@944..946 "as" + WHITESPACE@946..947 " " + WORD@947..951 "well" + WHITESPACE@951..952 " " + WORD@952..954 "as" + WHITESPACE@954..955 " " + WORD@955..958 "the" + WHITESPACE@958..979 "\n " + COMMAND@979..986 + COMMAND_NAME@979..986 "\\texttt" + CURLY_GROUP@986..998 + L_CURLY@986..987 "{" + WORD@987..997 "indextitle" + R_CURLY@997..998 "}" + WHITESPACE@998..999 " " + WORD@999..1004 "field" + R_CURLY@1004..1005 "}" + COMMA@1005..1006 "," + WHITESPACE@1006..1007 "\n" + R_DELIM@1007..1008 "}" + + "#]], + ); +} + +#[test] +fn test_betram_1996() { + check( + r#"@string{jams = {J.~Amer. Math. Soc.}} + +@article{bertram, + author = {Bertram, Aaron and Wentworth, Richard}, + title = {Gromov invariants for holomorphic maps on {Riemann} surfaces}, + journaltitle = jams, + date = 1996, + volume = 9, + number = 2, + pages = {529-571}, + langid = {english}, + langidopts = {variant=american}, + shorttitle = {Gromov invariants}, + annotation = {An \texttt{article} entry with a \texttt{volume} and a + \texttt{number} field}, +}"#, + expect![[r#" + ROOT@0..556 + STRING@0..40 + TYPE@0..7 "@string" + L_DELIM@7..8 "{" + NAME@8..12 "jams" + WHITESPACE@12..16 " " + EQ@16..17 "=" + WHITESPACE@17..18 " " + CURLY_GROUP@18..39 + L_CURLY@18..19 "{" + WORD@19..21 "J." + NBSP@21..22 "~" + WORD@22..27 "Amer." + WHITESPACE@27..28 " " + WORD@28..33 "Math." + WHITESPACE@33..34 " " + WORD@34..38 "Soc." + R_CURLY@38..39 "}" + R_DELIM@39..40 "}" + JUNK@40..42 "\n\n" + ENTRY@42..556 + TYPE@42..50 "@article" + L_DELIM@50..51 "{" + NAME@51..58 "bertram" + COMMA@58..59 "," + WHITESPACE@59..64 "\n " + FIELD@64..119 + NAME@64..70 "author" + WHITESPACE@70..77 " " + EQ@77..78 "=" + WHITESPACE@78..79 " " + CURLY_GROUP@79..118 + L_CURLY@79..80 "{" + WORD@80..87 "Bertram" + COMMA@87..88 "," + WHITESPACE@88..89 " " + WORD@89..94 "Aaron" + WHITESPACE@94..95 " " + WORD@95..98 "and" + WHITESPACE@98..99 " " + WORD@99..108 "Wentworth" + COMMA@108..109 "," + WHITESPACE@109..110 " " + WORD@110..117 "Richard" + R_CURLY@117..118 "}" + COMMA@118..119 "," + WHITESPACE@119..124 "\n " + FIELD@124..202 + NAME@124..129 "title" + WHITESPACE@129..137 " " + EQ@137..138 "=" + WHITESPACE@138..139 " " + CURLY_GROUP@139..201 + L_CURLY@139..140 "{" + WORD@140..146 "Gromov" + WHITESPACE@146..147 " " + WORD@147..157 "invariants" + WHITESPACE@157..158 " " + WORD@158..161 "for" + WHITESPACE@161..162 " " + WORD@162..173 "holomorphic" + WHITESPACE@173..174 " " + WORD@174..178 "maps" + WHITESPACE@178..179 " " + WORD@179..181 "on" + WHITESPACE@181..182 " " + CURLY_GROUP@182..191 + L_CURLY@182..183 "{" + WORD@183..190 "Riemann" + R_CURLY@190..191 "}" + WHITESPACE@191..192 " " + WORD@192..200 "surfaces" + R_CURLY@200..201 "}" + COMMA@201..202 "," + WHITESPACE@202..207 "\n " + FIELD@207..227 + NAME@207..219 "journaltitle" + WHITESPACE@219..220 " " + EQ@220..221 "=" + WHITESPACE@221..222 " " + LITERAL@222..226 + NAME@222..226 "jams" + COMMA@226..227 "," + WHITESPACE@227..232 "\n " + FIELD@232..252 + NAME@232..236 "date" + WHITESPACE@236..245 " " + EQ@245..246 "=" + WHITESPACE@246..247 " " + LITERAL@247..251 + INTEGER@247..251 "1996" + COMMA@251..252 "," + WHITESPACE@252..257 "\n " + FIELD@257..274 + NAME@257..263 "volume" + WHITESPACE@263..270 " " + EQ@270..271 "=" + WHITESPACE@271..272 " " + LITERAL@272..273 + INTEGER@272..273 "9" + COMMA@273..274 "," + WHITESPACE@274..279 "\n " + FIELD@279..296 + NAME@279..285 "number" + WHITESPACE@285..292 " " + EQ@292..293 "=" + WHITESPACE@293..294 " " + LITERAL@294..295 + INTEGER@294..295 "2" + COMMA@295..296 "," + WHITESPACE@296..301 "\n " + FIELD@301..326 + NAME@301..306 "pages" + WHITESPACE@306..314 " " + EQ@314..315 "=" + WHITESPACE@315..316 " " + CURLY_GROUP@316..325 + L_CURLY@316..317 "{" + WORD@317..324 "529-571" + R_CURLY@324..325 "}" + COMMA@325..326 "," + WHITESPACE@326..331 "\n " + FIELD@331..356 + NAME@331..337 "langid" + WHITESPACE@337..344 " " + EQ@344..345 "=" + WHITESPACE@345..346 " " + CURLY_GROUP@346..355 + L_CURLY@346..347 "{" + WORD@347..354 "english" + R_CURLY@354..355 "}" + COMMA@355..356 "," + WHITESPACE@356..361 "\n " + FIELD@361..395 + NAME@361..371 "langidopts" + WHITESPACE@371..374 " " + EQ@374..375 "=" + WHITESPACE@375..376 " " + CURLY_GROUP@376..394 + L_CURLY@376..377 "{" + WORD@377..393 "variant=american" + R_CURLY@393..394 "}" + COMMA@394..395 "," + WHITESPACE@395..400 "\n " + FIELD@400..435 + NAME@400..410 "shorttitle" + WHITESPACE@410..413 " " + EQ@413..414 "=" + WHITESPACE@414..415 " " + CURLY_GROUP@415..434 + L_CURLY@415..416 "{" + WORD@416..422 "Gromov" + WHITESPACE@422..423 " " + WORD@423..433 "invariants" + R_CURLY@433..434 "}" + COMMA@434..435 "," + WHITESPACE@435..440 "\n " + FIELD@440..554 + NAME@440..450 "annotation" + WHITESPACE@450..453 " " + EQ@453..454 "=" + WHITESPACE@454..455 " " + CURLY_GROUP@455..553 + L_CURLY@455..456 "{" + WORD@456..458 "An" + WHITESPACE@458..459 " " + COMMAND@459..466 + COMMAND_NAME@459..466 "\\texttt" + CURLY_GROUP@466..475 + L_CURLY@466..467 "{" + WORD@467..474 "article" + R_CURLY@474..475 "}" + WHITESPACE@475..476 " " + WORD@476..481 "entry" + WHITESPACE@481..482 " " + WORD@482..486 "with" + WHITESPACE@486..487 " " + WORD@487..488 "a" + WHITESPACE@488..489 " " + COMMAND@489..496 + COMMAND_NAME@489..496 "\\texttt" + CURLY_GROUP@496..504 + L_CURLY@496..497 "{" + WORD@497..503 "volume" + R_CURLY@503..504 "}" + WHITESPACE@504..505 " " + WORD@505..508 "and" + WHITESPACE@508..509 " " + WORD@509..510 "a" + WHITESPACE@510..531 "\n " + COMMAND@531..538 + COMMAND_NAME@531..538 "\\texttt" + CURLY_GROUP@538..546 + L_CURLY@538..539 "{" + WORD@539..545 "number" + R_CURLY@545..546 "}" + WHITESPACE@546..547 " " + WORD@547..552 "field" + R_CURLY@552..553 "}" + COMMA@553..554 "," + WHITESPACE@554..555 "\n" + R_DELIM@555..556 "}" + + "#]], + ); +} + +#[test] +fn test_blom_2021() { + check( + r#"@article{DBLP:journals/corr/abs-2107-11903, + author = {Michelle L. Blom and + Jurlind Budurushi and + Ronald L. Rivest and + Philip B. Stark and + Peter J. Stuckey and + Vanessa Teague and + Damjan Vukcevic}, + title = {Assertion-based Approaches to Auditing Complex Elections, with application + to party-list proportional elections}, + journal = {CoRR}, + volume = {abs/2107.11903}, + year = {2021}, + url = {https://arxiv.org/abs/2107.11903}, + eprinttype = {arXiv}, + eprint = {2107.11903}, + timestamp = {Thu, 29 Jul 2021 16:14:15 +0200}, + biburl = {https://dblp.org/rec/journals/corr/abs-2107-11903.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +}"#, + expect![[r#" + ROOT@0..860 + ENTRY@0..860 + TYPE@0..8 "@article" + L_DELIM@8..9 "{" + NAME@9..42 "DBLP:journals/corr/ab ..." + COMMA@42..43 "," + WHITESPACE@43..48 "\n " + FIELD@48..322 + NAME@48..54 "author" + WHITESPACE@54..58 " " + EQ@58..59 "=" + WHITESPACE@59..60 " " + CURLY_GROUP@60..321 + L_CURLY@60..61 "{" + WORD@61..69 "Michelle" + WHITESPACE@69..70 " " + WORD@70..72 "L." + WHITESPACE@72..73 " " + WORD@73..77 "Blom" + WHITESPACE@77..78 " " + WORD@78..81 "and" + WHITESPACE@81..102 "\n " + WORD@102..109 "Jurlind" + WHITESPACE@109..110 " " + WORD@110..119 "Budurushi" + WHITESPACE@119..120 " " + WORD@120..123 "and" + WHITESPACE@123..144 "\n " + WORD@144..150 "Ronald" + WHITESPACE@150..151 " " + WORD@151..153 "L." + WHITESPACE@153..154 " " + WORD@154..160 "Rivest" + WHITESPACE@160..161 " " + WORD@161..164 "and" + WHITESPACE@164..185 "\n " + WORD@185..191 "Philip" + WHITESPACE@191..192 " " + WORD@192..194 "B." + WHITESPACE@194..195 " " + WORD@195..200 "Stark" + WHITESPACE@200..201 " " + WORD@201..204 "and" + WHITESPACE@204..225 "\n " + WORD@225..230 "Peter" + WHITESPACE@230..231 " " + WORD@231..233 "J." + WHITESPACE@233..234 " " + WORD@234..241 "Stuckey" + WHITESPACE@241..242 " " + WORD@242..245 "and" + WHITESPACE@245..266 "\n " + WORD@266..273 "Vanessa" + WHITESPACE@273..274 " " + WORD@274..280 "Teague" + WHITESPACE@280..281 " " + WORD@281..284 "and" + WHITESPACE@284..305 "\n " + WORD@305..311 "Damjan" + WHITESPACE@311..312 " " + WORD@312..320 "Vukcevic" + R_CURLY@320..321 "}" + COMMA@321..322 "," + WHITESPACE@322..327 "\n " + FIELD@327..473 + NAME@327..332 "title" + WHITESPACE@332..337 " " + EQ@337..338 "=" + WHITESPACE@338..339 " " + CURLY_GROUP@339..472 + L_CURLY@339..340 "{" + WORD@340..355 "Assertion-based" + WHITESPACE@355..356 " " + WORD@356..366 "Approaches" + WHITESPACE@366..367 " " + WORD@367..369 "to" + WHITESPACE@369..370 " " + WORD@370..378 "Auditing" + WHITESPACE@378..379 " " + WORD@379..386 "Complex" + WHITESPACE@386..387 " " + WORD@387..396 "Elections" + COMMA@396..397 "," + WHITESPACE@397..398 " " + WORD@398..402 "with" + WHITESPACE@402..403 " " + WORD@403..414 "application" + WHITESPACE@414..435 "\n " + WORD@435..437 "to" + WHITESPACE@437..438 " " + WORD@438..448 "party-list" + WHITESPACE@448..449 " " + WORD@449..461 "proportional" + WHITESPACE@461..462 " " + WORD@462..471 "elections" + R_CURLY@471..472 "}" + COMMA@472..473 "," + WHITESPACE@473..478 "\n " + FIELD@478..497 + NAME@478..485 "journal" + WHITESPACE@485..488 " " + EQ@488..489 "=" + WHITESPACE@489..490 " " + CURLY_GROUP@490..496 + L_CURLY@490..491 "{" + WORD@491..495 "CoRR" + R_CURLY@495..496 "}" + COMMA@496..497 "," + WHITESPACE@497..502 "\n " + FIELD@502..531 + NAME@502..508 "volume" + WHITESPACE@508..512 " " + EQ@512..513 "=" + WHITESPACE@513..514 " " + CURLY_GROUP@514..530 + L_CURLY@514..515 "{" + WORD@515..529 "abs/2107.11903" + R_CURLY@529..530 "}" + COMMA@530..531 "," + WHITESPACE@531..536 "\n " + FIELD@536..555 + NAME@536..540 "year" + WHITESPACE@540..546 " " + EQ@546..547 "=" + WHITESPACE@547..548 " " + CURLY_GROUP@548..554 + L_CURLY@548..549 "{" + INTEGER@549..553 "2021" + R_CURLY@553..554 "}" + COMMA@554..555 "," + WHITESPACE@555..560 "\n " + FIELD@560..607 + NAME@560..563 "url" + WHITESPACE@563..570 " " + EQ@570..571 "=" + WHITESPACE@571..572 " " + CURLY_GROUP@572..606 + L_CURLY@572..573 "{" + WORD@573..605 "https://arxiv.org/abs ..." + R_CURLY@605..606 "}" + COMMA@606..607 "," + WHITESPACE@607..612 "\n " + FIELD@612..633 + NAME@612..622 "eprinttype" + WHITESPACE@622..623 " " + EQ@623..624 "=" + WHITESPACE@624..625 " " + CURLY_GROUP@625..632 + L_CURLY@625..626 "{" + WORD@626..631 "arXiv" + R_CURLY@631..632 "}" + COMMA@632..633 "," + WHITESPACE@633..638 "\n " + FIELD@638..663 + NAME@638..644 "eprint" + WHITESPACE@644..648 " " + EQ@648..649 "=" + WHITESPACE@649..650 " " + CURLY_GROUP@650..662 + L_CURLY@650..651 "{" + WORD@651..661 "2107.11903" + R_CURLY@661..662 "}" + COMMA@662..663 "," + WHITESPACE@663..668 "\n " + FIELD@668..714 + NAME@668..677 "timestamp" + WHITESPACE@677..678 " " + EQ@678..679 "=" + WHITESPACE@679..680 " " + CURLY_GROUP@680..713 + L_CURLY@680..681 "{" + WORD@681..684 "Thu" + COMMA@684..685 "," + WHITESPACE@685..686 " " + INTEGER@686..688 "29" + WHITESPACE@688..689 " " + WORD@689..692 "Jul" + WHITESPACE@692..693 " " + INTEGER@693..697 "2021" + WHITESPACE@697..698 " " + WORD@698..706 "16:14:15" + WHITESPACE@706..707 " " + WORD@707..712 "+0200" + R_CURLY@712..713 "}" + COMMA@713..714 "," + WHITESPACE@714..719 "\n " + FIELD@719..787 + NAME@719..725 "biburl" + WHITESPACE@725..729 " " + EQ@729..730 "=" + WHITESPACE@730..731 " " + CURLY_GROUP@731..786 + L_CURLY@731..732 "{" + WORD@732..785 "https://dblp.org/rec/ ..." + R_CURLY@785..786 "}" + COMMA@786..787 "," + WHITESPACE@787..792 "\n " + FIELD@792..859 + NAME@792..801 "bibsource" + WHITESPACE@801..802 " " + EQ@802..803 "=" + WHITESPACE@803..804 " " + CURLY_GROUP@804..858 + L_CURLY@804..805 "{" + WORD@805..809 "dblp" + WHITESPACE@809..810 " " + WORD@810..818 "computer" + WHITESPACE@818..819 " " + WORD@819..826 "science" + WHITESPACE@826..827 " " + WORD@827..839 "bibliography" + COMMA@839..840 "," + WHITESPACE@840..841 " " + WORD@841..857 "https://dblp.org" + R_CURLY@857..858 "}" + WHITESPACE@858..859 "\n" + R_DELIM@859..860 "}" + + "#]], + ); +} + +#[test] +fn test_combi_2004() { + check( + r#"@inproceedings{10.1145/967900.968040, + author = {Combi, Carlo and Pozzi, Giuseppe}, + title = {Architectures for a Temporal Workflow Management System}, + year = {2004}, + isbn = {1581138121}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + url = {https://doi.org/10.1145/967900.968040}, + doi = {10.1145/967900.968040}, + booktitle = {Proceedings of the 2004 ACM Symposium on Applied Computing}, + pages = {659-666}, + numpages = {8}, + keywords = {active DBMS, temporal DBMS, workflow management system - WfMS, temporal workflow management system}, + location = {Nicosia, Cyprus}, + series = {SAC '04} +}"#, + expect![[r#" + ROOT@0..674 + ENTRY@0..674 + TYPE@0..14 "@inproceedings" + L_DELIM@14..15 "{" + NAME@15..36 "10.1145/967900.968040" + COMMA@36..37 "," + WHITESPACE@37..42 "\n " + FIELD@42..86 + NAME@42..48 "author" + WHITESPACE@48..49 " " + EQ@49..50 "=" + WHITESPACE@50..51 " " + CURLY_GROUP@51..85 + L_CURLY@51..52 "{" + WORD@52..57 "Combi" + COMMA@57..58 "," + WHITESPACE@58..59 " " + WORD@59..64 "Carlo" + WHITESPACE@64..65 " " + WORD@65..68 "and" + WHITESPACE@68..69 " " + WORD@69..74 "Pozzi" + COMMA@74..75 "," + WHITESPACE@75..76 " " + WORD@76..84 "Giuseppe" + R_CURLY@84..85 "}" + COMMA@85..86 "," + WHITESPACE@86..91 "\n " + FIELD@91..157 + NAME@91..96 "title" + WHITESPACE@96..97 " " + EQ@97..98 "=" + WHITESPACE@98..99 " " + CURLY_GROUP@99..156 + L_CURLY@99..100 "{" + WORD@100..113 "Architectures" + WHITESPACE@113..114 " " + WORD@114..117 "for" + WHITESPACE@117..118 " " + WORD@118..119 "a" + WHITESPACE@119..120 " " + WORD@120..128 "Temporal" + WHITESPACE@128..129 " " + WORD@129..137 "Workflow" + WHITESPACE@137..138 " " + WORD@138..148 "Management" + WHITESPACE@148..149 " " + WORD@149..155 "System" + R_CURLY@155..156 "}" + COMMA@156..157 "," + WHITESPACE@157..162 "\n " + FIELD@162..176 + NAME@162..166 "year" + WHITESPACE@166..167 " " + EQ@167..168 "=" + WHITESPACE@168..169 " " + CURLY_GROUP@169..175 + L_CURLY@169..170 "{" + INTEGER@170..174 "2004" + R_CURLY@174..175 "}" + COMMA@175..176 "," + WHITESPACE@176..181 "\n " + FIELD@181..201 + NAME@181..185 "isbn" + WHITESPACE@185..186 " " + EQ@186..187 "=" + WHITESPACE@187..188 " " + CURLY_GROUP@188..200 + L_CURLY@188..189 "{" + INTEGER@189..199 "1581138121" + R_CURLY@199..200 "}" + COMMA@200..201 "," + WHITESPACE@201..206 "\n " + FIELD@206..256 + NAME@206..215 "publisher" + WHITESPACE@215..216 " " + EQ@216..217 "=" + WHITESPACE@217..218 " " + CURLY_GROUP@218..255 + L_CURLY@218..219 "{" + WORD@219..230 "Association" + WHITESPACE@230..231 " " + WORD@231..234 "for" + WHITESPACE@234..235 " " + WORD@235..244 "Computing" + WHITESPACE@244..245 " " + WORD@245..254 "Machinery" + R_CURLY@254..255 "}" + COMMA@255..256 "," + WHITESPACE@256..261 "\n " + FIELD@261..291 + NAME@261..268 "address" + WHITESPACE@268..269 " " + EQ@269..270 "=" + WHITESPACE@270..271 " " + CURLY_GROUP@271..290 + L_CURLY@271..272 "{" + WORD@272..275 "New" + WHITESPACE@275..276 " " + WORD@276..280 "York" + COMMA@280..281 "," + WHITESPACE@281..282 " " + WORD@282..284 "NY" + COMMA@284..285 "," + WHITESPACE@285..286 " " + WORD@286..289 "USA" + R_CURLY@289..290 "}" + COMMA@290..291 "," + WHITESPACE@291..296 "\n " + FIELD@296..342 + NAME@296..299 "url" + WHITESPACE@299..300 " " + EQ@300..301 "=" + WHITESPACE@301..302 " " + CURLY_GROUP@302..341 + L_CURLY@302..303 "{" + WORD@303..340 "https://doi.org/10.11 ..." + R_CURLY@340..341 "}" + COMMA@341..342 "," + WHITESPACE@342..347 "\n " + FIELD@347..377 + NAME@347..350 "doi" + WHITESPACE@350..351 " " + EQ@351..352 "=" + WHITESPACE@352..353 " " + CURLY_GROUP@353..376 + L_CURLY@353..354 "{" + WORD@354..375 "10.1145/967900.968040" + R_CURLY@375..376 "}" + COMMA@376..377 "," + WHITESPACE@377..382 "\n " + FIELD@382..455 + NAME@382..391 "booktitle" + WHITESPACE@391..392 " " + EQ@392..393 "=" + WHITESPACE@393..394 " " + CURLY_GROUP@394..454 + L_CURLY@394..395 "{" + WORD@395..406 "Proceedings" + WHITESPACE@406..407 " " + WORD@407..409 "of" + WHITESPACE@409..410 " " + WORD@410..413 "the" + WHITESPACE@413..414 " " + INTEGER@414..418 "2004" + WHITESPACE@418..419 " " + WORD@419..422 "ACM" + WHITESPACE@422..423 " " + WORD@423..432 "Symposium" + WHITESPACE@432..433 " " + WORD@433..435 "on" + WHITESPACE@435..436 " " + WORD@436..443 "Applied" + WHITESPACE@443..444 " " + WORD@444..453 "Computing" + R_CURLY@453..454 "}" + COMMA@454..455 "," + WHITESPACE@455..460 "\n " + FIELD@460..478 + NAME@460..465 "pages" + WHITESPACE@465..466 " " + EQ@466..467 "=" + WHITESPACE@467..468 " " + CURLY_GROUP@468..477 + L_CURLY@468..469 "{" + WORD@469..476 "659-666" + R_CURLY@476..477 "}" + COMMA@477..478 "," + WHITESPACE@478..483 "\n " + FIELD@483..498 + NAME@483..491 "numpages" + WHITESPACE@491..492 " " + EQ@492..493 "=" + WHITESPACE@493..494 " " + CURLY_GROUP@494..497 + L_CURLY@494..495 "{" + INTEGER@495..496 "8" + R_CURLY@496..497 "}" + COMMA@497..498 "," + WHITESPACE@498..503 "\n " + FIELD@503..615 + NAME@503..511 "keywords" + WHITESPACE@511..512 " " + EQ@512..513 "=" + WHITESPACE@513..514 " " + CURLY_GROUP@514..614 + L_CURLY@514..515 "{" + WORD@515..521 "active" + WHITESPACE@521..522 " " + WORD@522..526 "DBMS" + COMMA@526..527 "," + WHITESPACE@527..528 " " + WORD@528..536 "temporal" + WHITESPACE@536..537 " " + WORD@537..541 "DBMS" + COMMA@541..542 "," + WHITESPACE@542..543 " " + WORD@543..551 "workflow" + WHITESPACE@551..552 " " + WORD@552..562 "management" + WHITESPACE@562..563 " " + WORD@563..569 "system" + WHITESPACE@569..570 " " + WORD@570..571 "-" + WHITESPACE@571..572 " " + WORD@572..576 "WfMS" + COMMA@576..577 "," + WHITESPACE@577..578 " " + WORD@578..586 "temporal" + WHITESPACE@586..587 " " + WORD@587..595 "workflow" + WHITESPACE@595..596 " " + WORD@596..606 "management" + WHITESPACE@606..607 " " + WORD@607..613 "system" + R_CURLY@613..614 "}" + COMMA@614..615 "," + WHITESPACE@615..620 "\n " + FIELD@620..649 + NAME@620..628 "location" + WHITESPACE@628..629 " " + EQ@629..630 "=" + WHITESPACE@630..631 " " + CURLY_GROUP@631..648 + L_CURLY@631..632 "{" + WORD@632..639 "Nicosia" + COMMA@639..640 "," + WHITESPACE@640..641 " " + WORD@641..647 "Cyprus" + R_CURLY@647..648 "}" + COMMA@648..649 "," + WHITESPACE@649..654 "\n " + FIELD@654..673 + NAME@654..660 "series" + WHITESPACE@660..661 " " + EQ@661..662 "=" + WHITESPACE@662..663 " " + CURLY_GROUP@663..672 + L_CURLY@663..664 "{" + WORD@664..667 "SAC" + WHITESPACE@667..668 " " + WORD@668..671 "'04" + R_CURLY@671..672 "}" + WHITESPACE@672..673 "\n" + R_DELIM@673..674 "}" + + "#]], + ); +} + +#[test] +fn test_erwin_2007() { + check( + r#"@inproceedings{10.5555/1386993.1386994, + author = {Erwin, Alva and Gopalan, Raj P. and Achuthan, N. R.}, + title = {A Bottom-up Projection Based Algorithm for Mining High Utility Itemsets}, + year = {2007}, + isbn = {9781920682651}, + publisher = {Australian Computer Society, Inc.}, + address = {AUS}, + booktitle = {Proceedings of the 2nd International Workshop on Integrating Artificial Intelligence and Data Mining - Volume 84}, + pages = {3-11}, + numpages = {9}, + keywords = {pattern growth, high utility itemset mining}, + location = {Gold Coast, Australia}, + series = {AIDM '07} +}"#, + expect![[r#" + ROOT@0..615 + ENTRY@0..615 + TYPE@0..14 "@inproceedings" + L_DELIM@14..15 "{" + NAME@15..38 "10.5555/1386993.1386994" + COMMA@38..39 "," + WHITESPACE@39..44 "\n " + FIELD@44..107 + NAME@44..50 "author" + WHITESPACE@50..51 " " + EQ@51..52 "=" + WHITESPACE@52..53 " " + CURLY_GROUP@53..106 + L_CURLY@53..54 "{" + WORD@54..59 "Erwin" + COMMA@59..60 "," + WHITESPACE@60..61 " " + WORD@61..65 "Alva" + WHITESPACE@65..66 " " + WORD@66..69 "and" + WHITESPACE@69..70 " " + WORD@70..77 "Gopalan" + COMMA@77..78 "," + WHITESPACE@78..79 " " + WORD@79..82 "Raj" + WHITESPACE@82..83 " " + WORD@83..85 "P." + WHITESPACE@85..86 " " + WORD@86..89 "and" + WHITESPACE@89..90 " " + WORD@90..98 "Achuthan" + COMMA@98..99 "," + WHITESPACE@99..100 " " + WORD@100..102 "N." + WHITESPACE@102..103 " " + WORD@103..105 "R." + R_CURLY@105..106 "}" + COMMA@106..107 "," + WHITESPACE@107..112 "\n " + FIELD@112..194 + NAME@112..117 "title" + WHITESPACE@117..118 " " + EQ@118..119 "=" + WHITESPACE@119..120 " " + CURLY_GROUP@120..193 + L_CURLY@120..121 "{" + WORD@121..122 "A" + WHITESPACE@122..123 " " + WORD@123..132 "Bottom-up" + WHITESPACE@132..133 " " + WORD@133..143 "Projection" + WHITESPACE@143..144 " " + WORD@144..149 "Based" + WHITESPACE@149..150 " " + WORD@150..159 "Algorithm" + WHITESPACE@159..160 " " + WORD@160..163 "for" + WHITESPACE@163..164 " " + WORD@164..170 "Mining" + WHITESPACE@170..171 " " + WORD@171..175 "High" + WHITESPACE@175..176 " " + WORD@176..183 "Utility" + WHITESPACE@183..184 " " + WORD@184..192 "Itemsets" + R_CURLY@192..193 "}" + COMMA@193..194 "," + WHITESPACE@194..199 "\n " + FIELD@199..213 + NAME@199..203 "year" + WHITESPACE@203..204 " " + EQ@204..205 "=" + WHITESPACE@205..206 " " + CURLY_GROUP@206..212 + L_CURLY@206..207 "{" + INTEGER@207..211 "2007" + R_CURLY@211..212 "}" + COMMA@212..213 "," + WHITESPACE@213..218 "\n " + FIELD@218..241 + NAME@218..222 "isbn" + WHITESPACE@222..223 " " + EQ@223..224 "=" + WHITESPACE@224..225 " " + CURLY_GROUP@225..240 + L_CURLY@225..226 "{" + INTEGER@226..239 "9781920682651" + R_CURLY@239..240 "}" + COMMA@240..241 "," + WHITESPACE@241..246 "\n " + FIELD@246..294 + NAME@246..255 "publisher" + WHITESPACE@255..256 " " + EQ@256..257 "=" + WHITESPACE@257..258 " " + CURLY_GROUP@258..293 + L_CURLY@258..259 "{" + WORD@259..269 "Australian" + WHITESPACE@269..270 " " + WORD@270..278 "Computer" + WHITESPACE@278..279 " " + WORD@279..286 "Society" + COMMA@286..287 "," + WHITESPACE@287..288 " " + WORD@288..292 "Inc." + R_CURLY@292..293 "}" + COMMA@293..294 "," + WHITESPACE@294..299 "\n " + FIELD@299..315 + NAME@299..306 "address" + WHITESPACE@306..307 " " + EQ@307..308 "=" + WHITESPACE@308..309 " " + CURLY_GROUP@309..314 + L_CURLY@309..310 "{" + WORD@310..313 "AUS" + R_CURLY@313..314 "}" + COMMA@314..315 "," + WHITESPACE@315..320 "\n " + FIELD@320..447 + NAME@320..329 "booktitle" + WHITESPACE@329..330 " " + EQ@330..331 "=" + WHITESPACE@331..332 " " + CURLY_GROUP@332..446 + L_CURLY@332..333 "{" + WORD@333..344 "Proceedings" + WHITESPACE@344..345 " " + WORD@345..347 "of" + WHITESPACE@347..348 " " + WORD@348..351 "the" + WHITESPACE@351..352 " " + WORD@352..355 "2nd" + WHITESPACE@355..356 " " + WORD@356..369 "International" + WHITESPACE@369..370 " " + WORD@370..378 "Workshop" + WHITESPACE@378..379 " " + WORD@379..381 "on" + WHITESPACE@381..382 " " + WORD@382..393 "Integrating" + WHITESPACE@393..394 " " + WORD@394..404 "Artificial" + WHITESPACE@404..405 " " + WORD@405..417 "Intelligence" + WHITESPACE@417..418 " " + WORD@418..421 "and" + WHITESPACE@421..422 " " + WORD@422..426 "Data" + WHITESPACE@426..427 " " + WORD@427..433 "Mining" + WHITESPACE@433..434 " " + WORD@434..435 "-" + WHITESPACE@435..436 " " + WORD@436..442 "Volume" + WHITESPACE@442..443 " " + INTEGER@443..445 "84" + R_CURLY@445..446 "}" + COMMA@446..447 "," + WHITESPACE@447..452 "\n " + FIELD@452..467 + NAME@452..457 "pages" + WHITESPACE@457..458 " " + EQ@458..459 "=" + WHITESPACE@459..460 " " + CURLY_GROUP@460..466 + L_CURLY@460..461 "{" + WORD@461..465 "3-11" + R_CURLY@465..466 "}" + COMMA@466..467 "," + WHITESPACE@467..472 "\n " + FIELD@472..487 + NAME@472..480 "numpages" + WHITESPACE@480..481 " " + EQ@481..482 "=" + WHITESPACE@482..483 " " + CURLY_GROUP@483..486 + L_CURLY@483..484 "{" + INTEGER@484..485 "9" + R_CURLY@485..486 "}" + COMMA@486..487 "," + WHITESPACE@487..492 "\n " + FIELD@492..549 + NAME@492..500 "keywords" + WHITESPACE@500..501 " " + EQ@501..502 "=" + WHITESPACE@502..503 " " + CURLY_GROUP@503..548 + L_CURLY@503..504 "{" + WORD@504..511 "pattern" + WHITESPACE@511..512 " " + WORD@512..518 "growth" + COMMA@518..519 "," + WHITESPACE@519..520 " " + WORD@520..524 "high" + WHITESPACE@524..525 " " + WORD@525..532 "utility" + WHITESPACE@532..533 " " + WORD@533..540 "itemset" + WHITESPACE@540..541 " " + WORD@541..547 "mining" + R_CURLY@547..548 "}" + COMMA@548..549 "," + WHITESPACE@549..554 "\n " + FIELD@554..589 + NAME@554..562 "location" + WHITESPACE@562..563 " " + EQ@563..564 "=" + WHITESPACE@564..565 " " + CURLY_GROUP@565..588 + L_CURLY@565..566 "{" + WORD@566..570 "Gold" + WHITESPACE@570..571 " " + WORD@571..576 "Coast" + COMMA@576..577 "," + WHITESPACE@577..578 " " + WORD@578..587 "Australia" + R_CURLY@587..588 "}" + COMMA@588..589 "," + WHITESPACE@589..594 "\n " + FIELD@594..614 + NAME@594..600 "series" + WHITESPACE@600..601 " " + EQ@601..602 "=" + WHITESPACE@602..603 " " + CURLY_GROUP@603..613 + L_CURLY@603..604 "{" + WORD@604..608 "AIDM" + WHITESPACE@608..609 " " + WORD@609..612 "'07" + R_CURLY@612..613 "}" + WHITESPACE@613..614 "\n" + R_DELIM@614..615 "}" + + "#]], + ); +} + +#[test] +fn test_jain_1999() { + check( + r#"@article{10.1145/331499.331504, + author = {Jain, A. K. and Murty, M. N. and Flynn, P. J.}, + title = {Data Clustering: A Review}, + year = {1999}, + issue_date = {Sept. 1999}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = {31}, + number = {3}, + issn = {0360-0300}, + url = {https://doi.org/10.1145/331499.331504}, + doi = {10.1145/331499.331504}, + journal = {ACM Comput. Surv.}, + month = {sep}, + pages = {264-323}, + numpages = {60}, + keywords = {incremental clustering, clustering applications, exploratory data analysis, cluster analysis, similarity indices, unsupervised learning} +}"#, + expect![[r#" + ROOT@0..674 + ENTRY@0..674 + TYPE@0..8 "@article" + L_DELIM@8..9 "{" + NAME@9..30 "10.1145/331499.331504" + COMMA@30..31 "," + WHITESPACE@31..36 "\n " + FIELD@36..93 + NAME@36..42 "author" + WHITESPACE@42..43 " " + EQ@43..44 "=" + WHITESPACE@44..45 " " + CURLY_GROUP@45..92 + L_CURLY@45..46 "{" + WORD@46..50 "Jain" + COMMA@50..51 "," + WHITESPACE@51..52 " " + WORD@52..54 "A." + WHITESPACE@54..55 " " + WORD@55..57 "K." + WHITESPACE@57..58 " " + WORD@58..61 "and" + WHITESPACE@61..62 " " + WORD@62..67 "Murty" + COMMA@67..68 "," + WHITESPACE@68..69 " " + WORD@69..71 "M." + WHITESPACE@71..72 " " + WORD@72..74 "N." + WHITESPACE@74..75 " " + WORD@75..78 "and" + WHITESPACE@78..79 " " + WORD@79..84 "Flynn" + COMMA@84..85 "," + WHITESPACE@85..86 " " + WORD@86..88 "P." + WHITESPACE@88..89 " " + WORD@89..91 "J." + R_CURLY@91..92 "}" + COMMA@92..93 "," + WHITESPACE@93..98 "\n " + FIELD@98..134 + NAME@98..103 "title" + WHITESPACE@103..104 " " + EQ@104..105 "=" + WHITESPACE@105..106 " " + CURLY_GROUP@106..133 + L_CURLY@106..107 "{" + WORD@107..111 "Data" + WHITESPACE@111..112 " " + WORD@112..123 "Clustering:" + WHITESPACE@123..124 " " + WORD@124..125 "A" + WHITESPACE@125..126 " " + WORD@126..132 "Review" + R_CURLY@132..133 "}" + COMMA@133..134 "," + WHITESPACE@134..139 "\n " + FIELD@139..153 + NAME@139..143 "year" + WHITESPACE@143..144 " " + EQ@144..145 "=" + WHITESPACE@145..146 " " + CURLY_GROUP@146..152 + L_CURLY@146..147 "{" + INTEGER@147..151 "1999" + R_CURLY@151..152 "}" + COMMA@152..153 "," + WHITESPACE@153..158 "\n " + FIELD@158..184 + NAME@158..168 "issue_date" + WHITESPACE@168..169 " " + EQ@169..170 "=" + WHITESPACE@170..171 " " + CURLY_GROUP@171..183 + L_CURLY@171..172 "{" + WORD@172..177 "Sept." + WHITESPACE@177..178 " " + INTEGER@178..182 "1999" + R_CURLY@182..183 "}" + COMMA@183..184 "," + WHITESPACE@184..189 "\n " + FIELD@189..239 + NAME@189..198 "publisher" + WHITESPACE@198..199 " " + EQ@199..200 "=" + WHITESPACE@200..201 " " + CURLY_GROUP@201..238 + L_CURLY@201..202 "{" + WORD@202..213 "Association" + WHITESPACE@213..214 " " + WORD@214..217 "for" + WHITESPACE@217..218 " " + WORD@218..227 "Computing" + WHITESPACE@227..228 " " + WORD@228..237 "Machinery" + R_CURLY@237..238 "}" + COMMA@238..239 "," + WHITESPACE@239..244 "\n " + FIELD@244..274 + NAME@244..251 "address" + WHITESPACE@251..252 " " + EQ@252..253 "=" + WHITESPACE@253..254 " " + CURLY_GROUP@254..273 + L_CURLY@254..255 "{" + WORD@255..258 "New" + WHITESPACE@258..259 " " + WORD@259..263 "York" + COMMA@263..264 "," + WHITESPACE@264..265 " " + WORD@265..267 "NY" + COMMA@267..268 "," + WHITESPACE@268..269 " " + WORD@269..272 "USA" + R_CURLY@272..273 "}" + COMMA@273..274 "," + WHITESPACE@274..279 "\n " + FIELD@279..293 + NAME@279..285 "volume" + WHITESPACE@285..286 " " + EQ@286..287 "=" + WHITESPACE@287..288 " " + CURLY_GROUP@288..292 + L_CURLY@288..289 "{" + INTEGER@289..291 "31" + R_CURLY@291..292 "}" + COMMA@292..293 "," + WHITESPACE@293..298 "\n " + FIELD@298..311 + NAME@298..304 "number" + WHITESPACE@304..305 " " + EQ@305..306 "=" + WHITESPACE@306..307 " " + CURLY_GROUP@307..310 + L_CURLY@307..308 "{" + INTEGER@308..309 "3" + R_CURLY@309..310 "}" + COMMA@310..311 "," + WHITESPACE@311..316 "\n " + FIELD@316..335 + NAME@316..320 "issn" + WHITESPACE@320..321 " " + EQ@321..322 "=" + WHITESPACE@322..323 " " + CURLY_GROUP@323..334 + L_CURLY@323..324 "{" + WORD@324..333 "0360-0300" + R_CURLY@333..334 "}" + COMMA@334..335 "," + WHITESPACE@335..340 "\n " + FIELD@340..386 + NAME@340..343 "url" + WHITESPACE@343..344 " " + EQ@344..345 "=" + WHITESPACE@345..346 " " + CURLY_GROUP@346..385 + L_CURLY@346..347 "{" + WORD@347..384 "https://doi.org/10.11 ..." + R_CURLY@384..385 "}" + COMMA@385..386 "," + WHITESPACE@386..391 "\n " + FIELD@391..421 + NAME@391..394 "doi" + WHITESPACE@394..395 " " + EQ@395..396 "=" + WHITESPACE@396..397 " " + CURLY_GROUP@397..420 + L_CURLY@397..398 "{" + WORD@398..419 "10.1145/331499.331504" + R_CURLY@419..420 "}" + COMMA@420..421 "," + WHITESPACE@421..426 "\n " + FIELD@426..456 + NAME@426..433 "journal" + WHITESPACE@433..434 " " + EQ@434..435 "=" + WHITESPACE@435..436 " " + CURLY_GROUP@436..455 + L_CURLY@436..437 "{" + WORD@437..440 "ACM" + WHITESPACE@440..441 " " + WORD@441..448 "Comput." + WHITESPACE@448..449 " " + WORD@449..454 "Surv." + R_CURLY@454..455 "}" + COMMA@455..456 "," + WHITESPACE@456..461 "\n " + FIELD@461..475 + NAME@461..466 "month" + WHITESPACE@466..467 " " + EQ@467..468 "=" + WHITESPACE@468..469 " " + CURLY_GROUP@469..474 + L_CURLY@469..470 "{" + WORD@470..473 "sep" + R_CURLY@473..474 "}" + COMMA@474..475 "," + WHITESPACE@475..480 "\n " + FIELD@480..498 + NAME@480..485 "pages" + WHITESPACE@485..486 " " + EQ@486..487 "=" + WHITESPACE@487..488 " " + CURLY_GROUP@488..497 + L_CURLY@488..489 "{" + WORD@489..496 "264-323" + R_CURLY@496..497 "}" + COMMA@497..498 "," + WHITESPACE@498..503 "\n " + FIELD@503..519 + NAME@503..511 "numpages" + WHITESPACE@511..512 " " + EQ@512..513 "=" + WHITESPACE@513..514 " " + CURLY_GROUP@514..518 + L_CURLY@514..515 "{" + INTEGER@515..517 "60" + R_CURLY@517..518 "}" + COMMA@518..519 "," + WHITESPACE@519..524 "\n " + FIELD@524..673 + NAME@524..532 "keywords" + WHITESPACE@532..533 " " + EQ@533..534 "=" + WHITESPACE@534..535 " " + CURLY_GROUP@535..672 + L_CURLY@535..536 "{" + WORD@536..547 "incremental" + WHITESPACE@547..548 " " + WORD@548..558 "clustering" + COMMA@558..559 "," + WHITESPACE@559..560 " " + WORD@560..570 "clustering" + WHITESPACE@570..571 " " + WORD@571..583 "applications" + COMMA@583..584 "," + WHITESPACE@584..585 " " + WORD@585..596 "exploratory" + WHITESPACE@596..597 " " + WORD@597..601 "data" + WHITESPACE@601..602 " " + WORD@602..610 "analysis" + COMMA@610..611 "," + WHITESPACE@611..612 " " + WORD@612..619 "cluster" + WHITESPACE@619..620 " " + WORD@620..628 "analysis" + COMMA@628..629 "," + WHITESPACE@629..630 " " + WORD@630..640 "similarity" + WHITESPACE@640..641 " " + WORD@641..648 "indices" + COMMA@648..649 "," + WHITESPACE@649..650 " " + WORD@650..662 "unsupervised" + WHITESPACE@662..663 " " + WORD@663..671 "learning" + R_CURLY@671..672 "}" + WHITESPACE@672..673 "\n" + R_DELIM@673..674 "}" + + "#]], + ); +} + +#[test] +fn test_kastenholz_2006() { + check( + r#"@string{jchph = {J.~Chem. Phys.}} + +@article{kastenholz, + author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, + title = {Computation of methodology\hyphen independent ionic solvation + free energies from molecular simulations}, + journaltitle = jchph, + date = 2006, + subtitle = {{I}. {The} electrostatic potential in molecular liquids}, + volume = 124, + eid = 124106, + doi = {10.1063/1.2172593}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Computation of ionic solvation free energies}, + annotation = {An \texttt{article} entry with an \texttt{eid} and a + \texttt{doi} field. Note that the \textsc{doi} is transformed + into a clickable link if \texttt{hyperref} support has been + enabled}, +}"#, + expect![[r#" + ROOT@0..898 + STRING@0..35 + TYPE@0..7 "@string" + L_DELIM@7..8 "{" + NAME@8..13 "jchph" + WHITESPACE@13..16 " " + EQ@16..17 "=" + WHITESPACE@17..18 " " + CURLY_GROUP@18..34 + L_CURLY@18..19 "{" + WORD@19..21 "J." + NBSP@21..22 "~" + WORD@22..27 "Chem." + WHITESPACE@27..28 " " + WORD@28..33 "Phys." + R_CURLY@33..34 "}" + R_DELIM@34..35 "}" + JUNK@35..37 "\n\n" + ENTRY@37..898 + TYPE@37..45 "@article" + L_DELIM@45..46 "{" + NAME@46..56 "kastenholz" + COMMA@56..57 "," + WHITESPACE@57..62 "\n " + FIELD@62..130 + NAME@62..68 "author" + WHITESPACE@68..75 " " + EQ@75..76 "=" + WHITESPACE@76..77 " " + CURLY_GROUP@77..129 + L_CURLY@77..78 "{" + WORD@78..88 "Kastenholz" + COMMA@88..89 "," + WHITESPACE@89..90 " " + WORD@90..92 "M." + WHITESPACE@92..93 " " + WORD@93..95 "A." + WHITESPACE@95..96 " " + WORD@96..99 "and" + WHITESPACE@99..100 " " + WORD@100..101 "H" + CURLY_GROUP@101..106 + L_CURLY@101..102 "{" + ACCENT@102..105 + ACCENT_NAME@102..104 "\\\"" + WORD@104..105 "u" + R_CURLY@105..106 "}" + WORD@106..115 "nenberger" + COMMA@115..116 "," + WHITESPACE@116..117 " " + WORD@117..125 "Philippe" + WHITESPACE@125..126 " " + WORD@126..128 "H." + R_CURLY@128..129 "}" + COMMA@129..130 "," + WHITESPACE@130..135 "\n " + FIELD@135..275 + NAME@135..140 "title" + WHITESPACE@140..148 " " + EQ@148..149 "=" + WHITESPACE@149..150 " " + CURLY_GROUP@150..274 + L_CURLY@150..151 "{" + WORD@151..162 "Computation" + WHITESPACE@162..163 " " + WORD@163..165 "of" + WHITESPACE@165..166 " " + WORD@166..177 "methodology" + COMMAND@177..184 + COMMAND_NAME@177..184 "\\hyphen" + WHITESPACE@184..185 " " + WORD@185..196 "independent" + WHITESPACE@196..197 " " + WORD@197..202 "ionic" + WHITESPACE@202..203 " " + WORD@203..212 "solvation" + WHITESPACE@212..233 "\n " + WORD@233..237 "free" + WHITESPACE@237..238 " " + WORD@238..246 "energies" + WHITESPACE@246..247 " " + WORD@247..251 "from" + WHITESPACE@251..252 " " + WORD@252..261 "molecular" + WHITESPACE@261..262 " " + WORD@262..273 "simulations" + R_CURLY@273..274 "}" + COMMA@274..275 "," + WHITESPACE@275..280 "\n " + FIELD@280..301 + NAME@280..292 "journaltitle" + WHITESPACE@292..293 " " + EQ@293..294 "=" + WHITESPACE@294..295 " " + LITERAL@295..300 + NAME@295..300 "jchph" + COMMA@300..301 "," + WHITESPACE@301..306 "\n " + FIELD@306..326 + NAME@306..310 "date" + WHITESPACE@310..319 " " + EQ@319..320 "=" + WHITESPACE@320..321 " " + LITERAL@321..325 + INTEGER@321..325 "2006" + COMMA@325..326 "," + WHITESPACE@326..331 "\n " + FIELD@331..404 + NAME@331..339 "subtitle" + WHITESPACE@339..344 " " + EQ@344..345 "=" + WHITESPACE@345..346 " " + CURLY_GROUP@346..403 + L_CURLY@346..347 "{" + CURLY_GROUP@347..350 + L_CURLY@347..348 "{" + WORD@348..349 "I" + R_CURLY@349..350 "}" + WORD@350..351 "." + WHITESPACE@351..352 " " + CURLY_GROUP@352..357 + L_CURLY@352..353 "{" + WORD@353..356 "The" + R_CURLY@356..357 "}" + WHITESPACE@357..358 " " + WORD@358..371 "electrostatic" + WHITESPACE@371..372 " " + WORD@372..381 "potential" + WHITESPACE@381..382 " " + WORD@382..384 "in" + WHITESPACE@384..385 " " + WORD@385..394 "molecular" + WHITESPACE@394..395 " " + WORD@395..402 "liquids" + R_CURLY@402..403 "}" + COMMA@403..404 "," + WHITESPACE@404..409 "\n " + FIELD@409..428 + NAME@409..415 "volume" + WHITESPACE@415..422 " " + EQ@422..423 "=" + WHITESPACE@423..424 " " + LITERAL@424..427 + INTEGER@424..427 "124" + COMMA@427..428 "," + WHITESPACE@428..433 "\n " + FIELD@433..455 + NAME@433..436 "eid" + WHITESPACE@436..446 " " + EQ@446..447 "=" + WHITESPACE@447..448 " " + LITERAL@448..454 + INTEGER@448..454 "124106" + COMMA@454..455 "," + WHITESPACE@455..460 "\n " + FIELD@460..495 + NAME@460..463 "doi" + WHITESPACE@463..473 " " + EQ@473..474 "=" + WHITESPACE@474..475 " " + CURLY_GROUP@475..494 + L_CURLY@475..476 "{" + WORD@476..493 "10.1063/1.2172593" + R_CURLY@493..494 "}" + COMMA@494..495 "," + WHITESPACE@495..500 "\n " + FIELD@500..525 + NAME@500..506 "langid" + WHITESPACE@506..513 " " + EQ@513..514 "=" + WHITESPACE@514..515 " " + CURLY_GROUP@515..524 + L_CURLY@515..516 "{" + WORD@516..523 "english" + R_CURLY@523..524 "}" + COMMA@524..525 "," + WHITESPACE@525..530 "\n " + FIELD@530..564 + NAME@530..540 "langidopts" + WHITESPACE@540..543 " " + EQ@543..544 "=" + WHITESPACE@544..545 " " + CURLY_GROUP@545..563 + L_CURLY@545..546 "{" + WORD@546..562 "variant=american" + R_CURLY@562..563 "}" + COMMA@563..564 "," + WHITESPACE@564..569 "\n " + FIELD@569..631 + NAME@569..579 "indextitle" + WHITESPACE@579..582 " " + EQ@582..583 "=" + WHITESPACE@583..584 " " + CURLY_GROUP@584..630 + L_CURLY@584..585 "{" + WORD@585..596 "Computation" + WHITESPACE@596..597 " " + WORD@597..599 "of" + WHITESPACE@599..600 " " + WORD@600..605 "ionic" + WHITESPACE@605..606 " " + WORD@606..615 "solvation" + WHITESPACE@615..616 " " + WORD@616..620 "free" + WHITESPACE@620..621 " " + WORD@621..629 "energies" + R_CURLY@629..630 "}" + COMMA@630..631 "," + WHITESPACE@631..636 "\n " + FIELD@636..896 + NAME@636..646 "annotation" + WHITESPACE@646..649 " " + EQ@649..650 "=" + WHITESPACE@650..651 " " + CURLY_GROUP@651..895 + L_CURLY@651..652 "{" + WORD@652..654 "An" + WHITESPACE@654..655 " " + COMMAND@655..662 + COMMAND_NAME@655..662 "\\texttt" + CURLY_GROUP@662..671 + L_CURLY@662..663 "{" + WORD@663..670 "article" + R_CURLY@670..671 "}" + WHITESPACE@671..672 " " + WORD@672..677 "entry" + WHITESPACE@677..678 " " + WORD@678..682 "with" + WHITESPACE@682..683 " " + WORD@683..685 "an" + WHITESPACE@685..686 " " + COMMAND@686..693 + COMMAND_NAME@686..693 "\\texttt" + CURLY_GROUP@693..698 + L_CURLY@693..694 "{" + WORD@694..697 "eid" + R_CURLY@697..698 "}" + WHITESPACE@698..699 " " + WORD@699..702 "and" + WHITESPACE@702..703 " " + WORD@703..704 "a" + WHITESPACE@704..725 "\n " + COMMAND@725..732 + COMMAND_NAME@725..732 "\\texttt" + CURLY_GROUP@732..737 + L_CURLY@732..733 "{" + WORD@733..736 "doi" + R_CURLY@736..737 "}" + WHITESPACE@737..738 " " + WORD@738..744 "field." + WHITESPACE@744..745 " " + WORD@745..749 "Note" + WHITESPACE@749..750 " " + WORD@750..754 "that" + WHITESPACE@754..755 " " + WORD@755..758 "the" + WHITESPACE@758..759 " " + COMMAND@759..766 + COMMAND_NAME@759..766 "\\textsc" + CURLY_GROUP@766..771 + L_CURLY@766..767 "{" + WORD@767..770 "doi" + R_CURLY@770..771 "}" + WHITESPACE@771..772 " " + WORD@772..774 "is" + WHITESPACE@774..775 " " + WORD@775..786 "transformed" + WHITESPACE@786..807 "\n " + WORD@807..811 "into" + WHITESPACE@811..812 " " + WORD@812..813 "a" + WHITESPACE@813..814 " " + WORD@814..823 "clickable" + WHITESPACE@823..824 " " + WORD@824..828 "link" + WHITESPACE@828..829 " " + WORD@829..831 "if" + WHITESPACE@831..832 " " + COMMAND@832..839 + COMMAND_NAME@832..839 "\\texttt" + CURLY_GROUP@839..849 + L_CURLY@839..840 "{" + WORD@840..848 "hyperref" + R_CURLY@848..849 "}" + WHITESPACE@849..850 " " + WORD@850..857 "support" + WHITESPACE@857..858 " " + WORD@858..861 "has" + WHITESPACE@861..862 " " + WORD@862..866 "been" + WHITESPACE@866..887 "\n " + WORD@887..894 "enabled" + R_CURLY@894..895 "}" + COMMA@895..896 "," + WHITESPACE@896..897 "\n" + R_DELIM@897..898 "}" + + "#]], + ); +} + +#[test] +fn test_knuth_1984() { + check( + r#"@book{knuth:ct:a, + author = {Knuth, Donald E.}, + title = {The {\TeX book}}, + date = 1984, + maintitle = {Computers \& Typesetting}, + volume = {A}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting A}, + indexsorttitle= {The TeXbook}, + indextitle = {\protect\TeX book, The}, + shorttitle = {\TeX book}, + annotation = {The first volume of a five-volume book. Note the + \texttt{sorttitle} field. We want this + volume to be listed after the entry referring to the entire + five-volume set. Also note the \texttt{indextitle} and + \texttt{indexsorttitle} fields. Indexing packages that don't + generate robust index entries require some control sequences + to be protected from expansion}, +}"#, + expect![[r#" + ROOT@0..993 + ENTRY@0..993 + TYPE@0..5 "@book" + L_DELIM@5..6 "{" + NAME@6..16 "knuth:ct:a" + COMMA@16..17 "," + WHITESPACE@17..22 "\n " + FIELD@22..56 + NAME@22..28 "author" + WHITESPACE@28..35 " " + EQ@35..36 "=" + WHITESPACE@36..37 " " + CURLY_GROUP@37..55 + L_CURLY@37..38 "{" + WORD@38..43 "Knuth" + COMMA@43..44 "," + WHITESPACE@44..45 " " + WORD@45..51 "Donald" + WHITESPACE@51..52 " " + WORD@52..54 "E." + R_CURLY@54..55 "}" + COMMA@55..56 "," + WHITESPACE@56..61 "\n " + FIELD@61..94 + NAME@61..66 "title" + WHITESPACE@66..74 " " + EQ@74..75 "=" + WHITESPACE@75..76 " " + CURLY_GROUP@76..93 + L_CURLY@76..77 "{" + WORD@77..80 "The" + WHITESPACE@80..81 " " + CURLY_GROUP@81..92 + L_CURLY@81..82 "{" + COMMAND@82..86 + COMMAND_NAME@82..86 "\\TeX" + WHITESPACE@86..87 " " + WORD@87..91 "book" + R_CURLY@91..92 "}" + R_CURLY@92..93 "}" + COMMA@93..94 "," + WHITESPACE@94..99 "\n " + FIELD@99..119 + NAME@99..103 "date" + WHITESPACE@103..112 " " + EQ@112..113 "=" + WHITESPACE@113..114 " " + LITERAL@114..118 + INTEGER@114..118 "1984" + COMMA@118..119 "," + WHITESPACE@119..124 "\n " + FIELD@124..166 + NAME@124..133 "maintitle" + WHITESPACE@133..137 " " + EQ@137..138 "=" + WHITESPACE@138..139 " " + CURLY_GROUP@139..165 + L_CURLY@139..140 "{" + WORD@140..149 "Computers" + WHITESPACE@149..150 " " + COMMAND@150..152 + COMMAND_NAME@150..152 "\\&" + WHITESPACE@152..153 " " + WORD@153..164 "Typesetting" + R_CURLY@164..165 "}" + COMMA@165..166 "," + WHITESPACE@166..171 "\n " + FIELD@171..190 + NAME@171..177 "volume" + WHITESPACE@177..184 " " + EQ@184..185 "=" + WHITESPACE@185..186 " " + CURLY_GROUP@186..189 + L_CURLY@186..187 "{" + WORD@187..188 "A" + R_CURLY@188..189 "}" + COMMA@189..190 "," + WHITESPACE@190..195 "\n " + FIELD@195..227 + NAME@195..204 "publisher" + WHITESPACE@204..208 " " + EQ@208..209 "=" + WHITESPACE@209..210 " " + CURLY_GROUP@210..226 + L_CURLY@210..211 "{" + WORD@211..225 "Addison-Wesley" + R_CURLY@225..226 "}" + COMMA@226..227 "," + WHITESPACE@227..232 "\n " + FIELD@232..264 + NAME@232..240 "location" + WHITESPACE@240..245 " " + EQ@245..246 "=" + WHITESPACE@246..247 " " + CURLY_GROUP@247..263 + L_CURLY@247..248 "{" + WORD@248..255 "Reading" + COMMA@255..256 "," + WHITESPACE@256..257 " " + WORD@257..262 "Mass." + R_CURLY@262..263 "}" + COMMA@263..264 "," + WHITESPACE@264..269 "\n " + FIELD@269..294 + NAME@269..275 "langid" + WHITESPACE@275..282 " " + EQ@282..283 "=" + WHITESPACE@283..284 " " + CURLY_GROUP@284..293 + L_CURLY@284..285 "{" + WORD@285..292 "english" + R_CURLY@292..293 "}" + COMMA@293..294 "," + WHITESPACE@294..299 "\n " + FIELD@299..333 + NAME@299..309 "langidopts" + WHITESPACE@309..312 " " + EQ@312..313 "=" + WHITESPACE@313..314 " " + CURLY_GROUP@314..332 + L_CURLY@314..315 "{" + WORD@315..331 "variant=american" + R_CURLY@331..332 "}" + COMMA@332..333 "," + WHITESPACE@333..338 "\n " + FIELD@338..381 + NAME@338..347 "sorttitle" + WHITESPACE@347..351 " " + EQ@351..352 "=" + WHITESPACE@352..353 " " + CURLY_GROUP@353..380 + L_CURLY@353..354 "{" + WORD@354..363 "Computers" + WHITESPACE@363..364 " " + WORD@364..365 "&" + WHITESPACE@365..366 " " + WORD@366..377 "Typesetting" + WHITESPACE@377..378 " " + WORD@378..379 "A" + R_CURLY@379..380 "}" + COMMA@380..381 "," + WHITESPACE@381..386 "\n " + FIELD@386..416 + NAME@386..400 "indexsorttitle" + EQ@400..401 "=" + WHITESPACE@401..402 " " + CURLY_GROUP@402..415 + L_CURLY@402..403 "{" + WORD@403..406 "The" + WHITESPACE@406..407 " " + WORD@407..414 "TeXbook" + R_CURLY@414..415 "}" + COMMA@415..416 "," + WHITESPACE@416..421 "\n " + FIELD@421..461 + NAME@421..431 "indextitle" + WHITESPACE@431..434 " " + EQ@434..435 "=" + WHITESPACE@435..436 " " + CURLY_GROUP@436..460 + L_CURLY@436..437 "{" + COMMAND@437..445 + COMMAND_NAME@437..445 "\\protect" + COMMAND@445..449 + COMMAND_NAME@445..449 "\\TeX" + WHITESPACE@449..450 " " + WORD@450..454 "book" + COMMA@454..455 "," + WHITESPACE@455..456 " " + WORD@456..459 "The" + R_CURLY@459..460 "}" + COMMA@460..461 "," + WHITESPACE@461..466 "\n " + FIELD@466..493 + NAME@466..476 "shorttitle" + WHITESPACE@476..479 " " + EQ@479..480 "=" + WHITESPACE@480..481 " " + CURLY_GROUP@481..492 + L_CURLY@481..482 "{" + COMMAND@482..486 + COMMAND_NAME@482..486 "\\TeX" + WHITESPACE@486..487 " " + WORD@487..491 "book" + R_CURLY@491..492 "}" + COMMA@492..493 "," + WHITESPACE@493..498 "\n " + FIELD@498..991 + NAME@498..508 "annotation" + WHITESPACE@508..511 " " + EQ@511..512 "=" + WHITESPACE@512..513 " " + CURLY_GROUP@513..990 + L_CURLY@513..514 "{" + WORD@514..517 "The" + WHITESPACE@517..518 " " + WORD@518..523 "first" + WHITESPACE@523..524 " " + WORD@524..530 "volume" + WHITESPACE@530..531 " " + WORD@531..533 "of" + WHITESPACE@533..534 " " + WORD@534..535 "a" + WHITESPACE@535..536 " " + WORD@536..547 "five-volume" + WHITESPACE@547..548 " " + WORD@548..553 "book." + WHITESPACE@553..554 " " + WORD@554..558 "Note" + WHITESPACE@558..559 " " + WORD@559..562 "the" + WHITESPACE@562..583 "\n " + COMMAND@583..590 + COMMAND_NAME@583..590 "\\texttt" + CURLY_GROUP@590..601 + L_CURLY@590..591 "{" + WORD@591..600 "sorttitle" + R_CURLY@600..601 "}" + WHITESPACE@601..602 " " + WORD@602..608 "field." + WHITESPACE@608..609 " " + WORD@609..611 "We" + WHITESPACE@611..612 " " + WORD@612..616 "want" + WHITESPACE@616..617 " " + WORD@617..621 "this" + WHITESPACE@621..642 "\n " + WORD@642..648 "volume" + WHITESPACE@648..649 " " + WORD@649..651 "to" + WHITESPACE@651..652 " " + WORD@652..654 "be" + WHITESPACE@654..655 " " + WORD@655..661 "listed" + WHITESPACE@661..662 " " + WORD@662..667 "after" + WHITESPACE@667..668 " " + WORD@668..671 "the" + WHITESPACE@671..672 " " + WORD@672..677 "entry" + WHITESPACE@677..678 " " + WORD@678..687 "referring" + WHITESPACE@687..688 " " + WORD@688..690 "to" + WHITESPACE@690..691 " " + WORD@691..694 "the" + WHITESPACE@694..695 " " + WORD@695..701 "entire" + WHITESPACE@701..722 "\n " + WORD@722..733 "five-volume" + WHITESPACE@733..734 " " + WORD@734..738 "set." + WHITESPACE@738..739 " " + WORD@739..743 "Also" + WHITESPACE@743..744 " " + WORD@744..748 "note" + WHITESPACE@748..749 " " + WORD@749..752 "the" + WHITESPACE@752..753 " " + COMMAND@753..760 + COMMAND_NAME@753..760 "\\texttt" + CURLY_GROUP@760..772 + L_CURLY@760..761 "{" + WORD@761..771 "indextitle" + R_CURLY@771..772 "}" + WHITESPACE@772..773 " " + WORD@773..776 "and" + WHITESPACE@776..797 "\n " + COMMAND@797..804 + COMMAND_NAME@797..804 "\\texttt" + CURLY_GROUP@804..820 + L_CURLY@804..805 "{" + WORD@805..819 "indexsorttitle" + R_CURLY@819..820 "}" + WHITESPACE@820..821 " " + WORD@821..828 "fields." + WHITESPACE@828..829 " " + WORD@829..837 "Indexing" + WHITESPACE@837..838 " " + WORD@838..846 "packages" + WHITESPACE@846..847 " " + WORD@847..851 "that" + WHITESPACE@851..852 " " + WORD@852..857 "don't" + WHITESPACE@857..878 "\n " + WORD@878..886 "generate" + WHITESPACE@886..887 " " + WORD@887..893 "robust" + WHITESPACE@893..894 " " + WORD@894..899 "index" + WHITESPACE@899..900 " " + WORD@900..907 "entries" + WHITESPACE@907..908 " " + WORD@908..915 "require" + WHITESPACE@915..916 " " + WORD@916..920 "some" + WHITESPACE@920..921 " " + WORD@921..928 "control" + WHITESPACE@928..929 " " + WORD@929..938 "sequences" + WHITESPACE@938..959 "\n " + WORD@959..961 "to" + WHITESPACE@961..962 " " + WORD@962..964 "be" + WHITESPACE@964..965 " " + WORD@965..974 "protected" + WHITESPACE@974..975 " " + WORD@975..979 "from" + WHITESPACE@979..980 " " + WORD@980..989 "expansion" + R_CURLY@989..990 "}" + COMMA@990..991 "," + WHITESPACE@991..992 "\n" + R_DELIM@992..993 "}" + + "#]], + ); +} + +#[test] +fn test_matuz_1990() { + check( + r#"@collection{matuz:doody, + editor = {Matuz, Roger}, + title = {Contemporary Literary Criticism}, + year = 1990, + volume = 61, + publisher = {Gale}, + location = {Detroit}, + pages = {204-208}, + langid = {english}, + langidopts = {variant=american}, + annotation = {A \texttt{collection} entry providing the excerpt information + for the \texttt{doody} entry. Note the format of the + \texttt{pages} field}, +}"#, + expect![[r#" + ROOT@0..517 + ENTRY@0..517 + TYPE@0..11 "@collection" + L_DELIM@11..12 "{" + NAME@12..23 "matuz:doody" + COMMA@23..24 "," + WHITESPACE@24..29 "\n " + FIELD@29..59 + NAME@29..35 "editor" + WHITESPACE@35..42 " " + EQ@42..43 "=" + WHITESPACE@43..44 " " + CURLY_GROUP@44..58 + L_CURLY@44..45 "{" + WORD@45..50 "Matuz" + COMMA@50..51 "," + WHITESPACE@51..52 " " + WORD@52..57 "Roger" + R_CURLY@57..58 "}" + COMMA@58..59 "," + WHITESPACE@59..64 "\n " + FIELD@64..113 + NAME@64..69 "title" + WHITESPACE@69..77 " " + EQ@77..78 "=" + WHITESPACE@78..79 " " + CURLY_GROUP@79..112 + L_CURLY@79..80 "{" + WORD@80..92 "Contemporary" + WHITESPACE@92..93 " " + WORD@93..101 "Literary" + WHITESPACE@101..102 " " + WORD@102..111 "Criticism" + R_CURLY@111..112 "}" + COMMA@112..113 "," + WHITESPACE@113..118 "\n " + FIELD@118..138 + NAME@118..122 "year" + WHITESPACE@122..131 " " + EQ@131..132 "=" + WHITESPACE@132..133 " " + LITERAL@133..137 + INTEGER@133..137 "1990" + COMMA@137..138 "," + WHITESPACE@138..143 "\n " + FIELD@143..161 + NAME@143..149 "volume" + WHITESPACE@149..156 " " + EQ@156..157 "=" + WHITESPACE@157..158 " " + LITERAL@158..160 + INTEGER@158..160 "61" + COMMA@160..161 "," + WHITESPACE@161..166 "\n " + FIELD@166..188 + NAME@166..175 "publisher" + WHITESPACE@175..179 " " + EQ@179..180 "=" + WHITESPACE@180..181 " " + CURLY_GROUP@181..187 + L_CURLY@181..182 "{" + WORD@182..186 "Gale" + R_CURLY@186..187 "}" + COMMA@187..188 "," + WHITESPACE@188..193 "\n " + FIELD@193..218 + NAME@193..201 "location" + WHITESPACE@201..206 " " + EQ@206..207 "=" + WHITESPACE@207..208 " " + CURLY_GROUP@208..217 + L_CURLY@208..209 "{" + WORD@209..216 "Detroit" + R_CURLY@216..217 "}" + COMMA@217..218 "," + WHITESPACE@218..223 "\n " + FIELD@223..248 + NAME@223..228 "pages" + WHITESPACE@228..236 " " + EQ@236..237 "=" + WHITESPACE@237..238 " " + CURLY_GROUP@238..247 + L_CURLY@238..239 "{" + WORD@239..246 "204-208" + R_CURLY@246..247 "}" + COMMA@247..248 "," + WHITESPACE@248..253 "\n " + FIELD@253..278 + NAME@253..259 "langid" + WHITESPACE@259..266 " " + EQ@266..267 "=" + WHITESPACE@267..268 " " + CURLY_GROUP@268..277 + L_CURLY@268..269 "{" + WORD@269..276 "english" + R_CURLY@276..277 "}" + COMMA@277..278 "," + WHITESPACE@278..283 "\n " + FIELD@283..317 + NAME@283..293 "langidopts" + WHITESPACE@293..296 " " + EQ@296..297 "=" + WHITESPACE@297..298 " " + CURLY_GROUP@298..316 + L_CURLY@298..299 "{" + WORD@299..315 "variant=american" + R_CURLY@315..316 "}" + COMMA@316..317 "," + WHITESPACE@317..322 "\n " + FIELD@322..515 + NAME@322..332 "annotation" + WHITESPACE@332..335 " " + EQ@335..336 "=" + WHITESPACE@336..337 " " + CURLY_GROUP@337..514 + L_CURLY@337..338 "{" + WORD@338..339 "A" + WHITESPACE@339..340 " " + COMMAND@340..347 + COMMAND_NAME@340..347 "\\texttt" + CURLY_GROUP@347..359 + L_CURLY@347..348 "{" + WORD@348..358 "collection" + R_CURLY@358..359 "}" + WHITESPACE@359..360 " " + WORD@360..365 "entry" + WHITESPACE@365..366 " " + WORD@366..375 "providing" + WHITESPACE@375..376 " " + WORD@376..379 "the" + WHITESPACE@379..380 " " + WORD@380..387 "excerpt" + WHITESPACE@387..388 " " + WORD@388..399 "information" + WHITESPACE@399..420 "\n " + WORD@420..423 "for" + WHITESPACE@423..424 " " + WORD@424..427 "the" + WHITESPACE@427..428 " " + COMMAND@428..435 + COMMAND_NAME@428..435 "\\texttt" + CURLY_GROUP@435..442 + L_CURLY@435..436 "{" + WORD@436..441 "doody" + R_CURLY@441..442 "}" + WHITESPACE@442..443 " " + WORD@443..449 "entry." + WHITESPACE@449..450 " " + WORD@450..454 "Note" + WHITESPACE@454..455 " " + WORD@455..458 "the" + WHITESPACE@458..459 " " + WORD@459..465 "format" + WHITESPACE@465..466 " " + WORD@466..468 "of" + WHITESPACE@468..469 " " + WORD@469..472 "the" + WHITESPACE@472..493 "\n " + COMMAND@493..500 + COMMAND_NAME@493..500 "\\texttt" + CURLY_GROUP@500..507 + L_CURLY@500..501 "{" + WORD@501..506 "pages" + R_CURLY@506..507 "}" + WHITESPACE@507..508 " " + WORD@508..513 "field" + R_CURLY@513..514 "}" + COMMA@514..515 "," + WHITESPACE@515..516 "\n" + R_DELIM@516..517 "}" + + "#]], + ); +} + +#[test] +fn test_nietzsche_1998() { + check( + r#"@string{dtv = {Deutscher Taschenbuch-Verlag}} + +@mvbook{nietzsche:ksa, + author = {Nietzsche, Friedrich}, + title = {S{\"a}mtliche Werke}, + date = 1988, + editor = {Colli, Giorgio and Montinari, Mazzino}, + edition = 2, + volumes = 15, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + langid = {german}, + sorttitle = {Werke-00-000}, + indexsorttitle= {Samtliche Werke}, + subtitle = {Kritische Studienausgabe}, + annotation = {The critical edition of Nietzsche's works. This is a + \texttt{mvbook} entry referring to a 15-volume work as a + whole. Note the \texttt{volumes} field and the format of the + \texttt{publisher} and \texttt{location} fields in the + database file. Also note the \texttt{sorttitle} and + field which is used to fine-tune the + sorting order of the bibliography. We want this item listed + first in the bibliography}, +}"#, + expect![[r##" + ROOT@0..1112 + STRING@0..49 + TYPE@0..7 "@string" + L_DELIM@7..8 "{" + NAME@8..11 "dtv" + WHITESPACE@11..16 " " + EQ@16..17 "=" + WHITESPACE@17..18 " " + CURLY_GROUP@18..48 + L_CURLY@18..19 "{" + WORD@19..28 "Deutscher" + WHITESPACE@28..29 " " + WORD@29..47 "Taschenbuch-Verlag" + R_CURLY@47..48 "}" + R_DELIM@48..49 "}" + JUNK@49..51 "\n\n" + ENTRY@51..1112 + TYPE@51..58 "@mvbook" + L_DELIM@58..59 "{" + NAME@59..72 "nietzsche:ksa" + COMMA@72..73 "," + WHITESPACE@73..78 "\n " + FIELD@78..116 + NAME@78..84 "author" + WHITESPACE@84..91 " " + EQ@91..92 "=" + WHITESPACE@92..93 " " + CURLY_GROUP@93..115 + L_CURLY@93..94 "{" + WORD@94..103 "Nietzsche" + COMMA@103..104 "," + WHITESPACE@104..105 " " + WORD@105..114 "Friedrich" + R_CURLY@114..115 "}" + COMMA@115..116 "," + WHITESPACE@116..121 "\n " + FIELD@121..158 + NAME@121..126 "title" + WHITESPACE@126..134 " " + EQ@134..135 "=" + WHITESPACE@135..136 " " + CURLY_GROUP@136..157 + L_CURLY@136..137 "{" + WORD@137..138 "S" + CURLY_GROUP@138..143 + L_CURLY@138..139 "{" + ACCENT@139..142 + ACCENT_NAME@139..141 "\\\"" + WORD@141..142 "a" + R_CURLY@142..143 "}" + WORD@143..150 "mtliche" + WHITESPACE@150..151 " " + WORD@151..156 "Werke" + R_CURLY@156..157 "}" + COMMA@157..158 "," + WHITESPACE@158..163 "\n " + FIELD@163..183 + NAME@163..167 "date" + WHITESPACE@167..176 " " + EQ@176..177 "=" + WHITESPACE@177..178 " " + LITERAL@178..182 + INTEGER@178..182 "1988" + COMMA@182..183 "," + WHITESPACE@183..188 "\n " + FIELD@188..243 + NAME@188..194 "editor" + WHITESPACE@194..201 " " + EQ@201..202 "=" + WHITESPACE@202..203 " " + CURLY_GROUP@203..242 + L_CURLY@203..204 "{" + WORD@204..209 "Colli" + COMMA@209..210 "," + WHITESPACE@210..211 " " + WORD@211..218 "Giorgio" + WHITESPACE@218..219 " " + WORD@219..222 "and" + WHITESPACE@222..223 " " + WORD@223..232 "Montinari" + COMMA@232..233 "," + WHITESPACE@233..234 " " + WORD@234..241 "Mazzino" + R_CURLY@241..242 "}" + COMMA@242..243 "," + WHITESPACE@243..248 "\n " + FIELD@248..265 + NAME@248..255 "edition" + WHITESPACE@255..261 " " + EQ@261..262 "=" + WHITESPACE@262..263 " " + LITERAL@263..264 + INTEGER@263..264 "2" + COMMA@264..265 "," + WHITESPACE@265..270 "\n " + FIELD@270..288 + NAME@270..277 "volumes" + WHITESPACE@277..283 " " + EQ@283..284 "=" + WHITESPACE@284..285 " " + LITERAL@285..287 + INTEGER@285..287 "15" + COMMA@287..288 "," + WHITESPACE@288..293 "\n " + FIELD@293..339 + NAME@293..302 "publisher" + WHITESPACE@302..306 " " + EQ@306..307 "=" + WHITESPACE@307..308 " " + JOIN@308..338 + LITERAL@308..311 + NAME@308..311 "dtv" + WHITESPACE@311..312 " " + POUND@312..313 "#" + WHITESPACE@313..314 " " + CURLY_GROUP@314..338 + L_CURLY@314..315 "{" + WHITESPACE@315..316 " " + WORD@316..319 "and" + WHITESPACE@319..320 " " + WORD@320..326 "Walter" + WHITESPACE@326..327 " " + WORD@327..329 "de" + WHITESPACE@329..330 " " + WORD@330..337 "Gruyter" + R_CURLY@337..338 "}" + COMMA@338..339 "," + WHITESPACE@339..344 "\n " + FIELD@344..397 + NAME@344..352 "location" + WHITESPACE@352..357 " " + EQ@357..358 "=" + WHITESPACE@358..359 " " + CURLY_GROUP@359..396 + L_CURLY@359..360 "{" + WORD@360..361 "M" + CURLY_GROUP@361..366 + L_CURLY@361..362 "{" + ACCENT@362..365 + ACCENT_NAME@362..364 "\\\"" + WORD@364..365 "u" + R_CURLY@365..366 "}" + WORD@366..371 "nchen" + WHITESPACE@371..372 " " + WORD@372..375 "and" + WHITESPACE@375..376 " " + WORD@376..382 "Berlin" + WHITESPACE@382..383 " " + WORD@383..386 "and" + WHITESPACE@386..387 " " + WORD@387..390 "New" + WHITESPACE@390..391 " " + WORD@391..395 "York" + R_CURLY@395..396 "}" + COMMA@396..397 "," + WHITESPACE@397..402 "\n " + FIELD@402..426 + NAME@402..408 "langid" + WHITESPACE@408..415 " " + EQ@415..416 "=" + WHITESPACE@416..417 " " + CURLY_GROUP@417..425 + L_CURLY@417..418 "{" + WORD@418..424 "german" + R_CURLY@424..425 "}" + COMMA@425..426 "," + WHITESPACE@426..431 "\n " + FIELD@431..461 + NAME@431..440 "sorttitle" + WHITESPACE@440..444 " " + EQ@444..445 "=" + WHITESPACE@445..446 " " + CURLY_GROUP@446..460 + L_CURLY@446..447 "{" + WORD@447..459 "Werke-00-000" + R_CURLY@459..460 "}" + COMMA@460..461 "," + WHITESPACE@461..466 "\n " + FIELD@466..500 + NAME@466..480 "indexsorttitle" + EQ@480..481 "=" + WHITESPACE@481..482 " " + CURLY_GROUP@482..499 + L_CURLY@482..483 "{" + WORD@483..492 "Samtliche" + WHITESPACE@492..493 " " + WORD@493..498 "Werke" + R_CURLY@498..499 "}" + COMMA@499..500 "," + WHITESPACE@500..505 "\n " + FIELD@505..547 + NAME@505..513 "subtitle" + WHITESPACE@513..518 " " + EQ@518..519 "=" + WHITESPACE@519..520 " " + CURLY_GROUP@520..546 + L_CURLY@520..521 "{" + WORD@521..530 "Kritische" + WHITESPACE@530..531 " " + WORD@531..545 "Studienausgabe" + R_CURLY@545..546 "}" + COMMA@546..547 "," + WHITESPACE@547..552 "\n " + FIELD@552..1110 + NAME@552..562 "annotation" + WHITESPACE@562..565 " " + EQ@565..566 "=" + WHITESPACE@566..567 " " + CURLY_GROUP@567..1109 + L_CURLY@567..568 "{" + WORD@568..571 "The" + WHITESPACE@571..572 " " + WORD@572..580 "critical" + WHITESPACE@580..581 " " + WORD@581..588 "edition" + WHITESPACE@588..589 " " + WORD@589..591 "of" + WHITESPACE@591..592 " " + WORD@592..603 "Nietzsche's" + WHITESPACE@603..604 " " + WORD@604..610 "works." + WHITESPACE@610..611 " " + WORD@611..615 "This" + WHITESPACE@615..616 " " + WORD@616..618 "is" + WHITESPACE@618..619 " " + WORD@619..620 "a" + WHITESPACE@620..641 "\n " + COMMAND@641..648 + COMMAND_NAME@641..648 "\\texttt" + CURLY_GROUP@648..656 + L_CURLY@648..649 "{" + WORD@649..655 "mvbook" + R_CURLY@655..656 "}" + WHITESPACE@656..657 " " + WORD@657..662 "entry" + WHITESPACE@662..663 " " + WORD@663..672 "referring" + WHITESPACE@672..673 " " + WORD@673..675 "to" + WHITESPACE@675..676 " " + WORD@676..677 "a" + WHITESPACE@677..678 " " + WORD@678..687 "15-volume" + WHITESPACE@687..688 " " + WORD@688..692 "work" + WHITESPACE@692..693 " " + WORD@693..695 "as" + WHITESPACE@695..696 " " + WORD@696..697 "a" + WHITESPACE@697..718 "\n " + WORD@718..724 "whole." + WHITESPACE@724..725 " " + WORD@725..729 "Note" + WHITESPACE@729..730 " " + WORD@730..733 "the" + WHITESPACE@733..734 " " + COMMAND@734..741 + COMMAND_NAME@734..741 "\\texttt" + CURLY_GROUP@741..750 + L_CURLY@741..742 "{" + WORD@742..749 "volumes" + R_CURLY@749..750 "}" + WHITESPACE@750..751 " " + WORD@751..756 "field" + WHITESPACE@756..757 " " + WORD@757..760 "and" + WHITESPACE@760..761 " " + WORD@761..764 "the" + WHITESPACE@764..765 " " + WORD@765..771 "format" + WHITESPACE@771..772 " " + WORD@772..774 "of" + WHITESPACE@774..775 " " + WORD@775..778 "the" + WHITESPACE@778..799 "\n " + COMMAND@799..806 + COMMAND_NAME@799..806 "\\texttt" + CURLY_GROUP@806..817 + L_CURLY@806..807 "{" + WORD@807..816 "publisher" + R_CURLY@816..817 "}" + WHITESPACE@817..818 " " + WORD@818..821 "and" + WHITESPACE@821..822 " " + COMMAND@822..829 + COMMAND_NAME@822..829 "\\texttt" + CURLY_GROUP@829..839 + L_CURLY@829..830 "{" + WORD@830..838 "location" + R_CURLY@838..839 "}" + WHITESPACE@839..840 " " + WORD@840..846 "fields" + WHITESPACE@846..847 " " + WORD@847..849 "in" + WHITESPACE@849..850 " " + WORD@850..853 "the" + WHITESPACE@853..874 "\n " + WORD@874..882 "database" + WHITESPACE@882..883 " " + WORD@883..888 "file." + WHITESPACE@888..889 " " + WORD@889..893 "Also" + WHITESPACE@893..894 " " + WORD@894..898 "note" + WHITESPACE@898..899 " " + WORD@899..902 "the" + WHITESPACE@902..903 " " + COMMAND@903..910 + COMMAND_NAME@903..910 "\\texttt" + CURLY_GROUP@910..921 + L_CURLY@910..911 "{" + WORD@911..920 "sorttitle" + R_CURLY@920..921 "}" + WHITESPACE@921..922 " " + WORD@922..925 "and" + WHITESPACE@925..946 "\n " + WORD@946..951 "field" + WHITESPACE@951..952 " " + WORD@952..957 "which" + WHITESPACE@957..958 " " + WORD@958..960 "is" + WHITESPACE@960..961 " " + WORD@961..965 "used" + WHITESPACE@965..966 " " + WORD@966..968 "to" + WHITESPACE@968..969 " " + WORD@969..978 "fine-tune" + WHITESPACE@978..979 " " + WORD@979..982 "the" + WHITESPACE@982..1003 "\n " + WORD@1003..1010 "sorting" + WHITESPACE@1010..1011 " " + WORD@1011..1016 "order" + WHITESPACE@1016..1017 " " + WORD@1017..1019 "of" + WHITESPACE@1019..1020 " " + WORD@1020..1023 "the" + WHITESPACE@1023..1024 " " + WORD@1024..1037 "bibliography." + WHITESPACE@1037..1038 " " + WORD@1038..1040 "We" + WHITESPACE@1040..1041 " " + WORD@1041..1045 "want" + WHITESPACE@1045..1046 " " + WORD@1046..1050 "this" + WHITESPACE@1050..1051 " " + WORD@1051..1055 "item" + WHITESPACE@1055..1056 " " + WORD@1056..1062 "listed" + WHITESPACE@1062..1083 "\n " + WORD@1083..1088 "first" + WHITESPACE@1088..1089 " " + WORD@1089..1091 "in" + WHITESPACE@1091..1092 " " + WORD@1092..1095 "the" + WHITESPACE@1095..1096 " " + WORD@1096..1108 "bibliography" + R_CURLY@1108..1109 "}" + COMMA@1109..1110 "," + WHITESPACE@1110..1111 "\n" + R_DELIM@1111..1112 "}" + + "##]], + ); +} + +#[test] +fn test_rivest_1978() { + check( + r#"@article{10.1145/359340.359342, + author = {Rivest, R. L. and Shamir, A. and Adleman, L.}, + title = {A Method for Obtaining Digital Signatures and Public-Key Cryptosystems}, + year = {1978}, + issue_date = {Feb. 1978}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = {21}, + number = {2}, + issn = {0001-0782}, + url = {https://doi.org/10.1145/359340.359342}, + doi = {10.1145/359340.359342}, + journal = {Commun. ACM}, + month = {feb}, + pages = {120-126}, + numpages = {7}, +}"#, + expect![[r#" + ROOT@0..557 + ENTRY@0..557 + TYPE@0..8 "@article" + L_DELIM@8..9 "{" + NAME@9..30 "10.1145/359340.359342" + COMMA@30..31 "," + WHITESPACE@31..36 "\n " + FIELD@36..92 + NAME@36..42 "author" + WHITESPACE@42..43 " " + EQ@43..44 "=" + WHITESPACE@44..45 " " + CURLY_GROUP@45..91 + L_CURLY@45..46 "{" + WORD@46..52 "Rivest" + COMMA@52..53 "," + WHITESPACE@53..54 " " + WORD@54..56 "R." + WHITESPACE@56..57 " " + WORD@57..59 "L." + WHITESPACE@59..60 " " + WORD@60..63 "and" + WHITESPACE@63..64 " " + WORD@64..70 "Shamir" + COMMA@70..71 "," + WHITESPACE@71..72 " " + WORD@72..74 "A." + WHITESPACE@74..75 " " + WORD@75..78 "and" + WHITESPACE@78..79 " " + WORD@79..86 "Adleman" + COMMA@86..87 "," + WHITESPACE@87..88 " " + WORD@88..90 "L." + R_CURLY@90..91 "}" + COMMA@91..92 "," + WHITESPACE@92..97 "\n " + FIELD@97..178 + NAME@97..102 "title" + WHITESPACE@102..103 " " + EQ@103..104 "=" + WHITESPACE@104..105 " " + CURLY_GROUP@105..177 + L_CURLY@105..106 "{" + WORD@106..107 "A" + WHITESPACE@107..108 " " + WORD@108..114 "Method" + WHITESPACE@114..115 " " + WORD@115..118 "for" + WHITESPACE@118..119 " " + WORD@119..128 "Obtaining" + WHITESPACE@128..129 " " + WORD@129..136 "Digital" + WHITESPACE@136..137 " " + WORD@137..147 "Signatures" + WHITESPACE@147..148 " " + WORD@148..151 "and" + WHITESPACE@151..152 " " + WORD@152..162 "Public-Key" + WHITESPACE@162..163 " " + WORD@163..176 "Cryptosystems" + R_CURLY@176..177 "}" + COMMA@177..178 "," + WHITESPACE@178..183 "\n " + FIELD@183..197 + NAME@183..187 "year" + WHITESPACE@187..188 " " + EQ@188..189 "=" + WHITESPACE@189..190 " " + CURLY_GROUP@190..196 + L_CURLY@190..191 "{" + INTEGER@191..195 "1978" + R_CURLY@195..196 "}" + COMMA@196..197 "," + WHITESPACE@197..202 "\n " + FIELD@202..227 + NAME@202..212 "issue_date" + WHITESPACE@212..213 " " + EQ@213..214 "=" + WHITESPACE@214..215 " " + CURLY_GROUP@215..226 + L_CURLY@215..216 "{" + WORD@216..220 "Feb." + WHITESPACE@220..221 " " + INTEGER@221..225 "1978" + R_CURLY@225..226 "}" + COMMA@226..227 "," + WHITESPACE@227..232 "\n " + FIELD@232..282 + NAME@232..241 "publisher" + WHITESPACE@241..242 " " + EQ@242..243 "=" + WHITESPACE@243..244 " " + CURLY_GROUP@244..281 + L_CURLY@244..245 "{" + WORD@245..256 "Association" + WHITESPACE@256..257 " " + WORD@257..260 "for" + WHITESPACE@260..261 " " + WORD@261..270 "Computing" + WHITESPACE@270..271 " " + WORD@271..280 "Machinery" + R_CURLY@280..281 "}" + COMMA@281..282 "," + WHITESPACE@282..287 "\n " + FIELD@287..317 + NAME@287..294 "address" + WHITESPACE@294..295 " " + EQ@295..296 "=" + WHITESPACE@296..297 " " + CURLY_GROUP@297..316 + L_CURLY@297..298 "{" + WORD@298..301 "New" + WHITESPACE@301..302 " " + WORD@302..306 "York" + COMMA@306..307 "," + WHITESPACE@307..308 " " + WORD@308..310 "NY" + COMMA@310..311 "," + WHITESPACE@311..312 " " + WORD@312..315 "USA" + R_CURLY@315..316 "}" + COMMA@316..317 "," + WHITESPACE@317..322 "\n " + FIELD@322..336 + NAME@322..328 "volume" + WHITESPACE@328..329 " " + EQ@329..330 "=" + WHITESPACE@330..331 " " + CURLY_GROUP@331..335 + L_CURLY@331..332 "{" + INTEGER@332..334 "21" + R_CURLY@334..335 "}" + COMMA@335..336 "," + WHITESPACE@336..341 "\n " + FIELD@341..354 + NAME@341..347 "number" + WHITESPACE@347..348 " " + EQ@348..349 "=" + WHITESPACE@349..350 " " + CURLY_GROUP@350..353 + L_CURLY@350..351 "{" + INTEGER@351..352 "2" + R_CURLY@352..353 "}" + COMMA@353..354 "," + WHITESPACE@354..359 "\n " + FIELD@359..378 + NAME@359..363 "issn" + WHITESPACE@363..364 " " + EQ@364..365 "=" + WHITESPACE@365..366 " " + CURLY_GROUP@366..377 + L_CURLY@366..367 "{" + WORD@367..376 "0001-0782" + R_CURLY@376..377 "}" + COMMA@377..378 "," + WHITESPACE@378..383 "\n " + FIELD@383..429 + NAME@383..386 "url" + WHITESPACE@386..387 " " + EQ@387..388 "=" + WHITESPACE@388..389 " " + CURLY_GROUP@389..428 + L_CURLY@389..390 "{" + WORD@390..427 "https://doi.org/10.11 ..." + R_CURLY@427..428 "}" + COMMA@428..429 "," + WHITESPACE@429..434 "\n " + FIELD@434..464 + NAME@434..437 "doi" + WHITESPACE@437..438 " " + EQ@438..439 "=" + WHITESPACE@439..440 " " + CURLY_GROUP@440..463 + L_CURLY@440..441 "{" + WORD@441..462 "10.1145/359340.359342" + R_CURLY@462..463 "}" + COMMA@463..464 "," + WHITESPACE@464..469 "\n " + FIELD@469..493 + NAME@469..476 "journal" + WHITESPACE@476..477 " " + EQ@477..478 "=" + WHITESPACE@478..479 " " + CURLY_GROUP@479..492 + L_CURLY@479..480 "{" + WORD@480..487 "Commun." + WHITESPACE@487..488 " " + WORD@488..491 "ACM" + R_CURLY@491..492 "}" + COMMA@492..493 "," + WHITESPACE@493..498 "\n " + FIELD@498..512 + NAME@498..503 "month" + WHITESPACE@503..504 " " + EQ@504..505 "=" + WHITESPACE@505..506 " " + CURLY_GROUP@506..511 + L_CURLY@506..507 "{" + WORD@507..510 "feb" + R_CURLY@510..511 "}" + COMMA@511..512 "," + WHITESPACE@512..517 "\n " + FIELD@517..535 + NAME@517..522 "pages" + WHITESPACE@522..523 " " + EQ@523..524 "=" + WHITESPACE@524..525 " " + CURLY_GROUP@525..534 + L_CURLY@525..526 "{" + WORD@526..533 "120-126" + R_CURLY@533..534 "}" + COMMA@534..535 "," + WHITESPACE@535..540 "\n " + FIELD@540..555 + NAME@540..548 "numpages" + WHITESPACE@548..549 " " + EQ@549..550 "=" + WHITESPACE@550..551 " " + CURLY_GROUP@551..554 + L_CURLY@551..552 "{" + INTEGER@552..553 "7" + R_CURLY@553..554 "}" + COMMA@554..555 "," + WHITESPACE@555..556 "\n" + R_DELIM@556..557 "}" + + "#]], + ); +} diff --git a/support/texlab/crates/parser/src/build_log.rs b/support/texlab/crates/parser/src/build_log.rs index 27f3699a66..420d2dda20 100644 --- a/support/texlab/crates/parser/src/build_log.rs +++ b/support/texlab/crates/parser/src/build_log.rs @@ -174,14 +174,4 @@ impl PartialOrd for FileRange { } #[cfg(test)] -mod tests { - use super::parse_build_log; - - #[test] - fn test_parse() { - insta::glob!("test_data/build_log/*.txt", |path| { - let text = std::fs::read_to_string(path).unwrap().replace("\r\n", "\n"); - insta::assert_debug_snapshot!(parse_build_log(&text)); - }); - } -} +mod tests; diff --git a/support/texlab/crates/parser/src/build_log/tests.rs b/support/texlab/crates/parser/src/build_log/tests.rs new file mode 100644 index 0000000000..20d165e008 --- /dev/null +++ b/support/texlab/crates/parser/src/build_log/tests.rs @@ -0,0 +1,1228 @@ +use expect_test::{expect, Expect}; + +use crate::parse_build_log; + +fn check(input: &str, expect: Expect) { + expect.assert_debug_eq(&parse_build_log(input)); +} + +#[test] +fn test_001() { + check( + r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:50 +entering extended mode +restricted \write18 enabled. +%&-line parsing enabled. +**./parent.tex +(./parent.tex +LaTeX2e <2017-04-15> +Babel <3.10> and hyphenation patterns for 84 language(s) loaded. +(/TexLive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/TexLive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/TexLive/texmf-dist/tex/latex/multirow/bigstrut.sty +Package: bigstrut 2016/11/25 v2.2 Provide larger struts in tabulars +\bigstrutjot=\dimen103 +) +(/TexLive/texmf-dist/tex/latex/multirow/multirow.sty +Package: multirow 2016/11/25 v2.2 Span multiple rows of a table +\multirow@colwidth=\skip43 +\multirow@cntb=\count87 +\multirow@dima=\skip44 +) (./parent.aux) +\openout1 = `parent.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. + +Overfull \hbox (200.00162pt too wide) in paragraph at lines 8--9 +[]\OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +[] + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 11. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 11. + +Overfull \vbox (3.19998pt too high) detected at line 23 +[] + +[1 + +{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux) ) +Here is how much of TeX's memory you used: +265 strings out of 492995 +3121 string characters out of 6138727 +55074 words of memory out of 5000000 +3896 multiletter control sequences out of 15000+600000 +3640 words of font info for 14 fonts, out of 8000000 for 9000 +1141 hyphenation exceptions out of 8191 +23i,20n,20p,124b,282s stack positions out of 5000i,500n,10000p,200000b,80000s +</ +TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></TexLive/texmf-d +ist/fonts/type1/public/amsfonts/cm/cmr7.pfb> +Output written on parent.pdf (1 page, 17505 bytes). +PDF statistics: +16 PDF objects out of 1000 (max. 8388607) +10 compressed objects within 1 object stream +0 named destinations out of 1000 (max. 500000) +1 words of extra memory for PDF output out of 10000 (max. 10000000)"#, + expect![[r#" + BuildLog { + errors: [ + BuildError { + relative_path: "./parent.tex", + level: Warning, + message: "Overfull \\hbox (200.00162pt too wide) in paragraph at lines 8--9", + hint: None, + line: Some( + 7, + ), + }, + BuildError { + relative_path: "./parent.tex", + level: Warning, + message: "Overfull \\vbox (3.19998pt too high) detected at line 23", + hint: None, + line: Some( + 22, + ), + }, + ], + } + "#]], + ); +} + +#[test] +fn test_002() { + check( + r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:52 +entering extended mode +restricted \write18 enabled. +%&-line parsing enabled. +**./parent.tex +(./parent.tex +LaTeX2e <2017-04-15> +Babel <3.10> and hyphenation patterns for 84 language(s) loaded. +(/TexLive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/TexLive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) (./parent.aux (./child.aux)) +\openout1 = `parent.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +(./child.tex +! Undefined control sequence. +l.1 \foo + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +) (./parent.aux) ) +Here is how much of TeX's memory you used: +205 strings out of 492995 +2149 string characters out of 6138727 +54074 words of memory out of 5000000 +3841 multiletter control sequences out of 15000+600000 +3640 words of font info for 14 fonts, out of 8000000 for 9000 +1141 hyphenation exceptions out of 8191 +23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s + +No pages of output. +PDF statistics: +0 PDF objects out of 1000 (max. 8388607) +0 named destinations out of 1000 (max. 500000) +1 words of extra memory for PDF output out of 10000 (max. 10000000)"#, + expect![[r#" + BuildLog { + errors: [ + BuildError { + relative_path: "./child.tex", + level: Error, + message: "Undefined control sequence.", + hint: Some( + "\\foo", + ), + line: Some( + 0, + ), + }, + ], + } + "#]], + ); +} + +#[test] +fn test_003() { + check( + r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:51 +entering extended mode +restricted \write18 enabled. +%&-line parsing enabled. +**./parent.tex +(./parent.tex +LaTeX2e <2017-04-15> +Babel <3.10> and hyphenation patterns for 84 language(s) loaded. +(/TexLive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/TexLive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) (./parent.aux) +\openout1 = `parent.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4. +LaTeX Font Info: ... okay on input line 4. + +LaTeX Warning: Citation `foo' on page 1 undefined on input line 6. + +[1 + +{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux) + +LaTeX Warning: There were undefined references. + +) +Here is how much of TeX's memory you used: +204 strings out of 492995 +2142 string characters out of 6138727 +54074 words of memory out of 5000000 +3842 multiletter control sequences out of 15000+600000 +3948 words of font info for 15 fonts, out of 8000000 for 9000 +1141 hyphenation exceptions out of 8191 +23i,4n,21p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s +</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></TexLive/ +texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb> +Output written on parent.pdf (1 page, 17339 bytes). +PDF statistics: +16 PDF objects out of 1000 (max. 8388607) +10 compressed objects within 1 object stream +0 named destinations out of 1000 (max. 500000) +1 words of extra memory for PDF output out of 10000 (max. 10000000)"#, + expect![[r#" + BuildLog { + errors: [ + BuildError { + relative_path: "./parent.tex", + level: Warning, + message: "LaTeX Warning: Citation `foo' on page 1 undefined on input line 6.", + hint: None, + line: Some( + 5, + ), + }, + BuildError { + relative_path: "./parent.tex", + level: Warning, + message: "LaTeX Warning: There were undefined references.", + hint: None, + line: None, + }, + ], + } + "#]], + ); +} + +#[test] +fn test_004() { + check( + r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:40 +entering extended mode +restricted \write18 enabled. +%&-line parsing enabled. +**./parent.tex +(./parent.tex +LaTeX2e <2017-04-15> +Babel <3.10> and hyphenation patterns for 84 language(s) loaded. +(/TexLive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/TexLive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/TexLive/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2017/05/19 3.10 The Babel package + +! Package babel Error: Unknown option `foo'. Either you misspelled it +(babel) or the language definition file foo.ldf was not found. + +See the babel package documentation for explanation. +Type H <return> for immediate help. +... + +l.393 \ProcessOptions* + +Valid options are: shorthands=, KeepShorthandsActive, +activeacute, activegrave, noconfigs, safe=, main=, math= +headfoot=, strings=, config=, hyphenmap=, or a language name. + +! Package babel Error: You haven't specified a language option. + +See the babel package documentation for explanation. +Type H <return> for immediate help. +... + +l.426 ...ry to proceed from here, type x to quit.} + +You need to specify a language, either as a global option +or as an optional argument to the \usepackage command; +You shouldn't try to proceed from here, type x to quit. + +) (./parent.aux) +\openout1 = `parent.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. +LaTeX Font Info: ... okay on input line 5. +(./parent.aux) ) +Here is how much of TeX's memory you used: +304 strings out of 492995 +3421 string characters out of 6138727 +56035 words of memory out of 5000000 +3938 multiletter control sequences out of 15000+600000 +3640 words of font info for 14 fonts, out of 8000000 for 9000 +1141 hyphenation exceptions out of 8191 +23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s + +No pages of output. +PDF statistics: +0 PDF objects out of 1000 (max. 8388607) +0 named destinations out of 1000 (max. 500000) +1 words of extra memory for PDF output out of 10000 (max. 10000000)"#, + expect![[r#" + BuildLog { + errors: [ + BuildError { + relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty", + level: Error, + message: "Package babel Error: Unknown option `foo'. Either you misspelled it or the language definition file foo.ldf was not found.", + hint: Some( + "\\ProcessOptions*", + ), + line: Some( + 392, + ), + }, + BuildError { + relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty", + level: Error, + message: "Package babel Error: You haven't specified a language option.", + hint: Some( + "ry to proceed from here, type x to quit.}", + ), + line: Some( + 425, + ), + }, + ], + } + "#]], + ) +} + +#[test] +fn test_005() { + check( + r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:45 +entering extended mode +restricted \write18 enabled. +%&-line parsing enabled. +**./parent.tex +(./parent.tex +LaTeX2e <2017-04-15> +Babel <3.10> and hyphenation patterns for 84 language(s) loaded. +(/TexLive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/TexLive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/TexLive/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2017/05/19 3.10 The Babel package + +(/TexLive/texmf-dist/tex/generic/babel-spanish/spanish.ldf +Language: spanish.ldf 2016/03/03 v5.0p Spanish support from the babel system + +(/TexLive/texmf-dist/tex/generic/babel/babel.def +File: babel.def 2017/05/19 3.10 Babel common definitions +\babel@savecnt=\count87 +\U@D=\dimen103 +) +\es@quottoks=\toks14 +\es@quotdepth=\count88 +Package babel Info: Making " an active character on input line 561. +Package babel Info: Making . an active character on input line 662. +Package babel Info: Making < an active character on input line 707. +Package babel Info: Making > an active character on input line 707. +)) +(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.sty +Package: biblatex 2016/12/05 v3.7 programmable bibliographies (PK/JW/AB) + +(/TexLive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO +) + +(/TexLive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +) +(/TexLive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +(/TexLive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +) +(/TexLive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/TexLive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2017/01/02 v2.4 e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count89 +) +(/TexLive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks15 +) +(/TexLive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) + +(/TexLive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) + +(/TexLive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +(/TexLive/texmf-dist/tex/latex/logreq/logreq.sty +Package: logreq 2010/08/04 v1.0 xml request logger +\lrq@indent=\count90 + +(/TexLive/texmf-dist/tex/latex/logreq/logreq.def +File: logreq.def 2010/08/04 v1.0 logreq spec v1.0 +)) +(/TexLive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +(/TexLive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +(/TexLive/texmf-dist/tex/generic/xstring/xstring.sty +(/TexLive/texmf-dist/tex/generic/xstring/xstring.tex +\@xs@message=\write3 +\integerpart=\count91 +\decimalpart=\count92 +) +Package: xstring 2013/10/13 v1.7c String manipulations (C Tellechea) +) +\c@tabx@nest=\count93 +\c@listtotal=\count94 +\c@listcount=\count95 +\c@liststart=\count96 +\c@liststop=\count97 +\c@citecount=\count98 +\c@citetotal=\count99 +\c@multicitecount=\count100 +\c@multicitetotal=\count101 +\c@instcount=\count102 +\c@maxnames=\count103 +\c@minnames=\count104 +\c@maxitems=\count105 +\c@minitems=\count106 +\c@citecounter=\count107 +\c@savedcitecounter=\count108 +\c@uniquelist=\count109 +\c@uniquename=\count110 +\c@refsection=\count111 +\c@refsegment=\count112 +\c@maxextratitle=\count113 +\c@maxextratitleyear=\count114 +\c@maxextrayear=\count115 +\c@maxextraalpha=\count116 +\c@abbrvpenalty=\count117 +\c@highnamepenalty=\count118 +\c@lownamepenalty=\count119 +\c@maxparens=\count120 +\c@parenlevel=\count121 +\blx@tempcnta=\count122 +\blx@tempcntb=\count123 +\blx@tempcntc=\count124 +\blx@maxsection=\count125 +\blx@maxsegment@0=\count126 +\blx@notetype=\count127 +\blx@parenlevel@text=\count128 +\blx@parenlevel@foot=\count129 +\blx@sectionciteorder@0=\count130 +\labelnumberwidth=\skip43 +\labelalphawidth=\skip44 +\biblabelsep=\skip45 +\bibitemsep=\skip46 +\bibnamesep=\skip47 +\bibinitsep=\skip48 +\bibparsep=\skip49 +\bibhang=\skip50 +\blx@bcfin=\read1 +\blx@bcfout=\write4 +\c@mincomprange=\count131 +\c@maxcomprange=\count132 +\c@mincompwidth=\count133 +Package biblatex Info: Trying to load biblatex default data model... +Package biblatex Info: ... file 'blx-dm.def' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/blx-dm.def) +Package biblatex Info: Trying to load biblatex style data model... +Package biblatex Info: ... file 'ieee.dbx' not found. +Package biblatex Info: Trying to load biblatex custom data model... +Package biblatex Info: ... file 'biblatex-dm.cfg' not found. +\c@afterword=\count134 +\c@savedafterword=\count135 +\c@annotator=\count136 +\c@savedannotator=\count137 +\c@author=\count138 +\c@savedauthor=\count139 +\c@bookauthor=\count140 +\c@savedbookauthor=\count141 +\c@commentator=\count142 +\c@savedcommentator=\count143 +\c@editor=\count144 +\c@savededitor=\count145 +\c@editora=\count146 +\c@savededitora=\count147 +\c@editorb=\count148 +\c@savededitorb=\count149 +\c@editorc=\count150 +\c@savededitorc=\count151 +\c@foreword=\count152 +\c@savedforeword=\count153 +\c@holder=\count154 +\c@savedholder=\count155 +\c@introduction=\count156 +\c@savedintroduction=\count157 +\c@namea=\count158 +\c@savednamea=\count159 +\c@nameb=\count160 +\c@savednameb=\count161 +\c@namec=\count162 +\c@savednamec=\count163 +\c@translator=\count164 +\c@savedtranslator=\count165 +\c@shortauthor=\count166 +\c@savedshortauthor=\count167 +\c@shorteditor=\count168 +\c@savedshorteditor=\count169 +\c@labelname=\count170 +\c@savedlabelname=\count171 +\c@institution=\count172 +\c@savedinstitution=\count173 +\c@lista=\count174 +\c@savedlista=\count175 +\c@listb=\count176 +\c@savedlistb=\count177 +\c@listc=\count178 +\c@savedlistc=\count179 +\c@listd=\count180 +\c@savedlistd=\count181 +\c@liste=\count182 +\c@savedliste=\count183 +\c@listf=\count184 +\c@savedlistf=\count185 +\c@location=\count186 +\c@savedlocation=\count187 +\c@organization=\count188 +\c@savedorganization=\count189 +\c@origlocation=\count190 +\c@savedoriglocation=\count191 +\c@origpublisher=\count192 +\c@savedorigpublisher=\count193 +\c@publisher=\count194 +\c@savedpublisher=\count195 +\c@language=\count196 +\c@savedlanguage=\count197 +\c@pageref=\count198 +\c@savedpageref=\count199 +\shorthandwidth=\skip51 +\shortjournalwidth=\skip52 +\shortserieswidth=\skip53 +\shorttitlewidth=\skip54 +\shortauthorwidth=\skip55 +\shorteditorwidth=\skip56 +Package biblatex Info: Trying to load compatibility code... +Package biblatex Info: ... file 'blx-compat.def' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/blx-compat.def +File: blx-compat.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB) +) +Package biblatex Info: Trying to load generic definitions... +Package biblatex Info: ... file 'biblatex.def' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.def +File: biblatex.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB) +\c@textcitecount=\count266 +\c@textcitetotal=\count267 +\c@textcitemaxnames=\count268 +\c@biburlnumpenalty=\count269 +\c@biburlucpenalty=\count270 +\c@biburllcpenalty=\count271 +\c@smartand=\count272 +) +Package biblatex Info: Trying to load bibliography style 'ieee'... +Package biblatex Info: ... file 'ieee.bbx' found. + +(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx +File: ieee.bbx 2017/03/27 v1.2d biblatex bibliography style +Package biblatex Info: Trying to load bibliography style 'numeric-comp'... +Package biblatex Info: ... file 'numeric-comp.bbx' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx +File: numeric-comp.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB) +Package biblatex Info: Trying to load bibliography style 'numeric'... +Package biblatex Info: ... file 'numeric.bbx' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx +File: numeric.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB) +Package biblatex Info: Trying to load bibliography style 'standard'... +Package biblatex Info: ... file 'standard.bbx' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +File: standard.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB) +\c@bbx:relatedcount=\count273 +\c@bbx:relatedtotal=\count274 +)))) +Package biblatex Info: Trying to load citation style 'ieee'... +Package biblatex Info: ... file 'ieee.cbx' found. + +(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx +File: ieee.cbx 2017/03/27 v1.2d biblatex citation style +Package biblatex Info: Trying to load citation style 'numeric-comp'... +Package biblatex Info: ... file 'numeric-comp.cbx' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx +File: numeric-comp.cbx 2016/12/05 v3.7 biblatex citation style (PK/JW/AB) +\c@cbx@tempcnta=\count275 +\c@cbx@tempcntb=\count276 +Package biblatex Info: Redefining '\cite'. +Package biblatex Info: Redefining '\parencite'. +Package biblatex Info: Redefining '\footcite'. +Package biblatex Info: Redefining '\footcitetext'. +Package biblatex Info: Redefining '\smartcite'. +Package biblatex Info: Redefining '\supercite'. +Package biblatex Info: Redefining '\textcite'. +Package biblatex Info: Redefining '\textcites'. +Package biblatex Info: Redefining '\cites'. +Package biblatex Info: Redefining '\parencites'. +Package biblatex Info: Redefining '\smartcites'. +) +Package biblatex Info: Redefining '\cite'. +Package biblatex Info: Redefining '\cites'. +) +Package biblatex Info: Trying to load configuration file... +Package biblatex Info: ... file 'biblatex.cfg' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.cfg +File: biblatex.cfg +)) +Package biblatex Info: Trying to load language 'spanish'... +Package biblatex Info: ... file 'spanish.lbx' found. + +(/TexLive/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx +File: spanish.lbx 2016/12/05 v3.7 biblatex localization (PK/JW/AB) +) + +Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. +(biblatex) Loading 'csquotes' recommended. + +\@quotelevel=\count277 +\@quotereset=\count278 +(./parent.aux) +\openout1 = `parent.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. +LaTeX Font Info: ... okay on input line 6. +LaTeX Info: Redefining \sptext on input line 6. +LaTeX Info: Redefining \. on input line 6. +LaTeX Info: Redefining \% on input line 6. +Package biblatex Info: No input encoding detected. +(biblatex) Assuming 'ascii'. +Package biblatex Info: Automatic encoding selection. +(biblatex) Assuming data encoding 'ascii'. +\openout4 = `parent.bcf'. + +Package biblatex Info: Trying to load bibliographic data... +Package biblatex Info: ... file 'parent.bbl' not found. + +No file parent.bbl. +Package biblatex Info: Reference section=0 on input line 6. +Package biblatex Info: Reference segment=0 on input line 6. +(./parent.aux) + +LaTeX Warning: There were undefined references. + +Package biblatex Warning: Please (re)run Biber on the file: +(biblatex) parent +(biblatex) and rerun LaTeX afterwards. + +Package logreq Info: Writing requests to 'parent.run.xml'. +\openout1 = `parent.run.xml'. + +) +Here is how much of TeX's memory you used: +7717 strings out of 492995 +133301 string characters out of 6138727 +557258 words of memory out of 5000000 +11248 multiletter control sequences out of 15000+600000 +3640 words of font info for 14 fonts, out of 8000000 for 9000 +1141 hyphenation exceptions out of 8191 +35i,1n,30p,856b,700s stack positions out of 5000i,500n,10000p,200000b,80000s + +No pages of output. +PDF statistics: +0 PDF objects out of 1000 (max. 8388607) +0 named destinations out of 1000 (max. 500000) +1 words of extra memory for PDF output out of 10000 (max. 10000000)"#, + expect![[r#" + BuildLog { + errors: [ + BuildError { + relative_path: "./parent.tex", + level: Warning, + message: "Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. Loading 'csquotes' recommended.", + hint: None, + line: None, + }, + BuildError { + relative_path: "./parent.tex", + level: Warning, + message: "LaTeX Warning: There were undefined references.", + hint: None, + line: None, + }, + BuildError { + relative_path: "./parent.tex", + level: Warning, + message: "Package biblatex Warning: Please (re)run Biber on the file: parent and rerun LaTeX afterwards.", + hint: None, + line: None, + }, + ], + } + "#]], + ) +} + +#[test] +fn test_006() { + check( + r#"This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:33 +entering extended mode +restricted \write18 enabled. +%&-line parsing enabled. +**./parent.tex +(./parent.tex +LaTeX2e <2017-04-15> +Babel <3.10> and hyphenation patterns for 84 language(s) loaded. +(/TexLive/texmf-dist/tex/latex/base/article.cls +Document Class: article 2014/09/29 v1.4h Standard LaTeX document class +(/TexLive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@section=\count80 +\c@subsection=\count81 +\c@subsubsection=\count82 +\c@paragraph=\count83 +\c@subparagraph=\count84 +\c@figure=\count85 +\c@table=\count86 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) (./parent.aux +(./child.tex.aux)) +\openout1 = `parent.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +\openout2 = `child.aux'. + +(./child.tex) +! Undefined control sequence. +l.7 \foo + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Missing $ inserted. +<inserted text> + $ +l.8 \bar + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 8. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 8. +! Undefined control sequence. +l.9 \baz + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Missing { inserted. +<to be read again> + \par +l.10 + +A left brace was mandatory here, so I've put one in. +You might want to delete and/or insert some corrections +so that I will find a matching right brace soon. +(If you're confused by all this, try typing `I}' now.) + +! Missing $ inserted. +<inserted text> + $ +l.10 + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. +<inserted text> + } +l.10 + +I've inserted something that you may have forgotten. +(See the <inserted text> above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +[1 + +{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux +(./child.aux)) ) +Here is how much of TeX's memory you used: +212 strings out of 492995 +2238 string characters out of 6138727 +54074 words of memory out of 5000000 +3843 multiletter control sequences out of 15000+600000 +3640 words of font info for 14 fonts, out of 8000000 for 9000 +1141 hyphenation exceptions out of 8191 +23i,4n,17p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s +</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb +> +Output written on parent.pdf (1 page, 8329 bytes). +PDF statistics: +12 PDF objects out of 1000 (max. 8388607) +7 compressed objects within 1 object stream +0 named destinations out of 1000 (max. 500000) +1 words of extra memory for PDF output out of 10000 (max. 10000000)"#, + expect![[r#" + BuildLog { + errors: [ + BuildError { + relative_path: "./parent.tex", + level: Error, + message: "Undefined control sequence.", + hint: Some( + "\\foo", + ), + line: Some( + 6, + ), + }, + BuildError { + relative_path: "./parent.tex", + level: Error, + message: "Missing $ inserted.", + hint: Some( + "\\bar", + ), + line: Some( + 7, + ), + }, + BuildError { + relative_path: "./parent.tex", + level: Error, + message: "Undefined control sequence.", + hint: Some( + "\\baz", + ), + line: Some( + 8, + ), + }, + BuildError { + relative_path: "./parent.tex", + level: Error, + message: "Missing { inserted.", + hint: None, + line: Some( + 9, + ), + }, + BuildError { + relative_path: "./parent.tex", + level: Error, + message: "Missing $ inserted.", + hint: None, + line: Some( + 9, + ), + }, + BuildError { + relative_path: "./parent.tex", + level: Error, + message: "Missing } inserted.", + hint: None, + line: Some( + 9, + ), + }, + ], + } + "#]], + ); +} + +#[test] +fn test_007() { + check( + r#"This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/W32TeX) (preloaded format=pdflatex 2021.6.19) 5 NOV 2021 19:10 +entering extended mode +restricted \write18 enabled. +%&-line parsing enabled. +**/some/folder/a.tex +(/some/folder/a.tex +LaTeX2e <2021-06-01> patch level 1 +L3 programming layer <2021-06-18> +(/texlive/2021/texmf-dist/tex/latex/koma-script/scrartcl.cls +Document Class: scrartcl 2021/03/17 v3.33 KOMA-Script document class (article) +(/texlive/2021/texmf-dist/tex/latex/koma-script/scrkbase.sty +Package: scrkbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-dependent b +asics and keyval usage) + +(/texlive/2021/texmf-dist/tex/latex/koma-script/scrbase.sty +Package: scrbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-independent +basics and keyval usage) + +(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile.sty +Package: scrlfile 2021/03/17 v3.33 KOMA-Script package (file load hooks) + +(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty +Package: scrlfile-hook 2021/03/17 v3.33 KOMA-Script package (using LaTeX hooks) + + +(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlogo.sty +Package: scrlogo 2021/03/17 v3.33 KOMA-Script package (logo) +))) +(/texlive/2021/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks16 +) +Applying: [2021/05/01] Usage of raw option list on input line 252. +Already applied: [0000/00/00] compatibility for LaTeX before 2021/05/01 on inpu +t line 337. +)) +==> First Aid for scrkbase.sty no longer applied! +(/texlive/2021/texmf-dist/tex/latex/koma-script/tocbasic.sty +Package: tocbasic 2021/03/17 v3.33 KOMA-Script package (handling toc-files) +\scr@dte@tocline@numberwidth=\skip47 +\scr@dte@tocline@numbox=\box50 +) +Package tocbasic Info: babel extension for `toc' omitted +(tocbasic) because of missing \bbl@set@language on input line 135. +Class scrartcl Info: File `scrsize11pt.clo' used instead of +(scrartcl) file `scrsize11.clo' to setup font sizes on input line 223 +9. + +(/texlive/2021/texmf-dist/tex/latex/koma-script/scrsize11pt.clo +File: scrsize11pt.clo 2021/03/17 v3.33 KOMA-Script font size class option (11pt +) +) +(/texlive/2021/texmf-dist/tex/latex/koma-script/typearea.sty +Package: typearea 2021/03/17 v3.33 KOMA-Script package (type area) +\ta@bcor=\skip48 +\ta@div=\count182 +\ta@hblk=\skip49 +\ta@vblk=\skip50 +\ta@temp=\skip51 +\footheight=\skip52 +Package typearea Info: These are the values describing the layout: +(typearea) DIV = 10 +(typearea) BCOR = 0.0pt +(typearea) \paperwidth = 597.50793pt +(typearea) \textwidth = 418.25555pt +(typearea) DIV departure = -6% +(typearea) \evensidemargin = 17.3562pt +(typearea) \oddsidemargin = 17.3562pt +(typearea) \paperheight = 845.04694pt +(typearea) \textheight = 595.80026pt +(typearea) \topmargin = -25.16531pt +(typearea) \headheight = 17.0pt +(typearea) \headsep = 20.40001pt +(typearea) \topskip = 11.0pt +(typearea) \footskip = 47.6pt +(typearea) \baselineskip = 13.6pt +(typearea) on input line 1741. +) +\c@part=\count183 +\c@section=\count184 +\c@subsection=\count185 +\c@subsubsection=\count186 +\c@paragraph=\count187 +\c@subparagraph=\count188 +\scr@dte@section@maxnumwidth=\skip53 +Class scrartcl Info: using compatibility default `runin=bysign' +(scrartcl) for `\section on input line 4846. +Class scrartcl Info: using compatibility default `afterindent=bysign' +(scrartcl) for `\section on input line 4846. +\scr@dte@part@maxnumwidth=\skip54 +Class scrartcl Info: using compatibility default `afterindent=false' +(scrartcl) for `\part on input line 4854. +\scr@dte@subsection@maxnumwidth=\skip55 +Class scrartcl Info: using compatibility default `runin=bysign' +(scrartcl) for `\subsection on input line 4864. +Class scrartcl Info: using compatibility default `afterindent=bysign' +(scrartcl) for `\subsection on input line 4864. +\scr@dte@subsubsection@maxnumwidth=\skip56 +Class scrartcl Info: using compatibility default `runin=bysign' +(scrartcl) for `\subsubsection on input line 4874. +Class scrartcl Info: using compatibility default `afterindent=bysign' +(scrartcl) for `\subsubsection on input line 4874. +\scr@dte@paragraph@maxnumwidth=\skip57 +Class scrartcl Info: using compatibility default `runin=bysign' +(scrartcl) for `\paragraph on input line 4885. +Class scrartcl Info: using compatibility default `afterindent=bysign' +(scrartcl) for `\paragraph on input line 4885. +\scr@dte@subparagraph@maxnumwidth=\skip58 +Class scrartcl Info: using compatibility default `runin=bysign' +(scrartcl) for `\subparagraph on input line 4895. +Class scrartcl Info: using compatibility default `afterindent=bysign' +(scrartcl) for `\subparagraph on input line 4895. +\abovecaptionskip=\skip59 +\belowcaptionskip=\skip60 +\c@pti@nb@sid@b@x=\box51 +Package tocbasic Info: babel extension for `lof' omitted +(tocbasic) because of missing \bbl@set@language on input line 6127. + +\scr@dte@figure@maxnumwidth=\skip61 +\c@figure=\count189 +Package tocbasic Info: babel extension for `lot' omitted +(tocbasic) because of missing \bbl@set@language on input line 6139. + +\scr@dte@table@maxnumwidth=\skip62 +\c@table=\count190 +Class scrartcl Info: Redefining `\numberline' on input line 6303. +\bibindent=\dimen138 +) +(/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +File: l3backend-pdftex.def 2021-05-07 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count191 +\l__pdf_internal_box=\box52 +) (./a.aux) +\openout1 = `a.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3. +LaTeX Font Info: ... okay on input line 3. +Package scrbase Info: activating english \contentsname on input line 3. +Package scrbase Info: activating english \listfigurename on input line 3. +Package scrbase Info: activating english \listtablename on input line 3. +! Undefined control sequence. +l.4 \lsdkfjlskdfj + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +(./a.aux) ) +Here is how much of TeX's memory you used: +3199 strings out of 478510 +74549 string characters out of 5853586 +510929 words of memory out of 5000000 +21227 multiletter control sequences out of 15000+600000 +403730 words of font info for 28 fonts, out of 8000000 for 9000 +1141 hyphenation exceptions out of 8191 +108i,1n,108p,10625b,270s stack positions out of 5000i,500n,10000p,200000b,80000s + +No pages of output. +PDF statistics: +0 PDF objects out of 1000 (max. 8388607) +0 named destinations out of 1000 (max. 500000) +1 words of extra memory for PDF output out of 10000 (max. 10000000)"#, + expect![[r#" + BuildLog { + errors: [ + BuildError { + relative_path: "/some/folder/a.tex", + level: Error, + message: "Undefined control sequence.", + hint: Some( + "\\lsdkfjlskdfj", + ), + line: Some( + 3, + ), + }, + ], + } + "#]], + ); +} diff --git a/support/texlab/crates/parser/src/latex.rs b/support/texlab/crates/parser/src/latex.rs index f96d41a722..d88eb39556 100644 --- a/support/texlab/crates/parser/src/latex.rs +++ b/support/texlab/crates/parser/src/latex.rs @@ -1201,19 +1201,4 @@ pub fn parse_latex(text: &str, config: &SyntaxConfig) -> GreenNode { } #[cfg(test)] -mod tests { - use syntax::latex; - - use crate::SyntaxConfig; - - use super::parse_latex; - - #[test] - fn test_parse() { - insta::glob!("test_data/latex/{,**/}*.txt", |path| { - let text = std::fs::read_to_string(path).unwrap().replace("\r\n", "\n"); - let root = latex::SyntaxNode::new_root(parse_latex(&text, &SyntaxConfig::default())); - insta::assert_debug_snapshot!(root); - }); - } -} +mod tests; diff --git a/support/texlab/crates/parser/src/latex/tests.rs b/support/texlab/crates/parser/src/latex/tests.rs new file mode 100644 index 0000000000..a907efc6c3 --- /dev/null +++ b/support/texlab/crates/parser/src/latex/tests.rs @@ -0,0 +1,3523 @@ +use expect_test::{expect, Expect}; + +use crate::{parse_latex, SyntaxConfig}; + +fn check(input: &str, expect: Expect) { + let root = syntax::latex::SyntaxNode::new_root(parse_latex(input, &SyntaxConfig::default())); + expect.assert_debug_eq(&root); +} + +#[test] +fn test_block_comments() { + check( + r#"Foo +\iffalse +Test1 +\fi +Bar +\iffalse +\fii +\fi +Baz"#, + expect![[r#" + ROOT@0..48 + PREAMBLE@0..48 + TEXT@0..4 + WORD@0..3 "Foo" + LINE_BREAK@3..4 "\n" + BLOCK_COMMENT@4..22 + COMMAND_NAME@4..12 "\\iffalse" + LINE_BREAK@12..13 "\n" + WORD@13..18 "Test1" + LINE_BREAK@18..19 "\n" + COMMAND_NAME@19..22 "\\fi" + LINE_BREAK@22..23 "\n" + TEXT@23..27 + WORD@23..26 "Bar" + LINE_BREAK@26..27 "\n" + BLOCK_COMMENT@27..44 + COMMAND_NAME@27..35 "\\iffalse" + LINE_BREAK@35..36 "\n" + COMMAND_NAME@36..40 "\\fii" + LINE_BREAK@40..41 "\n" + COMMAND_NAME@41..44 "\\fi" + LINE_BREAK@44..45 "\n" + TEXT@45..48 + WORD@45..48 "Baz" + + "#]], + ); +} + +#[test] +fn test_caption_default() { + check( + r#"\caption[qux]{Foo \Bar Baz}"#, + expect![[r#" + ROOT@0..27 + PREAMBLE@0..27 + CAPTION@0..27 + COMMAND_NAME@0..8 "\\caption" + BRACK_GROUP@8..13 + L_BRACK@8..9 "[" + TEXT@9..12 + WORD@9..12 "qux" + R_BRACK@12..13 "]" + CURLY_GROUP@13..27 + L_CURLY@13..14 "{" + TEXT@14..18 + WORD@14..17 "Foo" + WHITESPACE@17..18 " " + GENERIC_COMMAND@18..23 + COMMAND_NAME@18..22 "\\Bar" + WHITESPACE@22..23 " " + TEXT@23..26 + WORD@23..26 "Baz" + R_CURLY@26..27 "}" + + "#]], + ); +} + +#[test] +fn test_caption_default_error() { + check( + r#"\caption[qux]{Foo \Bar Baz"#, + expect![[r#" + ROOT@0..26 + PREAMBLE@0..26 + CAPTION@0..26 + COMMAND_NAME@0..8 "\\caption" + BRACK_GROUP@8..13 + L_BRACK@8..9 "[" + TEXT@9..12 + WORD@9..12 "qux" + R_BRACK@12..13 "]" + CURLY_GROUP@13..26 + L_CURLY@13..14 "{" + TEXT@14..18 + WORD@14..17 "Foo" + WHITESPACE@17..18 " " + GENERIC_COMMAND@18..23 + COMMAND_NAME@18..22 "\\Bar" + WHITESPACE@22..23 " " + TEXT@23..26 + WORD@23..26 "Baz" + + "#]], + ); +} + +#[test] +fn test_caption_figure() { + check( + r#"\begin{figure}\caption{Foo}\end{figure}"#, + expect![[r#" + ROOT@0..39 + PREAMBLE@0..39 + ENVIRONMENT@0..39 + BEGIN@0..14 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..14 + L_CURLY@6..7 "{" + KEY@7..13 + WORD@7..13 "figure" + R_CURLY@13..14 "}" + CAPTION@14..27 + COMMAND_NAME@14..22 "\\caption" + CURLY_GROUP@22..27 + L_CURLY@22..23 "{" + TEXT@23..26 + WORD@23..26 "Foo" + R_CURLY@26..27 "}" + END@27..39 + COMMAND_NAME@27..31 "\\end" + CURLY_GROUP_WORD@31..39 + L_CURLY@31..32 "{" + KEY@32..38 + WORD@32..38 "figure" + R_CURLY@38..39 "}" + + "#]], + ); +} + +#[test] +fn test_caption_minimal() { + check( + r#"\caption{Foo \Bar Baz}"#, + expect![[r#" + ROOT@0..22 + PREAMBLE@0..22 + CAPTION@0..22 + COMMAND_NAME@0..8 "\\caption" + CURLY_GROUP@8..22 + L_CURLY@8..9 "{" + TEXT@9..13 + WORD@9..12 "Foo" + WHITESPACE@12..13 " " + GENERIC_COMMAND@13..18 + COMMAND_NAME@13..17 "\\Bar" + WHITESPACE@17..18 " " + TEXT@18..21 + WORD@18..21 "Baz" + R_CURLY@21..22 "}" + + "#]], + ); +} + +#[test] +fn test_caption_minimal_error() { + check( + r#"\caption{Foo \Bar Baz"#, + expect![[r#" + ROOT@0..21 + PREAMBLE@0..21 + CAPTION@0..21 + COMMAND_NAME@0..8 "\\caption" + CURLY_GROUP@8..21 + L_CURLY@8..9 "{" + TEXT@9..13 + WORD@9..12 "Foo" + WHITESPACE@12..13 " " + GENERIC_COMMAND@13..18 + COMMAND_NAME@13..17 "\\Bar" + WHITESPACE@17..18 " " + TEXT@18..21 + WORD@18..21 "Baz" + + "#]], + ); +} + +#[test] +fn test_citation_empty() { + check( + r#"\cite{}"#, + expect![[r#" + ROOT@0..7 + PREAMBLE@0..7 + CITATION@0..7 + COMMAND_NAME@0..5 "\\cite" + CURLY_GROUP_WORD_LIST@5..7 + L_CURLY@5..6 "{" + R_CURLY@6..7 "}" + + "#]], + ); +} + +#[test] +fn test_citation_missing_brace() { + check( + r#"\cite{foo"#, + expect![[r#" + ROOT@0..9 + PREAMBLE@0..9 + CITATION@0..9 + COMMAND_NAME@0..5 "\\cite" + CURLY_GROUP_WORD_LIST@5..9 + L_CURLY@5..6 "{" + KEY@6..9 + WORD@6..9 "foo" + + "#]], + ); +} + +#[test] +fn test_citation_multiple_keys() { + check( + r#"\cite{foo, bar}"#, + expect![[r#" + ROOT@0..15 + PREAMBLE@0..15 + CITATION@0..15 + COMMAND_NAME@0..5 "\\cite" + CURLY_GROUP_WORD_LIST@5..15 + L_CURLY@5..6 "{" + KEY@6..9 + WORD@6..9 "foo" + COMMA@9..10 "," + WHITESPACE@10..11 " " + KEY@11..14 + WORD@11..14 "bar" + R_CURLY@14..15 "}" + + "#]], + ); +} + +#[test] +fn test_citation_prenote() { + check( + r#"\cite[foo]{bar}"#, + expect![[r#" + ROOT@0..15 + PREAMBLE@0..15 + CITATION@0..15 + COMMAND_NAME@0..5 "\\cite" + BRACK_GROUP@5..10 + L_BRACK@5..6 "[" + TEXT@6..9 + WORD@6..9 "foo" + R_BRACK@9..10 "]" + CURLY_GROUP_WORD_LIST@10..15 + L_CURLY@10..11 "{" + KEY@11..14 + WORD@11..14 "bar" + R_CURLY@14..15 "}" + + "#]], + ); +} + +#[test] +fn test_citation_prenote_postnote() { + check( + r#"\cite[foo][bar]{baz}"#, + expect![[r#" + ROOT@0..20 + PREAMBLE@0..20 + CITATION@0..20 + COMMAND_NAME@0..5 "\\cite" + BRACK_GROUP@5..10 + L_BRACK@5..6 "[" + TEXT@6..9 + WORD@6..9 "foo" + R_BRACK@9..10 "]" + BRACK_GROUP@10..15 + L_BRACK@10..11 "[" + TEXT@11..14 + WORD@11..14 "bar" + R_BRACK@14..15 "]" + CURLY_GROUP_WORD_LIST@15..20 + L_CURLY@15..16 "{" + KEY@16..19 + WORD@16..19 "baz" + R_CURLY@19..20 "}" + + "#]], + ); +} + +#[test] +fn test_citation_redundant_comma() { + check( + r#"\cite{,foo,}"#, + expect![[r#" + ROOT@0..12 + PREAMBLE@0..12 + CITATION@0..12 + COMMAND_NAME@0..5 "\\cite" + CURLY_GROUP_WORD_LIST@5..12 + L_CURLY@5..6 "{" + COMMA@6..7 "," + KEY@7..10 + WORD@7..10 "foo" + COMMA@10..11 "," + R_CURLY@11..12 "}" + + "#]], + ); +} + +#[test] +fn test_citation_simple() { + check( + r#"\cite{foo}"#, + expect![[r#" + ROOT@0..10 + PREAMBLE@0..10 + CITATION@0..10 + COMMAND_NAME@0..5 "\\cite" + CURLY_GROUP_WORD_LIST@5..10 + L_CURLY@5..6 "{" + KEY@6..9 + WORD@6..9 "foo" + R_CURLY@9..10 "}" + + "#]], + ); +} + +#[test] +fn test_citation_star() { + check( + r#"\nocite{*}"#, + expect![[r#" + ROOT@0..10 + PREAMBLE@0..10 + CITATION@0..10 + COMMAND_NAME@0..7 "\\nocite" + CURLY_GROUP_WORD_LIST@7..10 + L_CURLY@7..8 "{" + KEY@8..9 + WORD@8..9 "*" + R_CURLY@9..10 "}" + + "#]], + ); +} + +#[test] +fn test_color_definition_simple() { + check( + r#"\definecolor{foo}{rgb}{255,168,0}"#, + expect![[r#" + ROOT@0..33 + PREAMBLE@0..33 + COLOR_DEFINITION@0..33 + COMMAND_NAME@0..12 "\\definecolor" + CURLY_GROUP_WORD@12..17 + L_CURLY@12..13 "{" + KEY@13..16 + WORD@13..16 "foo" + R_CURLY@16..17 "}" + CURLY_GROUP_WORD@17..22 + L_CURLY@17..18 "{" + KEY@18..21 + WORD@18..21 "rgb" + R_CURLY@21..22 "}" + CURLY_GROUP@22..33 + L_CURLY@22..23 "{" + TEXT@23..32 + WORD@23..26 "255" + COMMA@26..27 "," + WORD@27..30 "168" + COMMA@30..31 "," + WORD@31..32 "0" + R_CURLY@32..33 "}" + + "#]], + ); +} + +#[test] +fn test_color_reference_simple() { + check( + r#"\color{black}"#, + expect![[r#" + ROOT@0..13 + PREAMBLE@0..13 + COLOR_REFERENCE@0..13 + COMMAND_NAME@0..6 "\\color" + CURLY_GROUP_WORD@6..13 + L_CURLY@6..7 "{" + KEY@7..12 + WORD@7..12 "black" + R_CURLY@12..13 "}" + + "#]], + ); +} + +#[test] +fn test_color_set_definition_error1() { + check( + r#"\definecolorset[ty]{rgb,HTML}{foo}{bar}"#, + expect![[r#" + ROOT@0..39 + PREAMBLE@0..39 + COLOR_SET_DEFINITION@0..39 + COMMAND_NAME@0..15 "\\definecolorset" + BRACK_GROUP_WORD@15..19 + L_BRACK@15..16 "[" + KEY@16..18 + WORD@16..18 "ty" + R_BRACK@18..19 "]" + CURLY_GROUP_WORD_LIST@19..29 + L_CURLY@19..20 "{" + KEY@20..23 + WORD@20..23 "rgb" + COMMA@23..24 "," + KEY@24..28 + WORD@24..28 "HTML" + R_CURLY@28..29 "}" + CURLY_GROUP_WORD@29..34 + L_CURLY@29..30 "{" + KEY@30..33 + WORD@30..33 "foo" + R_CURLY@33..34 "}" + CURLY_GROUP_WORD@34..39 + L_CURLY@34..35 "{" + KEY@35..38 + WORD@35..38 "bar" + R_CURLY@38..39 "}" + + "#]], + ); +} + +#[test] +fn test_color_set_definition_error2() { + check( + r#"\definecolorset{rgb,HTML}{foo}"#, + expect![[r#" + ROOT@0..30 + PREAMBLE@0..30 + COLOR_SET_DEFINITION@0..30 + COMMAND_NAME@0..15 "\\definecolorset" + CURLY_GROUP_WORD_LIST@15..25 + L_CURLY@15..16 "{" + KEY@16..19 + WORD@16..19 "rgb" + COMMA@19..20 "," + KEY@20..24 + WORD@20..24 "HTML" + R_CURLY@24..25 "}" + CURLY_GROUP_WORD@25..30 + L_CURLY@25..26 "{" + KEY@26..29 + WORD@26..29 "foo" + R_CURLY@29..30 "}" + + "#]], + ); +} + +#[test] +fn test_color_set_definition_error3() { + check( + r#"\definecolorset{rgb,HTML}"#, + expect![[r#" + ROOT@0..25 + PREAMBLE@0..25 + COLOR_SET_DEFINITION@0..25 + COMMAND_NAME@0..15 "\\definecolorset" + CURLY_GROUP_WORD_LIST@15..25 + L_CURLY@15..16 "{" + KEY@16..19 + WORD@16..19 "rgb" + COMMA@19..20 "," + KEY@20..24 + WORD@20..24 "HTML" + R_CURLY@24..25 "}" + + "#]], + ); +} + +#[test] +fn test_color_set_definition_error4() { + check( + r#"\definecolorset"#, + expect![[r#" + ROOT@0..15 + PREAMBLE@0..15 + COLOR_SET_DEFINITION@0..15 + COMMAND_NAME@0..15 "\\definecolorset" + + "#]], + ); +} + +#[test] +fn test_color_set_definition_simple() { + check( + r#"\definecolorset[ty]{rgb,HTML}{foo}{bar}{baz}"#, + expect![[r#" + ROOT@0..44 + PREAMBLE@0..44 + COLOR_SET_DEFINITION@0..44 + COMMAND_NAME@0..15 "\\definecolorset" + BRACK_GROUP_WORD@15..19 + L_BRACK@15..16 "[" + KEY@16..18 + WORD@16..18 "ty" + R_BRACK@18..19 "]" + CURLY_GROUP_WORD_LIST@19..29 + L_CURLY@19..20 "{" + KEY@20..23 + WORD@20..23 "rgb" + COMMA@23..24 "," + KEY@24..28 + WORD@24..28 "HTML" + R_CURLY@28..29 "}" + CURLY_GROUP_WORD@29..34 + L_CURLY@29..30 "{" + KEY@30..33 + WORD@30..33 "foo" + R_CURLY@33..34 "}" + CURLY_GROUP_WORD@34..39 + L_CURLY@34..35 "{" + KEY@35..38 + WORD@35..38 "bar" + R_CURLY@38..39 "}" + CURLY_GROUP_WORD@39..44 + L_CURLY@39..40 "{" + KEY@40..43 + WORD@40..43 "baz" + R_CURLY@43..44 "}" + + "#]], + ); +} + +#[test] +fn test_command_definition_no_argc() { + check( + r#"\newcommand{\foo}{foo}"#, + expect![[r#" + ROOT@0..22 + PREAMBLE@0..22 + COMMAND_DEFINITION@0..22 + COMMAND_NAME@0..11 "\\newcommand" + CURLY_GROUP_COMMAND@11..17 + L_CURLY@11..12 "{" + COMMAND_NAME@12..16 "\\foo" + R_CURLY@16..17 "}" + CURLY_GROUP@17..22 + L_CURLY@17..18 "{" + TEXT@18..21 + WORD@18..21 "foo" + R_CURLY@21..22 "}" + + "#]], + ); +} + +#[test] +fn test_command_definition_no_impl() { + check( + r#"\newcommand{\foo}"#, + expect![[r#" + ROOT@0..17 + PREAMBLE@0..17 + COMMAND_DEFINITION@0..17 + COMMAND_NAME@0..11 "\\newcommand" + CURLY_GROUP_COMMAND@11..17 + L_CURLY@11..12 "{" + COMMAND_NAME@12..16 "\\foo" + R_CURLY@16..17 "}" + + "#]], + ); +} + +#[test] +fn test_command_definition_no_impl_error() { + check( + r#"\newcommand{\foo"#, + expect![[r#" + ROOT@0..16 + PREAMBLE@0..16 + COMMAND_DEFINITION@0..16 + COMMAND_NAME@0..11 "\\newcommand" + CURLY_GROUP_COMMAND@11..16 + L_CURLY@11..12 "{" + COMMAND_NAME@12..16 "\\foo" + + "#]], + ); +} + +#[test] +fn test_command_definition_optional() { + check( + r#"\newcommand{\foo}[1][def]{#1}"#, + expect![[r##" + ROOT@0..29 + PREAMBLE@0..29 + COMMAND_DEFINITION@0..29 + COMMAND_NAME@0..11 "\\newcommand" + CURLY_GROUP_COMMAND@11..17 + L_CURLY@11..12 "{" + COMMAND_NAME@12..16 "\\foo" + R_CURLY@16..17 "}" + BRACK_GROUP_WORD@17..20 + L_BRACK@17..18 "[" + KEY@18..19 + WORD@18..19 "1" + R_BRACK@19..20 "]" + BRACK_GROUP@20..25 + L_BRACK@20..21 "[" + TEXT@21..24 + WORD@21..24 "def" + R_BRACK@24..25 "]" + CURLY_GROUP@25..29 + L_CURLY@25..26 "{" + TEXT@26..28 + WORD@26..28 "#1" + R_CURLY@28..29 "}" + + "##]], + ); +} + +#[test] +fn test_command_definition_simple() { + check( + r#"\newcommand[1]{\id}{#1}"#, + expect![[r##" + ROOT@0..23 + PREAMBLE@0..23 + COMMAND_DEFINITION@0..19 + COMMAND_NAME@0..11 "\\newcommand" + BRACK_GROUP_WORD@11..14 + L_BRACK@11..12 "[" + KEY@12..13 + WORD@12..13 "1" + R_BRACK@13..14 "]" + CURLY_GROUP@14..19 + L_CURLY@14..15 "{" + GENERIC_COMMAND@15..18 + COMMAND_NAME@15..18 "\\id" + R_CURLY@18..19 "}" + CURLY_GROUP@19..23 + L_CURLY@19..20 "{" + TEXT@20..22 + WORD@20..22 "#1" + R_CURLY@22..23 "}" + + "##]], + ); +} + +#[test] +fn test_command_definition_with_begin() { + check( + r#"\newcommand{\CVSubHeadingListStart}{\begin{itemize}[leftmargin=0.5cm, label={}]}"#, + expect![[r#" + ROOT@0..80 + PREAMBLE@0..80 + COMMAND_DEFINITION@0..80 + COMMAND_NAME@0..11 "\\newcommand" + CURLY_GROUP_COMMAND@11..35 + L_CURLY@11..12 "{" + COMMAND_NAME@12..34 "\\CVSubHeadingListStart" + R_CURLY@34..35 "}" + CURLY_GROUP@35..80 + L_CURLY@35..36 "{" + BEGIN@36..79 + COMMAND_NAME@36..42 "\\begin" + CURLY_GROUP_WORD@42..51 + L_CURLY@42..43 "{" + KEY@43..50 + WORD@43..50 "itemize" + R_CURLY@50..51 "}" + BRACK_GROUP@51..79 + L_BRACK@51..52 "[" + TEXT@52..62 + WORD@52..62 "leftmargin" + EQUALITY_SIGN@62..63 "=" + TEXT@63..75 + WORD@63..68 "0.5cm" + COMMA@68..69 "," + WHITESPACE@69..70 " " + WORD@70..75 "label" + EQUALITY_SIGN@75..76 "=" + CURLY_GROUP@76..78 + L_CURLY@76..77 "{" + R_CURLY@77..78 "}" + R_BRACK@78..79 "]" + R_CURLY@79..80 "}" + + "#]], + ); +} + +#[test] +fn test_math_operator_no_impl() { + check( + r#"\DeclareMathOperator{\foo}"#, + expect![[r#" + ROOT@0..26 + PREAMBLE@0..26 + MATH_OPERATOR@0..26 + COMMAND_NAME@0..20 "\\DeclareMathOperator" + CURLY_GROUP_COMMAND@20..26 + L_CURLY@20..21 "{" + COMMAND_NAME@21..25 "\\foo" + R_CURLY@25..26 "}" + + "#]], + ); +} + +#[test] +fn test_math_operator_simple() { + check( + r#"\DeclareMathOperator{\foo}{foo}"#, + expect![[r#" + ROOT@0..31 + PREAMBLE@0..31 + MATH_OPERATOR@0..31 + COMMAND_NAME@0..20 "\\DeclareMathOperator" + CURLY_GROUP_COMMAND@20..26 + L_CURLY@20..21 "{" + COMMAND_NAME@21..25 "\\foo" + R_CURLY@25..26 "}" + CURLY_GROUP@26..31 + L_CURLY@26..27 "{" + TEXT@27..30 + WORD@27..30 "foo" + R_CURLY@30..31 "}" + + "#]], + ); +} + +#[test] +fn test_environment_asymptote() { + check( + r#"\begin{asy} + printf("Hello World\n"); +\end{asy}"#, + expect![[r#" + ROOT@0..50 + PREAMBLE@0..50 + ENVIRONMENT@0..50 + BEGIN@0..16 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..16 + L_CURLY@6..7 "{" + KEY@7..10 + WORD@7..10 "asy" + R_CURLY@10..11 "}" + LINE_BREAK@11..12 "\n" + WHITESPACE@12..16 " " + TEXT@16..22 + WORD@16..22 "printf" + MIXED_GROUP@22..39 + L_PAREN@22..23 "(" + TEXT@23..35 + WORD@23..29 "\"Hello" + WHITESPACE@29..30 " " + WORD@30..35 "World" + GENERIC_COMMAND@35..37 + COMMAND_NAME@35..37 "\\n" + TEXT@37..38 + WORD@37..38 "\"" + R_PAREN@38..39 ")" + TEXT@39..41 + WORD@39..40 ";" + LINE_BREAK@40..41 "\n" + END@41..50 + COMMAND_NAME@41..45 "\\end" + CURLY_GROUP_WORD@45..50 + L_CURLY@45..46 "{" + KEY@46..49 + WORD@46..49 "asy" + R_CURLY@49..50 "}" + + "#]], + ); +} + +#[test] +fn test_environment_definition() { + check( + r#"\newenvironment{bar}[1]{\begin{foo}}{\end{foo}}"#, + expect![[r#" + ROOT@0..47 + PREAMBLE@0..47 + ENVIRONMENT_DEFINITION@0..47 + COMMAND_NAME@0..15 "\\newenvironment" + CURLY_GROUP_WORD@15..20 + L_CURLY@15..16 "{" + KEY@16..19 + WORD@16..19 "bar" + R_CURLY@19..20 "}" + BRACK_GROUP_WORD@20..23 + L_BRACK@20..21 "[" + KEY@21..22 + WORD@21..22 "1" + R_BRACK@22..23 "]" + CURLY_GROUP@23..36 + L_CURLY@23..24 "{" + GENERIC_COMMAND@24..35 + COMMAND_NAME@24..30 "\\begin" + CURLY_GROUP@30..35 + L_CURLY@30..31 "{" + TEXT@31..34 + WORD@31..34 "foo" + R_CURLY@34..35 "}" + R_CURLY@35..36 "}" + CURLY_GROUP@36..47 + L_CURLY@36..37 "{" + GENERIC_COMMAND@37..46 + COMMAND_NAME@37..41 "\\end" + CURLY_GROUP@41..46 + L_CURLY@41..42 "{" + TEXT@42..45 + WORD@42..45 "foo" + R_CURLY@45..46 "}" + R_CURLY@46..47 "}" + + "#]], + ); +} + +#[test] +fn test_environment_definition_optional_arg() { + check( + r#"\newenvironment{foo}[1][default]{begin}{end}"#, + expect![[r#" + ROOT@0..44 + PREAMBLE@0..44 + ENVIRONMENT_DEFINITION@0..44 + COMMAND_NAME@0..15 "\\newenvironment" + CURLY_GROUP_WORD@15..20 + L_CURLY@15..16 "{" + KEY@16..19 + WORD@16..19 "foo" + R_CURLY@19..20 "}" + BRACK_GROUP_WORD@20..23 + L_BRACK@20..21 "[" + KEY@21..22 + WORD@21..22 "1" + R_BRACK@22..23 "]" + BRACK_GROUP@23..32 + L_BRACK@23..24 "[" + TEXT@24..31 + WORD@24..31 "default" + R_BRACK@31..32 "]" + CURLY_GROUP@32..39 + L_CURLY@32..33 "{" + TEXT@33..38 + WORD@33..38 "begin" + R_CURLY@38..39 "}" + CURLY_GROUP@39..44 + L_CURLY@39..40 "{" + TEXT@40..43 + WORD@40..43 "end" + R_CURLY@43..44 "}" + + "#]], + ); +} + +#[test] +fn test_environment_nested() { + check( + r#"\begin{foo} \begin{qux} \end{baz} \end{bar}"#, + expect![[r#" + ROOT@0..43 + PREAMBLE@0..43 + ENVIRONMENT@0..43 + BEGIN@0..12 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..12 + L_CURLY@6..7 "{" + KEY@7..10 + WORD@7..10 "foo" + R_CURLY@10..11 "}" + WHITESPACE@11..12 " " + ENVIRONMENT@12..34 + BEGIN@12..24 + COMMAND_NAME@12..18 "\\begin" + CURLY_GROUP_WORD@18..24 + L_CURLY@18..19 "{" + KEY@19..22 + WORD@19..22 "qux" + R_CURLY@22..23 "}" + WHITESPACE@23..24 " " + END@24..34 + COMMAND_NAME@24..28 "\\end" + CURLY_GROUP_WORD@28..34 + L_CURLY@28..29 "{" + KEY@29..32 + WORD@29..32 "baz" + R_CURLY@32..33 "}" + WHITESPACE@33..34 " " + END@34..43 + COMMAND_NAME@34..38 "\\end" + CURLY_GROUP_WORD@38..43 + L_CURLY@38..39 "{" + KEY@39..42 + WORD@39..42 "bar" + R_CURLY@42..43 "}" + + "#]], + ); +} + +#[test] +fn test_environment_nested_missing_braces() { + check( + r#"\begin{foo \begin{qux Hello World \end{baz} \end{bar"#, + expect![[r#" + ROOT@0..52 + PREAMBLE@0..52 + ENVIRONMENT@0..52 + BEGIN@0..11 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..11 + L_CURLY@6..7 "{" + KEY@7..11 + WORD@7..10 "foo" + WHITESPACE@10..11 " " + ENVIRONMENT@11..44 + BEGIN@11..34 + COMMAND_NAME@11..17 "\\begin" + CURLY_GROUP_WORD@17..34 + L_CURLY@17..18 "{" + KEY@18..34 + WORD@18..21 "qux" + WHITESPACE@21..22 " " + WORD@22..27 "Hello" + WHITESPACE@27..28 " " + WORD@28..33 "World" + WHITESPACE@33..34 " " + END@34..44 + COMMAND_NAME@34..38 "\\end" + CURLY_GROUP_WORD@38..44 + L_CURLY@38..39 "{" + KEY@39..42 + WORD@39..42 "baz" + R_CURLY@42..43 "}" + WHITESPACE@43..44 " " + END@44..52 + COMMAND_NAME@44..48 "\\end" + CURLY_GROUP_WORD@48..52 + L_CURLY@48..49 "{" + KEY@49..52 + WORD@49..52 "bar" + + "#]], + ); +} + +#[test] +fn test_environment_simple() { + check( + r#"\begin{foo} Hello World \end{bar}"#, + expect![[r#" + ROOT@0..33 + PREAMBLE@0..33 + ENVIRONMENT@0..33 + BEGIN@0..12 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..12 + L_CURLY@6..7 "{" + KEY@7..10 + WORD@7..10 "foo" + R_CURLY@10..11 "}" + WHITESPACE@11..12 " " + TEXT@12..24 + WORD@12..17 "Hello" + WHITESPACE@17..18 " " + WORD@18..23 "World" + WHITESPACE@23..24 " " + END@24..33 + COMMAND_NAME@24..28 "\\end" + CURLY_GROUP_WORD@28..33 + L_CURLY@28..29 "{" + KEY@29..32 + WORD@29..32 "bar" + R_CURLY@32..33 "}" + + "#]], + ); +} + +#[test] +fn test_equation() { + check( + r#"\[ foo bar \]"#, + expect![[r#" + ROOT@0..13 + PREAMBLE@0..13 + EQUATION@0..13 + COMMAND_NAME@0..2 "\\[" + WHITESPACE@2..3 " " + TEXT@3..11 + WORD@3..6 "foo" + WHITESPACE@6..7 " " + WORD@7..10 "bar" + WHITESPACE@10..11 " " + COMMAND_NAME@11..13 "\\]" + + "#]], + ); +} + +#[test] +fn test_equation_missing_begin() { + check( + r#"\begin{a} foo bar \] \end{b}"#, + expect![[r#" + ROOT@0..28 + PREAMBLE@0..28 + ENVIRONMENT@0..28 + BEGIN@0..10 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..10 + L_CURLY@6..7 "{" + KEY@7..8 + WORD@7..8 "a" + R_CURLY@8..9 "}" + WHITESPACE@9..10 " " + TEXT@10..18 + WORD@10..13 "foo" + WHITESPACE@13..14 " " + WORD@14..17 "bar" + WHITESPACE@17..18 " " + GENERIC_COMMAND@18..21 + COMMAND_NAME@18..20 "\\]" + WHITESPACE@20..21 " " + END@21..28 + COMMAND_NAME@21..25 "\\end" + CURLY_GROUP_WORD@25..28 + L_CURLY@25..26 "{" + KEY@26..27 + WORD@26..27 "b" + R_CURLY@27..28 "}" + + "#]], + ); +} + +#[test] +fn test_generic_command_args() { + check( + r#"\foo{bar}[qux]"#, + expect![[r#" + ROOT@0..14 + PREAMBLE@0..14 + GENERIC_COMMAND@0..14 + COMMAND_NAME@0..4 "\\foo" + CURLY_GROUP@4..9 + L_CURLY@4..5 "{" + TEXT@5..8 + WORD@5..8 "bar" + R_CURLY@8..9 "}" + MIXED_GROUP@9..14 + L_BRACK@9..10 "[" + TEXT@10..13 + WORD@10..13 "qux" + R_BRACK@13..14 "]" + + "#]], + ); +} + +#[test] +fn test_generic_command_empty() { + check( + r#"\foo"#, + expect![[r#" + ROOT@0..4 + PREAMBLE@0..4 + GENERIC_COMMAND@0..4 + COMMAND_NAME@0..4 "\\foo" + + "#]], + ); +} + +#[test] +fn test_generic_command_escape() { + check( + r#"\#"#, + expect![[r#" + ROOT@0..2 + PREAMBLE@0..2 + GENERIC_COMMAND@0..2 + COMMAND_NAME@0..2 "\\#" + + "#]], + ); +} + +#[test] +fn test_acronym_declaration() { + check( + r#"\DeclareAcronym{eg}{short = e.g,long = for example,tag = abbrev}"#, + expect![[r#" + ROOT@0..64 + PREAMBLE@0..64 + ACRONYM_DECLARATION@0..64 + COMMAND_NAME@0..15 "\\DeclareAcronym" + CURLY_GROUP_WORD@15..19 + L_CURLY@15..16 "{" + KEY@16..18 + WORD@16..18 "eg" + R_CURLY@18..19 "}" + CURLY_GROUP_KEY_VALUE@19..64 + L_CURLY@19..20 "{" + KEY_VALUE_BODY@20..63 + KEY_VALUE_PAIR@20..31 + KEY@20..26 + WORD@20..25 "short" + WHITESPACE@25..26 " " + EQUALITY_SIGN@26..27 "=" + WHITESPACE@27..28 " " + VALUE@28..31 + TEXT@28..31 + WORD@28..31 "e.g" + COMMA@31..32 "," + KEY_VALUE_PAIR@32..50 + KEY@32..37 + WORD@32..36 "long" + WHITESPACE@36..37 " " + EQUALITY_SIGN@37..38 "=" + WHITESPACE@38..39 " " + VALUE@39..50 + TEXT@39..50 + WORD@39..42 "for" + WHITESPACE@42..43 " " + WORD@43..50 "example" + COMMA@50..51 "," + KEY_VALUE_PAIR@51..63 + KEY@51..55 + WORD@51..54 "tag" + WHITESPACE@54..55 " " + EQUALITY_SIGN@55..56 "=" + WHITESPACE@56..57 " " + VALUE@57..63 + TEXT@57..63 + WORD@57..63 "abbrev" + R_CURLY@63..64 "}" + + "#]], + ); +} + +#[test] +fn test_acronym_definition_options() { + check( + r#"\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}"#, + expect![[r#" + ROOT@0..76 + PREAMBLE@0..76 + ACRONYM_DEFINITION@0..76 + COMMAND_NAME@0..11 "\\newacronym" + BRACK_GROUP_KEY_VALUE@11..43 + L_BRACK@11..12 "[" + KEY_VALUE_BODY@12..42 + KEY_VALUE_PAIR@12..42 + KEY@12..22 + WORD@12..22 "longplural" + EQUALITY_SIGN@22..23 "=" + VALUE@23..42 + CURLY_GROUP@23..42 + L_CURLY@23..24 "{" + TEXT@24..41 + WORD@24..30 "Frames" + WHITESPACE@30..31 " " + WORD@31..34 "per" + WHITESPACE@34..35 " " + WORD@35..41 "Second" + R_CURLY@41..42 "}" + R_BRACK@42..43 "]" + CURLY_GROUP_WORD@43..53 + L_CURLY@43..44 "{" + KEY@44..52 + WORD@44..52 "fpsLabel" + R_CURLY@52..53 "}" + CURLY_GROUP@53..58 + L_CURLY@53..54 "{" + TEXT@54..57 + WORD@54..57 "FPS" + R_CURLY@57..58 "}" + CURLY_GROUP@58..76 + L_CURLY@58..59 "{" + TEXT@59..75 + WORD@59..64 "Frame" + WHITESPACE@64..65 " " + WORD@65..68 "per" + WHITESPACE@68..69 " " + WORD@69..75 "Second" + R_CURLY@75..76 "}" + + "#]], + ); +} + +#[test] +fn test_acronym_definition_simple() { + check( + r#"\newacronym{fpsLabel}{FPS}{Frame per Second}"#, + expect![[r#" + ROOT@0..44 + PREAMBLE@0..44 + ACRONYM_DEFINITION@0..44 + COMMAND_NAME@0..11 "\\newacronym" + CURLY_GROUP_WORD@11..21 + L_CURLY@11..12 "{" + KEY@12..20 + WORD@12..20 "fpsLabel" + R_CURLY@20..21 "}" + CURLY_GROUP@21..26 + L_CURLY@21..22 "{" + TEXT@22..25 + WORD@22..25 "FPS" + R_CURLY@25..26 "}" + CURLY_GROUP@26..44 + L_CURLY@26..27 "{" + TEXT@27..43 + WORD@27..32 "Frame" + WHITESPACE@32..33 " " + WORD@33..36 "per" + WHITESPACE@36..37 " " + WORD@37..43 "Second" + R_CURLY@43..44 "}" + + "#]], + ); +} + +#[test] +fn test_acronym_package() { + check( + r#"\acro{fps}[FPS]{Frames per Second} +"#, + expect![[r#" + ROOT@0..35 + PREAMBLE@0..35 + ACRONYM_DEFINITION@0..35 + COMMAND_NAME@0..5 "\\acro" + CURLY_GROUP_WORD@5..10 + L_CURLY@5..6 "{" + KEY@6..9 + WORD@6..9 "fps" + R_CURLY@9..10 "}" + BRACK_GROUP@10..15 + L_BRACK@10..11 "[" + TEXT@11..14 + WORD@11..14 "FPS" + R_BRACK@14..15 "]" + CURLY_GROUP@15..35 + L_CURLY@15..16 "{" + TEXT@16..33 + WORD@16..22 "Frames" + WHITESPACE@22..23 " " + WORD@23..26 "per" + WHITESPACE@26..27 " " + WORD@27..33 "Second" + R_CURLY@33..34 "}" + LINE_BREAK@34..35 "\n" + + "#]], + ); +} + +#[test] +fn test_acronym_reference_options() { + check( + r#"\acrshort[foo=bar,baz]{fpsLabel}"#, + expect![[r#" + ROOT@0..32 + PREAMBLE@0..32 + ACRONYM_REFERENCE@0..32 + COMMAND_NAME@0..9 "\\acrshort" + BRACK_GROUP_KEY_VALUE@9..22 + L_BRACK@9..10 "[" + KEY_VALUE_BODY@10..21 + KEY_VALUE_PAIR@10..17 + KEY@10..13 + WORD@10..13 "foo" + EQUALITY_SIGN@13..14 "=" + VALUE@14..17 + TEXT@14..17 + WORD@14..17 "bar" + COMMA@17..18 "," + KEY_VALUE_PAIR@18..21 + KEY@18..21 + WORD@18..21 "baz" + R_BRACK@21..22 "]" + CURLY_GROUP_WORD@22..32 + L_CURLY@22..23 "{" + KEY@23..31 + WORD@23..31 "fpsLabel" + R_CURLY@31..32 "}" + + "#]], + ); +} + +#[test] +fn test_acronym_reference_simple() { + check( + r#"\acrshort{fpsLabel}"#, + expect![[r#" + ROOT@0..19 + PREAMBLE@0..19 + ACRONYM_REFERENCE@0..19 + COMMAND_NAME@0..9 "\\acrshort" + CURLY_GROUP_WORD@9..19 + L_CURLY@9..10 "{" + KEY@10..18 + WORD@10..18 "fpsLabel" + R_CURLY@18..19 "}" + + "#]], + ); +} + +#[test] +fn test_glossary_entry_definition_simple() { + check( + r#"\newglossaryentry{foo}{bar = baz, qux,}"#, + expect![[r#" + ROOT@0..39 + PREAMBLE@0..39 + GLOSSARY_ENTRY_DEFINITION@0..39 + COMMAND_NAME@0..17 "\\newglossaryentry" + CURLY_GROUP_WORD@17..22 + L_CURLY@17..18 "{" + KEY@18..21 + WORD@18..21 "foo" + R_CURLY@21..22 "}" + CURLY_GROUP_KEY_VALUE@22..39 + L_CURLY@22..23 "{" + KEY_VALUE_BODY@23..38 + KEY_VALUE_PAIR@23..32 + KEY@23..27 + WORD@23..26 "bar" + WHITESPACE@26..27 " " + EQUALITY_SIGN@27..28 "=" + WHITESPACE@28..29 " " + VALUE@29..32 + TEXT@29..32 + WORD@29..32 "baz" + COMMA@32..33 "," + WHITESPACE@33..34 " " + KEY_VALUE_PAIR@34..37 + KEY@34..37 + WORD@34..37 "qux" + COMMA@37..38 "," + R_CURLY@38..39 "}" + + "#]], + ); +} + +#[test] +fn test_glossary_entry_reference_options() { + check( + r#"\gls[foo = bar, qux]{baz}"#, + expect![[r#" + ROOT@0..25 + PREAMBLE@0..25 + GLOSSARY_ENTRY_REFERENCE@0..25 + COMMAND_NAME@0..4 "\\gls" + BRACK_GROUP_KEY_VALUE@4..20 + L_BRACK@4..5 "[" + KEY_VALUE_BODY@5..19 + KEY_VALUE_PAIR@5..14 + KEY@5..9 + WORD@5..8 "foo" + WHITESPACE@8..9 " " + EQUALITY_SIGN@9..10 "=" + WHITESPACE@10..11 " " + VALUE@11..14 + TEXT@11..14 + WORD@11..14 "bar" + COMMA@14..15 "," + WHITESPACE@15..16 " " + KEY_VALUE_PAIR@16..19 + KEY@16..19 + WORD@16..19 "qux" + R_BRACK@19..20 "]" + CURLY_GROUP_WORD@20..25 + L_CURLY@20..21 "{" + KEY@21..24 + WORD@21..24 "baz" + R_CURLY@24..25 "}" + + "#]], + ); +} + +#[test] +fn test_glossary_entry_reference_simple() { + check( + r#"\gls{foo}"#, + expect![[r#" + ROOT@0..9 + PREAMBLE@0..9 + GLOSSARY_ENTRY_REFERENCE@0..9 + COMMAND_NAME@0..4 "\\gls" + CURLY_GROUP_WORD@4..9 + L_CURLY@4..5 "{" + KEY@5..8 + WORD@5..8 "foo" + R_CURLY@8..9 "}" + + "#]], + ); +} + +#[test] +fn test_graphics_path() { + check( + r#"\graphicspath{{../figures/}}"#, + expect![[r#" + ROOT@0..28 + PREAMBLE@0..28 + GRAPHICS_PATH@0..28 + COMMAND_NAME@0..13 "\\graphicspath" + CURLY_GROUP@13..28 + L_CURLY@13..14 "{" + CURLY_GROUP_WORD@14..27 + L_CURLY@14..15 "{" + KEY@15..26 + WORD@15..26 "../figures/" + R_CURLY@26..27 "}" + R_CURLY@27..28 "}" + + "#]], + ); +} + +#[test] +fn test_graphics_path_command() { + check( + r#"\graphicspath{{\subfix{./img/}}}"#, + expect![[r#" + ROOT@0..32 + PREAMBLE@0..32 + GRAPHICS_PATH@0..32 + COMMAND_NAME@0..13 "\\graphicspath" + CURLY_GROUP@13..32 + L_CURLY@13..14 "{" + CURLY_GROUP_WORD@14..31 + L_CURLY@14..15 "{" + KEY@15..30 + COMMAND_NAME@15..22 "\\subfix" + CURLY_GROUP_WORD@22..30 + L_CURLY@22..23 "{" + KEY@23..29 + WORD@23..29 "./img/" + R_CURLY@29..30 "}" + R_CURLY@30..31 "}" + R_CURLY@31..32 "}" + + "#]], + ); +} + +#[test] +fn test_graphics_path_options() { + check( + r#"\graphicspath[foo]{{../figures/}}"#, + expect![[r#" + ROOT@0..33 + PREAMBLE@0..33 + GRAPHICS_PATH@0..13 + COMMAND_NAME@0..13 "\\graphicspath" + MIXED_GROUP@13..18 + L_BRACK@13..14 "[" + TEXT@14..17 + WORD@14..17 "foo" + R_BRACK@17..18 "]" + CURLY_GROUP@18..33 + L_CURLY@18..19 "{" + CURLY_GROUP@19..32 + L_CURLY@19..20 "{" + TEXT@20..31 + WORD@20..31 "../figures/" + R_CURLY@31..32 "}" + R_CURLY@32..33 "}" + + "#]], + ); +} + +#[test] +fn test_curly_group_missing_end() { + check( + r#"{hello world"#, + expect![[r#" + ROOT@0..12 + PREAMBLE@0..12 + CURLY_GROUP@0..12 + L_CURLY@0..1 "{" + TEXT@1..12 + WORD@1..6 "hello" + WHITESPACE@6..7 " " + WORD@7..12 "world" + + "#]], + ); +} + +#[test] +fn test_curly_group_simple() { + check( + r#"{hello world}"#, + expect![[r#" + ROOT@0..13 + PREAMBLE@0..13 + CURLY_GROUP@0..13 + L_CURLY@0..1 "{" + TEXT@1..12 + WORD@1..6 "hello" + WHITESPACE@6..7 " " + WORD@7..12 "world" + R_CURLY@12..13 "}" + + "#]], + ); +} + +#[test] +fn test_equation_missing_end() { + check( + r#"\begin{a} \[ foo bar \end{b}"#, + expect![[r#" + ROOT@0..28 + PREAMBLE@0..28 + ENVIRONMENT@0..28 + BEGIN@0..10 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..10 + L_CURLY@6..7 "{" + KEY@7..8 + WORD@7..8 "a" + R_CURLY@8..9 "}" + WHITESPACE@9..10 " " + EQUATION@10..21 + COMMAND_NAME@10..12 "\\[" + WHITESPACE@12..13 " " + TEXT@13..21 + WORD@13..16 "foo" + WHITESPACE@16..17 " " + WORD@17..20 "bar" + WHITESPACE@20..21 " " + END@21..28 + COMMAND_NAME@21..25 "\\end" + CURLY_GROUP_WORD@25..28 + L_CURLY@25..26 "{" + KEY@26..27 + WORD@26..27 "b" + R_CURLY@27..28 "}" + + "#]], + ); +} + +#[test] +fn test_escaped_brackets() { + check( + r#"{[}{]}"#, + expect![[r#" + ROOT@0..6 + PREAMBLE@0..6 + CURLY_GROUP@0..3 + L_CURLY@0..1 "{" + MIXED_GROUP@1..2 + L_BRACK@1..2 "[" + R_CURLY@2..3 "}" + CURLY_GROUP@3..6 + L_CURLY@3..4 "{" + ERROR@4..5 + R_BRACK@4..5 "]" + R_CURLY@5..6 "}" + + "#]], + ); +} + +#[test] +fn test_unmatched_braces() { + check( + r#"}{"#, + expect![[r#" + ROOT@0..2 + PREAMBLE@0..2 + ERROR@0..1 + R_CURLY@0..1 "}" + CURLY_GROUP@1..2 + L_CURLY@1..2 "{" + + "#]], + ); +} + +#[test] +fn test_unmatched_brackets() { + check( + r#"]["#, + expect![[r#" + ROOT@0..2 + PREAMBLE@0..2 + ERROR@0..1 + R_BRACK@0..1 "]" + MIXED_GROUP@1..2 + L_BRACK@1..2 "[" + + "#]], + ); +} + +#[test] +fn test_unmatched_brackets_with_group() { + check( + r#"{][}"#, + expect![[r#" + ROOT@0..4 + PREAMBLE@0..4 + CURLY_GROUP@0..4 + L_CURLY@0..1 "{" + ERROR@1..2 + R_BRACK@1..2 "]" + MIXED_GROUP@2..3 + L_BRACK@2..3 "[" + R_CURLY@3..4 "}" + + "#]], + ); +} + +#[test] +fn test_hello_world() { + check( + r#"Hello World!"#, + expect![[r#" + ROOT@0..12 + PREAMBLE@0..12 + TEXT@0..12 + WORD@0..5 "Hello" + WHITESPACE@5..6 " " + WORD@6..12 "World!" + + "#]], + ); +} + +#[test] +fn test_biblatex_include_options() { + check( + r#"\addbibresource[foo=bar, baz]{foo/bar.bib}"#, + expect![[r#" + ROOT@0..42 + PREAMBLE@0..42 + BIBLATEX_INCLUDE@0..42 + COMMAND_NAME@0..15 "\\addbibresource" + BRACK_GROUP_KEY_VALUE@15..29 + L_BRACK@15..16 "[" + KEY_VALUE_BODY@16..28 + KEY_VALUE_PAIR@16..23 + KEY@16..19 + WORD@16..19 "foo" + EQUALITY_SIGN@19..20 "=" + VALUE@20..23 + TEXT@20..23 + WORD@20..23 "bar" + COMMA@23..24 "," + WHITESPACE@24..25 " " + KEY_VALUE_PAIR@25..28 + KEY@25..28 + WORD@25..28 "baz" + R_BRACK@28..29 "]" + CURLY_GROUP_WORD_LIST@29..42 + L_CURLY@29..30 "{" + KEY@30..41 + WORD@30..41 "foo/bar.bib" + R_CURLY@41..42 "}" + + "#]], + ); +} + +#[test] +fn test_biblatex_include_simple() { + check( + r#"\addbibresource{foo/bar.bib}"#, + expect![[r#" + ROOT@0..28 + PREAMBLE@0..28 + BIBLATEX_INCLUDE@0..28 + COMMAND_NAME@0..15 "\\addbibresource" + CURLY_GROUP_WORD_LIST@15..28 + L_CURLY@15..16 "{" + KEY@16..27 + WORD@16..27 "foo/bar.bib" + R_CURLY@27..28 "}" + + "#]], + ); +} + +#[test] +fn test_bibtex_include_simple() { + check( + r#"\bibliography{foo/bar}"#, + expect![[r#" + ROOT@0..22 + PREAMBLE@0..22 + BIBTEX_INCLUDE@0..22 + COMMAND_NAME@0..13 "\\bibliography" + CURLY_GROUP_WORD_LIST@13..22 + L_CURLY@13..14 "{" + KEY@14..21 + WORD@14..21 "foo/bar" + R_CURLY@21..22 "}" + + "#]], + ); +} + +#[test] +fn test_class_include_empty() { + check( + r#"\documentclass{}"#, + expect![[r#" + ROOT@0..16 + PREAMBLE@0..16 + CLASS_INCLUDE@0..16 + COMMAND_NAME@0..14 "\\documentclass" + CURLY_GROUP_WORD_LIST@14..16 + L_CURLY@14..15 "{" + R_CURLY@15..16 "}" + + "#]], + ); +} + +#[test] +fn test_class_include_options() { + check( + r#"\documentclass[foo = bar, baz, qux]{article}"#, + expect![[r#" + ROOT@0..44 + PREAMBLE@0..44 + CLASS_INCLUDE@0..44 + COMMAND_NAME@0..14 "\\documentclass" + BRACK_GROUP_KEY_VALUE@14..35 + L_BRACK@14..15 "[" + KEY_VALUE_BODY@15..34 + KEY_VALUE_PAIR@15..24 + KEY@15..19 + WORD@15..18 "foo" + WHITESPACE@18..19 " " + EQUALITY_SIGN@19..20 "=" + WHITESPACE@20..21 " " + VALUE@21..24 + TEXT@21..24 + WORD@21..24 "bar" + COMMA@24..25 "," + WHITESPACE@25..26 " " + KEY_VALUE_PAIR@26..29 + KEY@26..29 + WORD@26..29 "baz" + COMMA@29..30 "," + WHITESPACE@30..31 " " + KEY_VALUE_PAIR@31..34 + KEY@31..34 + WORD@31..34 "qux" + R_BRACK@34..35 "]" + CURLY_GROUP_WORD_LIST@35..44 + L_CURLY@35..36 "{" + KEY@36..43 + WORD@36..43 "article" + R_CURLY@43..44 "}" + + "#]], + ); +} + +#[test] +fn test_class_include_simple() { + check( + r#"\documentclass{article}"#, + expect![[r#" + ROOT@0..23 + PREAMBLE@0..23 + CLASS_INCLUDE@0..23 + COMMAND_NAME@0..14 "\\documentclass" + CURLY_GROUP_WORD_LIST@14..23 + L_CURLY@14..15 "{" + KEY@15..22 + WORD@15..22 "article" + R_CURLY@22..23 "}" + + "#]], + ); +} + +#[test] +fn test_graphics_include_command() { + check( + r#"\includegraphics[width=0.5\textwidth]{\foo.\bar.pdf}"#, + expect![[r#" + ROOT@0..52 + PREAMBLE@0..52 + GRAPHICS_INCLUDE@0..52 + COMMAND_NAME@0..16 "\\includegraphics" + BRACK_GROUP_KEY_VALUE@16..37 + L_BRACK@16..17 "[" + KEY_VALUE_BODY@17..36 + KEY_VALUE_PAIR@17..36 + KEY@17..22 + WORD@17..22 "width" + EQUALITY_SIGN@22..23 "=" + VALUE@23..36 + TEXT@23..26 + WORD@23..26 "0.5" + GENERIC_COMMAND@26..36 + COMMAND_NAME@26..36 "\\textwidth" + R_BRACK@36..37 "]" + CURLY_GROUP_WORD_LIST@37..52 + L_CURLY@37..38 "{" + KEY@38..51 + COMMAND_NAME@38..42 "\\foo" + WORD@42..43 "." + COMMAND_NAME@43..47 "\\bar" + WORD@47..51 ".pdf" + R_CURLY@51..52 "}" + + "#]], + ); +} + +#[test] +fn test_graphics_include_complicated_options() { + check( + r#"\includegraphics[width=0.5\textwidth]{}"#, + expect![[r#" + ROOT@0..39 + PREAMBLE@0..39 + GRAPHICS_INCLUDE@0..39 + COMMAND_NAME@0..16 "\\includegraphics" + BRACK_GROUP_KEY_VALUE@16..37 + L_BRACK@16..17 "[" + KEY_VALUE_BODY@17..36 + KEY_VALUE_PAIR@17..36 + KEY@17..22 + WORD@17..22 "width" + EQUALITY_SIGN@22..23 "=" + VALUE@23..36 + TEXT@23..26 + WORD@23..26 "0.5" + GENERIC_COMMAND@26..36 + COMMAND_NAME@26..36 "\\textwidth" + R_BRACK@36..37 "]" + CURLY_GROUP_WORD_LIST@37..39 + L_CURLY@37..38 "{" + R_CURLY@38..39 "}" + + "#]], + ); +} + +#[test] +fn test_graphics_include_options() { + check( + r#"\includegraphics[scale=.5]{foo/bar.pdf}"#, + expect![[r#" + ROOT@0..39 + PREAMBLE@0..39 + GRAPHICS_INCLUDE@0..39 + COMMAND_NAME@0..16 "\\includegraphics" + BRACK_GROUP_KEY_VALUE@16..26 + L_BRACK@16..17 "[" + KEY_VALUE_BODY@17..25 + KEY_VALUE_PAIR@17..25 + KEY@17..22 + WORD@17..22 "scale" + EQUALITY_SIGN@22..23 "=" + VALUE@23..25 + TEXT@23..25 + WORD@23..25 ".5" + R_BRACK@25..26 "]" + CURLY_GROUP_WORD_LIST@26..39 + L_CURLY@26..27 "{" + KEY@27..38 + WORD@27..38 "foo/bar.pdf" + R_CURLY@38..39 "}" + + "#]], + ); +} + +#[test] +fn test_graphics_include_simple() { + check( + r#"\includegraphics{foo/bar.pdf}"#, + expect![[r#" + ROOT@0..29 + PREAMBLE@0..29 + GRAPHICS_INCLUDE@0..29 + COMMAND_NAME@0..16 "\\includegraphics" + CURLY_GROUP_WORD_LIST@16..29 + L_CURLY@16..17 "{" + KEY@17..28 + WORD@17..28 "foo/bar.pdf" + R_CURLY@28..29 "}" + + "#]], + ); +} + +#[test] +fn test_import_incomplete() { + check( + r#"\import{foo"#, + expect![[r#" + ROOT@0..11 + PREAMBLE@0..11 + IMPORT@0..11 + COMMAND_NAME@0..7 "\\import" + CURLY_GROUP_WORD@7..11 + L_CURLY@7..8 "{" + KEY@8..11 + WORD@8..11 "foo" + + "#]], + ); +} + +#[test] +fn test_import_simple() { + check( + r#"\import{foo}{bar}"#, + expect![[r#" + ROOT@0..17 + PREAMBLE@0..17 + IMPORT@0..17 + COMMAND_NAME@0..7 "\\import" + CURLY_GROUP_WORD@7..12 + L_CURLY@7..8 "{" + KEY@8..11 + WORD@8..11 "foo" + R_CURLY@11..12 "}" + CURLY_GROUP_WORD@12..17 + L_CURLY@12..13 "{" + KEY@13..16 + WORD@13..16 "bar" + R_CURLY@16..17 "}" + + "#]], + ); +} + +#[test] +fn test_inkscape_include_options() { + check( + r#"\includesvg[scale=.5]{foo/bar}"#, + expect![[r#" + ROOT@0..30 + PREAMBLE@0..30 + SVG_INCLUDE@0..30 + COMMAND_NAME@0..11 "\\includesvg" + BRACK_GROUP_KEY_VALUE@11..21 + L_BRACK@11..12 "[" + KEY_VALUE_BODY@12..20 + KEY_VALUE_PAIR@12..20 + KEY@12..17 + WORD@12..17 "scale" + EQUALITY_SIGN@17..18 "=" + VALUE@18..20 + TEXT@18..20 + WORD@18..20 ".5" + R_BRACK@20..21 "]" + CURLY_GROUP_WORD_LIST@21..30 + L_CURLY@21..22 "{" + KEY@22..29 + WORD@22..29 "foo/bar" + R_CURLY@29..30 "}" + + "#]], + ); +} + +#[test] +fn test_inkscape_include_simple() { + check( + r#"\includesvg{foo/bar}"#, + expect![[r#" + ROOT@0..20 + PREAMBLE@0..20 + SVG_INCLUDE@0..20 + COMMAND_NAME@0..11 "\\includesvg" + CURLY_GROUP_WORD_LIST@11..20 + L_CURLY@11..12 "{" + KEY@12..19 + WORD@12..19 "foo/bar" + R_CURLY@19..20 "}" + + "#]], + ); +} + +#[test] +fn test_latex_include_equality_sign() { + check( + r#"\include{foo=bar}"#, + expect![[r#" + ROOT@0..17 + PREAMBLE@0..17 + LATEX_INCLUDE@0..17 + COMMAND_NAME@0..8 "\\include" + CURLY_GROUP_WORD_LIST@8..17 + L_CURLY@8..9 "{" + KEY@9..16 + WORD@9..12 "foo" + EQUALITY_SIGN@12..13 "=" + WORD@13..16 "bar" + R_CURLY@16..17 "}" + + "#]], + ); +} + +#[test] +fn test_latex_include_simple() { + check( + r#"\include{foo/bar}"#, + expect![[r#" + ROOT@0..17 + PREAMBLE@0..17 + LATEX_INCLUDE@0..17 + COMMAND_NAME@0..8 "\\include" + CURLY_GROUP_WORD_LIST@8..17 + L_CURLY@8..9 "{" + KEY@9..16 + WORD@9..16 "foo/bar" + R_CURLY@16..17 "}" + + "#]], + ); +} + +#[test] +fn test_latex_input_path_brackets() { + check( + r#"\input{foo[bar].tex}"#, + expect![[r#" + ROOT@0..20 + PREAMBLE@0..20 + LATEX_INCLUDE@0..20 + COMMAND_NAME@0..6 "\\input" + CURLY_GROUP_WORD_LIST@6..20 + L_CURLY@6..7 "{" + KEY@7..19 + WORD@7..10 "foo" + L_BRACK@10..11 "[" + WORD@11..14 "bar" + R_BRACK@14..15 "]" + WORD@15..19 ".tex" + R_CURLY@19..20 "}" + + "#]], + ); +} + +#[test] +fn test_package_include_empty() { + check( + r#"\usepackage{}"#, + expect![[r#" + ROOT@0..13 + PREAMBLE@0..13 + PACKAGE_INCLUDE@0..13 + COMMAND_NAME@0..11 "\\usepackage" + CURLY_GROUP_WORD_LIST@11..13 + L_CURLY@11..12 "{" + R_CURLY@12..13 "}" + + "#]], + ); +} + +#[test] +fn test_package_include_multiple() { + check( + r#"\usepackage{amsmath, lipsum}"#, + expect![[r#" + ROOT@0..28 + PREAMBLE@0..28 + PACKAGE_INCLUDE@0..28 + COMMAND_NAME@0..11 "\\usepackage" + CURLY_GROUP_WORD_LIST@11..28 + L_CURLY@11..12 "{" + KEY@12..19 + WORD@12..19 "amsmath" + COMMA@19..20 "," + WHITESPACE@20..21 " " + KEY@21..27 + WORD@21..27 "lipsum" + R_CURLY@27..28 "}" + + "#]], + ); +} + +#[test] +fn test_package_include_options() { + check( + r#"\usepackage[foo = bar, baz, qux]{amsmath}"#, + expect![[r#" + ROOT@0..41 + PREAMBLE@0..41 + PACKAGE_INCLUDE@0..41 + COMMAND_NAME@0..11 "\\usepackage" + BRACK_GROUP_KEY_VALUE@11..32 + L_BRACK@11..12 "[" + KEY_VALUE_BODY@12..31 + KEY_VALUE_PAIR@12..21 + KEY@12..16 + WORD@12..15 "foo" + WHITESPACE@15..16 " " + EQUALITY_SIGN@16..17 "=" + WHITESPACE@17..18 " " + VALUE@18..21 + TEXT@18..21 + WORD@18..21 "bar" + COMMA@21..22 "," + WHITESPACE@22..23 " " + KEY_VALUE_PAIR@23..26 + KEY@23..26 + WORD@23..26 "baz" + COMMA@26..27 "," + WHITESPACE@27..28 " " + KEY_VALUE_PAIR@28..31 + KEY@28..31 + WORD@28..31 "qux" + R_BRACK@31..32 "]" + CURLY_GROUP_WORD_LIST@32..41 + L_CURLY@32..33 "{" + KEY@33..40 + WORD@33..40 "amsmath" + R_CURLY@40..41 "}" + + "#]], + ); +} + +#[test] +fn test_package_include_simple() { + check( + r#"\usepackage{amsmath}"#, + expect![[r#" + ROOT@0..20 + PREAMBLE@0..20 + PACKAGE_INCLUDE@0..20 + COMMAND_NAME@0..11 "\\usepackage" + CURLY_GROUP_WORD_LIST@11..20 + L_CURLY@11..12 "{" + KEY@12..19 + WORD@12..19 "amsmath" + R_CURLY@19..20 "}" + + "#]], + ); +} + +#[test] +fn test_pgf_library_import_simple() { + check( + r#"\usepgflibrary{foo}"#, + expect![[r#" + ROOT@0..19 + PREAMBLE@0..19 + TIKZ_LIBRARY_IMPORT@0..19 + COMMAND_NAME@0..14 "\\usepgflibrary" + CURLY_GROUP_WORD_LIST@14..19 + L_CURLY@14..15 "{" + KEY@15..18 + WORD@15..18 "foo" + R_CURLY@18..19 "}" + + "#]], + ); +} + +#[test] +fn test_svg_include_options() { + check( + r#"\includesvg[scale=.5]{foo/bar.svg}"#, + expect![[r#" + ROOT@0..34 + PREAMBLE@0..34 + SVG_INCLUDE@0..34 + COMMAND_NAME@0..11 "\\includesvg" + BRACK_GROUP_KEY_VALUE@11..21 + L_BRACK@11..12 "[" + KEY_VALUE_BODY@12..20 + KEY_VALUE_PAIR@12..20 + KEY@12..17 + WORD@12..17 "scale" + EQUALITY_SIGN@17..18 "=" + VALUE@18..20 + TEXT@18..20 + WORD@18..20 ".5" + R_BRACK@20..21 "]" + CURLY_GROUP_WORD_LIST@21..34 + L_CURLY@21..22 "{" + KEY@22..33 + WORD@22..33 "foo/bar.svg" + R_CURLY@33..34 "}" + + "#]], + ); +} + +#[test] +fn test_svg_include_simple() { + check( + r#"\includesvg{foo/bar.svg}"#, + expect![[r#" + ROOT@0..24 + PREAMBLE@0..24 + SVG_INCLUDE@0..24 + COMMAND_NAME@0..11 "\\includesvg" + CURLY_GROUP_WORD_LIST@11..24 + L_CURLY@11..12 "{" + KEY@12..23 + WORD@12..23 "foo/bar.svg" + R_CURLY@23..24 "}" + + "#]], + ); +} + +#[test] +fn test_tikz_library_import_simple() { + check( + r#"\usetikzlibrary{foo}"#, + expect![[r#" + ROOT@0..20 + PREAMBLE@0..20 + TIKZ_LIBRARY_IMPORT@0..20 + COMMAND_NAME@0..15 "\\usetikzlibrary" + CURLY_GROUP_WORD_LIST@15..20 + L_CURLY@15..16 "{" + KEY@16..19 + WORD@16..19 "foo" + R_CURLY@19..20 "}" + + "#]], + ); +} + +#[test] +fn test_verbatim_include_simple() { + check( + r#"\verbatiminput{foo/bar.txt}"#, + expect![[r#" + ROOT@0..27 + PREAMBLE@0..27 + VERBATIM_INCLUDE@0..27 + COMMAND_NAME@0..14 "\\verbatiminput" + CURLY_GROUP_WORD_LIST@14..27 + L_CURLY@14..15 "{" + KEY@15..26 + WORD@15..26 "foo/bar.txt" + R_CURLY@26..27 "}" + + "#]], + ); +} + +#[test] +fn test_inline() { + check( + r#"$x \in [0, \infty)$"#, + expect![[r#" + ROOT@0..19 + PREAMBLE@0..19 + FORMULA@0..19 + DOLLAR@0..1 "$" + TEXT@1..3 + WORD@1..2 "x" + WHITESPACE@2..3 " " + GENERIC_COMMAND@3..18 + COMMAND_NAME@3..6 "\\in" + WHITESPACE@6..7 " " + MIXED_GROUP@7..18 + L_BRACK@7..8 "[" + TEXT@8..11 + WORD@8..9 "0" + COMMA@9..10 "," + WHITESPACE@10..11 " " + GENERIC_COMMAND@11..17 + COMMAND_NAME@11..17 "\\infty" + R_PAREN@17..18 ")" + DOLLAR@18..19 "$" + + "#]], + ); +} + +#[test] +fn test_inline_double_dollar() { + check( + r#"$$x \in [0, \infty)$$"#, + expect![[r#" + ROOT@0..21 + PREAMBLE@0..21 + FORMULA@0..21 + DOLLAR@0..2 "$$" + TEXT@2..4 + WORD@2..3 "x" + WHITESPACE@3..4 " " + GENERIC_COMMAND@4..19 + COMMAND_NAME@4..7 "\\in" + WHITESPACE@7..8 " " + MIXED_GROUP@8..19 + L_BRACK@8..9 "[" + TEXT@9..12 + WORD@9..10 "0" + COMMA@10..11 "," + WHITESPACE@11..12 " " + GENERIC_COMMAND@12..18 + COMMAND_NAME@12..18 "\\infty" + R_PAREN@18..19 ")" + DOLLAR@19..21 "$$" + + "#]], + ); +} + +#[test] +fn test_issue_568() { + check( + r#"\input{|ipython scripts/test.ipynb} +\label{fig:x=2}"#, + expect![[r#" + ROOT@0..51 + PREAMBLE@0..51 + LATEX_INCLUDE@0..36 + COMMAND_NAME@0..6 "\\input" + CURLY_GROUP_WORD_LIST@6..36 + L_CURLY@6..7 "{" + WORD@7..8 "|" + KEY@8..34 + WORD@8..15 "ipython" + WHITESPACE@15..16 " " + WORD@16..34 "scripts/test.ipynb" + R_CURLY@34..35 "}" + LINE_BREAK@35..36 "\n" + LABEL_DEFINITION@36..51 + COMMAND_NAME@36..42 "\\label" + CURLY_GROUP_WORD@42..51 + L_CURLY@42..43 "{" + KEY@43..50 + WORD@43..48 "fig:x" + EQUALITY_SIGN@48..49 "=" + WORD@49..50 "2" + R_CURLY@50..51 "}" + + "#]], + ); +} + +#[test] +fn test_issue_745() { + check( + r#"\documentclass{article} +\usepackage{tabularray} + +\ExplSyntaxOn +\NewDocumentEnvironment{exptblr}{O{}m} + { + \use:x + { + \exp_not:N \begin{tblr} + [\exp_not:n{#1}] + {#2} + } + } + { + \end{tblr} + } +\ExplSyntaxOff + +\begin{document} + +\end{document}"#, + expect![[r##" + ROOT@0..271 + PREAMBLE@0..271 + CLASS_INCLUDE@0..24 + COMMAND_NAME@0..14 "\\documentclass" + CURLY_GROUP_WORD_LIST@14..24 + L_CURLY@14..15 "{" + KEY@15..22 + WORD@15..22 "article" + R_CURLY@22..23 "}" + LINE_BREAK@23..24 "\n" + PACKAGE_INCLUDE@24..50 + COMMAND_NAME@24..35 "\\usepackage" + CURLY_GROUP_WORD_LIST@35..50 + L_CURLY@35..36 "{" + KEY@36..46 + WORD@36..46 "tabularray" + R_CURLY@46..47 "}" + WHITESPACE@47..48 " " + LINE_BREAK@48..50 "\n\n" + GENERIC_COMMAND@50..64 + COMMAND_NAME@50..63 "\\ExplSyntaxOn" + LINE_BREAK@63..64 "\n" + GENERIC_COMMAND@64..223 + COMMAND_NAME@64..87 "\\NewDocumentEnvironment" + CURLY_GROUP@87..96 + L_CURLY@87..88 "{" + TEXT@88..95 + WORD@88..95 "exptblr" + R_CURLY@95..96 "}" + CURLY_GROUP@96..107 + L_CURLY@96..97 "{" + TEXT@97..98 + WORD@97..98 "O" + CURLY_GROUP@98..100 + L_CURLY@98..99 "{" + R_CURLY@99..100 "}" + TEXT@100..101 + WORD@100..101 "m" + R_CURLY@101..102 "}" + LINE_BREAK@102..103 "\n" + WHITESPACE@103..107 " " + CURLY_GROUP@107..200 + L_CURLY@107..108 "{" + LINE_BREAK@108..109 "\n" + WHITESPACE@109..113 " " + GENERIC_COMMAND@113..194 + COMMAND_NAME@113..119 "\\use:x" + LINE_BREAK@119..120 "\n" + WHITESPACE@120..124 " " + CURLY_GROUP@124..194 + L_CURLY@124..125 "{" + LINE_BREAK@125..126 "\n" + WHITESPACE@126..130 " " + GENERIC_COMMAND@130..141 + COMMAND_NAME@130..140 "\\exp_not:N" + WHITESPACE@140..141 " " + ENVIRONMENT@141..188 + BEGIN@141..179 + COMMAND_NAME@141..147 "\\begin" + CURLY_GROUP_WORD@147..158 + L_CURLY@147..148 "{" + KEY@148..152 + WORD@148..152 "tblr" + R_CURLY@152..153 "}" + LINE_BREAK@153..154 "\n" + WHITESPACE@154..158 " " + BRACK_GROUP@158..179 + L_BRACK@158..159 "[" + GENERIC_COMMAND@159..173 + COMMAND_NAME@159..169 "\\exp_not:n" + CURLY_GROUP@169..173 + L_CURLY@169..170 "{" + TEXT@170..172 + WORD@170..172 "#1" + R_CURLY@172..173 "}" + R_BRACK@173..174 "]" + LINE_BREAK@174..175 "\n" + WHITESPACE@175..179 " " + CURLY_GROUP@179..188 + L_CURLY@179..180 "{" + TEXT@180..182 + WORD@180..182 "#2" + R_CURLY@182..183 "}" + LINE_BREAK@183..184 "\n" + WHITESPACE@184..188 " " + R_CURLY@188..189 "}" + LINE_BREAK@189..190 "\n" + WHITESPACE@190..194 " " + R_CURLY@194..195 "}" + LINE_BREAK@195..196 "\n" + WHITESPACE@196..200 " " + CURLY_GROUP@200..223 + L_CURLY@200..201 "{" + LINE_BREAK@201..202 "\n" + WHITESPACE@202..206 " " + GENERIC_COMMAND@206..221 + COMMAND_NAME@206..210 "\\end" + CURLY_GROUP@210..221 + L_CURLY@210..211 "{" + TEXT@211..215 + WORD@211..215 "tblr" + R_CURLY@215..216 "}" + LINE_BREAK@216..217 "\n" + WHITESPACE@217..221 " " + R_CURLY@221..222 "}" + LINE_BREAK@222..223 "\n" + GENERIC_COMMAND@223..239 + COMMAND_NAME@223..237 "\\ExplSyntaxOff" + LINE_BREAK@237..239 "\n\n" + ENVIRONMENT@239..271 + BEGIN@239..257 + COMMAND_NAME@239..245 "\\begin" + CURLY_GROUP_WORD@245..257 + L_CURLY@245..246 "{" + KEY@246..254 + WORD@246..254 "document" + R_CURLY@254..255 "}" + LINE_BREAK@255..257 "\n\n" + END@257..271 + COMMAND_NAME@257..261 "\\end" + CURLY_GROUP_WORD@261..271 + L_CURLY@261..262 "{" + KEY@262..270 + WORD@262..270 "document" + R_CURLY@270..271 "}" + + "##]], + ); +} + +#[test] +fn test_issue_789() { + check( + r#"\graphicspath{test}"#, + expect![[r#" + ROOT@0..19 + PREAMBLE@0..19 + GRAPHICS_PATH@0..19 + COMMAND_NAME@0..13 "\\graphicspath" + CURLY_GROUP_WORD@13..19 + L_CURLY@13..14 "{" + KEY@14..18 + WORD@14..18 "test" + R_CURLY@18..19 "}" + + "#]], + ); +} + +#[test] +fn test_issue_828() { + check( + r#"\verb|<STATEMENT> if(<expr>){<body>else{<body>|"#, + expect![[r#" + ROOT@0..51 + PREAMBLE@0..51 + GENERIC_COMMAND@0..5 + COMMAND_NAME@0..5 "\\verb" + VERBATIM@5..6 "|" + VERBATIM@6..17 "<STATEMENT>" + VERBATIM@17..22 " " + VERBATIM@22..24 "if" + VERBATIM@24..25 "(" + VERBATIM@25..31 "<expr>" + VERBATIM@31..32 ")" + VERBATIM@32..33 "{" + VERBATIM@33..43 "<body>else" + VERBATIM@43..44 "{" + VERBATIM@44..50 "<body>" + VERBATIM@50..51 "|" + + "#]], + ); +} + +#[test] +fn test_issue_853() { + check( + r#"\documentclass{minimal} +\begin{document} +This is an asdf undefined command +\iffalse + \iffalse\fi + \end{enumerate} +\fi +\end{document}"#, + expect![[r#" + ROOT@0..135 + PREAMBLE@0..135 + CLASS_INCLUDE@0..24 + COMMAND_NAME@0..14 "\\documentclass" + CURLY_GROUP_WORD_LIST@14..24 + L_CURLY@14..15 "{" + KEY@15..22 + WORD@15..22 "minimal" + R_CURLY@22..23 "}" + LINE_BREAK@23..24 "\n" + ENVIRONMENT@24..135 + BEGIN@24..41 + COMMAND_NAME@24..30 "\\begin" + CURLY_GROUP_WORD@30..41 + L_CURLY@30..31 "{" + KEY@31..39 + WORD@31..39 "document" + R_CURLY@39..40 "}" + LINE_BREAK@40..41 "\n" + TEXT@41..75 + WORD@41..45 "This" + WHITESPACE@45..46 " " + WORD@46..48 "is" + WHITESPACE@48..49 " " + WORD@49..51 "an" + WHITESPACE@51..52 " " + WORD@52..56 "asdf" + WHITESPACE@56..57 " " + WORD@57..66 "undefined" + WHITESPACE@66..67 " " + WORD@67..74 "command" + LINE_BREAK@74..75 "\n" + BLOCK_COMMENT@75..120 + COMMAND_NAME@75..83 "\\iffalse" + LINE_BREAK@83..84 "\n" + WHITESPACE@84..86 " " + BLOCK_COMMENT@86..97 + COMMAND_NAME@86..94 "\\iffalse" + COMMAND_NAME@94..97 "\\fi" + LINE_BREAK@97..98 "\n" + WHITESPACE@98..100 " " + COMMAND_NAME@100..104 "\\end" + L_CURLY@104..105 "{" + WORD@105..114 "enumerate" + R_CURLY@114..115 "}" + WHITESPACE@115..116 " " + LINE_BREAK@116..117 "\n" + COMMAND_NAME@117..120 "\\fi" + LINE_BREAK@120..121 "\n" + END@121..135 + COMMAND_NAME@121..125 "\\end" + CURLY_GROUP_WORD@125..135 + L_CURLY@125..126 "{" + KEY@126..134 + WORD@126..134 "document" + R_CURLY@134..135 "}" + + "#]], + ); +} + +#[test] +fn test_issue_857() { + check( + r#"\newcommand\ö{} +\newcommand{\öö}{} +\newcommand\123{}"#, + expect![[r#" + ROOT@0..55 + PREAMBLE@0..55 + COMMAND_DEFINITION@0..11 + COMMAND_NAME@0..11 "\\newcommand" + GENERIC_COMMAND@11..17 + COMMAND_NAME@11..14 "\\ö" + CURLY_GROUP@14..17 + L_CURLY@14..15 "{" + R_CURLY@15..16 "}" + LINE_BREAK@16..17 "\n" + COMMAND_DEFINITION@17..38 + COMMAND_NAME@17..28 "\\newcommand" + CURLY_GROUP_COMMAND@28..35 + L_CURLY@28..29 "{" + COMMAND_NAME@29..34 "\\öö" + R_CURLY@34..35 "}" + CURLY_GROUP@35..38 + L_CURLY@35..36 "{" + R_CURLY@36..37 "}" + LINE_BREAK@37..38 "\n" + COMMAND_DEFINITION@38..49 + COMMAND_NAME@38..49 "\\newcommand" + GENERIC_COMMAND@49..55 + COMMAND_NAME@49..53 "\\123" + CURLY_GROUP@53..55 + L_CURLY@53..54 "{" + R_CURLY@54..55 "}" + + "#]], + ); +} + +#[test] +fn test_issue_874() { + check( + r#"\includegraphics[scale=0.2]{7.4).jpg}"#, + expect![[r#" + ROOT@0..37 + PREAMBLE@0..37 + GRAPHICS_INCLUDE@0..37 + COMMAND_NAME@0..16 "\\includegraphics" + BRACK_GROUP_KEY_VALUE@16..27 + L_BRACK@16..17 "[" + KEY_VALUE_BODY@17..26 + KEY_VALUE_PAIR@17..26 + KEY@17..22 + WORD@17..22 "scale" + EQUALITY_SIGN@22..23 "=" + VALUE@23..26 + TEXT@23..26 + WORD@23..26 "0.2" + R_BRACK@26..27 "]" + CURLY_GROUP_WORD_LIST@27..37 + L_CURLY@27..28 "{" + KEY@28..36 + WORD@28..31 "7.4" + R_PAREN@31..32 ")" + WORD@32..36 ".jpg" + R_CURLY@36..37 "}" + + "#]], + ); +} + +#[test] +fn test_issue_919() { + check( + r#"\documentclass{article} + +\usepackage{ + lipsum, % provides blindtext + booktabs, % better rules for tables + %xcolor % easily define colors with \definecolor{}{}{} +} + +\begin{document} + \lipsum +\end{document} +"#, + expect![[r#" + ROOT@0..217 + PREAMBLE@0..217 + CLASS_INCLUDE@0..25 + COMMAND_NAME@0..14 "\\documentclass" + CURLY_GROUP_WORD_LIST@14..25 + L_CURLY@14..15 "{" + KEY@15..22 + WORD@15..22 "article" + R_CURLY@22..23 "}" + LINE_BREAK@23..25 "\n\n" + PACKAGE_INCLUDE@25..173 + COMMAND_NAME@25..36 "\\usepackage" + CURLY_GROUP_WORD_LIST@36..173 + L_CURLY@36..37 "{" + LINE_BREAK@37..38 "\n" + WHITESPACE@38..42 " " + KEY@42..48 + WORD@42..48 "lipsum" + COMMA@48..49 "," + WHITESPACE@49..50 " " + COMMENT@50..70 "% provides blindtext" + LINE_BREAK@70..71 "\n" + WHITESPACE@71..75 " " + KEY@75..83 + WORD@75..83 "booktabs" + COMMA@83..84 "," + WHITESPACE@84..85 " " + COMMENT@85..110 "% better rules for ta ..." + LINE_BREAK@110..111 "\n" + WHITESPACE@111..115 " " + COMMENT@115..169 "%xcolor % easily defi ..." + LINE_BREAK@169..170 "\n" + R_CURLY@170..171 "}" + LINE_BREAK@171..173 "\n\n" + ENVIRONMENT@173..217 + BEGIN@173..194 + COMMAND_NAME@173..179 "\\begin" + CURLY_GROUP_WORD@179..194 + L_CURLY@179..180 "{" + KEY@180..188 + WORD@180..188 "document" + R_CURLY@188..189 "}" + LINE_BREAK@189..190 "\n" + WHITESPACE@190..194 " " + GENERIC_COMMAND@194..202 + COMMAND_NAME@194..201 "\\lipsum" + LINE_BREAK@201..202 "\n" + END@202..217 + COMMAND_NAME@202..206 "\\end" + CURLY_GROUP_WORD@206..217 + L_CURLY@206..207 "{" + KEY@207..215 + WORD@207..215 "document" + R_CURLY@215..216 "}" + LINE_BREAK@216..217 "\n" + + "#]], + ); +} + +#[test] +fn test_issue_931() { + check( + r#"\bibliography{$HOME/Literature}"#, + expect![[r#" + ROOT@0..31 + PREAMBLE@0..31 + BIBTEX_INCLUDE@0..31 + COMMAND_NAME@0..13 "\\bibliography" + CURLY_GROUP_WORD_LIST@13..31 + L_CURLY@13..14 "{" + KEY@14..30 + DOLLAR@14..15 "$" + WORD@15..30 "HOME/Literature" + R_CURLY@30..31 "}" + + "#]], + ); +} + +#[test] +fn test_label_definition_line_break() { + check( + r#"\label{hello +world}"#, + expect![[r#" + ROOT@0..19 + PREAMBLE@0..19 + LABEL_DEFINITION@0..13 + COMMAND_NAME@0..6 "\\label" + CURLY_GROUP_WORD@6..13 + L_CURLY@6..7 "{" + KEY@7..13 + WORD@7..12 "hello" + LINE_BREAK@12..13 "\n" + TEXT@13..18 + WORD@13..18 "world" + ERROR@18..19 + R_CURLY@18..19 "}" + + "#]], + ); +} + +#[test] +fn test_label_definition_simple() { + check( + r#"\label{foo}"#, + expect![[r#" + ROOT@0..11 + PREAMBLE@0..11 + LABEL_DEFINITION@0..11 + COMMAND_NAME@0..6 "\\label" + CURLY_GROUP_WORD@6..11 + L_CURLY@6..7 "{" + KEY@7..10 + WORD@7..10 "foo" + R_CURLY@10..11 "}" + + "#]], + ); +} + +#[test] +fn test_label_number() { + check( + r#"\newlabel{foo}{{1.1}}"#, + expect![[r#" + ROOT@0..21 + PREAMBLE@0..21 + LABEL_NUMBER@0..21 + COMMAND_NAME@0..9 "\\newlabel" + CURLY_GROUP_WORD@9..14 + L_CURLY@9..10 "{" + KEY@10..13 + WORD@10..13 "foo" + R_CURLY@13..14 "}" + CURLY_GROUP@14..21 + L_CURLY@14..15 "{" + CURLY_GROUP@15..20 + L_CURLY@15..16 "{" + TEXT@16..19 + WORD@16..19 "1.1" + R_CURLY@19..20 "}" + R_CURLY@20..21 "}" + + "#]], + ); +} + +#[test] +fn test_label_reference_equation() { + check( + r#"\eqref{foo}"#, + expect![[r#" + ROOT@0..11 + PREAMBLE@0..11 + LABEL_REFERENCE@0..11 + COMMAND_NAME@0..6 "\\eqref" + CURLY_GROUP_WORD_LIST@6..11 + L_CURLY@6..7 "{" + KEY@7..10 + WORD@7..10 "foo" + R_CURLY@10..11 "}" + + "#]], + ); +} + +#[test] +fn test_label_reference_incomplete() { + check( + r#"Equation \eqref{eq is a \emph{useful} identity."#, + expect![[r#" + ROOT@0..47 + PREAMBLE@0..47 + TEXT@0..9 + WORD@0..8 "Equation" + WHITESPACE@8..9 " " + LABEL_REFERENCE@9..24 + COMMAND_NAME@9..15 "\\eqref" + CURLY_GROUP_WORD_LIST@15..24 + L_CURLY@15..16 "{" + KEY@16..24 + WORD@16..18 "eq" + WHITESPACE@18..19 " " + WORD@19..21 "is" + WHITESPACE@21..22 " " + WORD@22..23 "a" + WHITESPACE@23..24 " " + GENERIC_COMMAND@24..38 + COMMAND_NAME@24..29 "\\emph" + CURLY_GROUP@29..38 + L_CURLY@29..30 "{" + TEXT@30..36 + WORD@30..36 "useful" + R_CURLY@36..37 "}" + WHITESPACE@37..38 " " + TEXT@38..47 + WORD@38..47 "identity." + + "#]], + ); +} + +#[test] +fn test_label_reference_multiple() { + check( + r#"\ref{foo, bar}"#, + expect![[r#" + ROOT@0..14 + PREAMBLE@0..14 + LABEL_REFERENCE@0..14 + COMMAND_NAME@0..4 "\\ref" + CURLY_GROUP_WORD_LIST@4..14 + L_CURLY@4..5 "{" + KEY@5..8 + WORD@5..8 "foo" + COMMA@8..9 "," + WHITESPACE@9..10 " " + KEY@10..13 + WORD@10..13 "bar" + R_CURLY@13..14 "}" + + "#]], + ); +} + +#[test] +fn test_label_reference_range_error() { + check( + r#"\crefrange{foo{bar}"#, + expect![[r#" + ROOT@0..19 + PREAMBLE@0..19 + LABEL_REFERENCE_RANGE@0..19 + COMMAND_NAME@0..10 "\\crefrange" + CURLY_GROUP_WORD@10..14 + L_CURLY@10..11 "{" + KEY@11..14 + WORD@11..14 "foo" + CURLY_GROUP_WORD@14..19 + L_CURLY@14..15 "{" + KEY@15..18 + WORD@15..18 "bar" + R_CURLY@18..19 "}" + + "#]], + ); +} + +#[test] +fn test_label_reference_range_incomplete() { + check( + r#"\crefrange{foo}"#, + expect![[r#" + ROOT@0..15 + PREAMBLE@0..15 + LABEL_REFERENCE_RANGE@0..15 + COMMAND_NAME@0..10 "\\crefrange" + CURLY_GROUP_WORD@10..15 + L_CURLY@10..11 "{" + KEY@11..14 + WORD@11..14 "foo" + R_CURLY@14..15 "}" + + "#]], + ); +} + +#[test] +fn test_label_reference_range_simple() { + check( + r#"\crefrange{foo}{bar}"#, + expect![[r#" + ROOT@0..20 + PREAMBLE@0..20 + LABEL_REFERENCE_RANGE@0..20 + COMMAND_NAME@0..10 "\\crefrange" + CURLY_GROUP_WORD@10..15 + L_CURLY@10..11 "{" + KEY@11..14 + WORD@11..14 "foo" + R_CURLY@14..15 "}" + CURLY_GROUP_WORD@15..20 + L_CURLY@15..16 "{" + KEY@16..19 + WORD@16..19 "bar" + R_CURLY@19..20 "}" + + "#]], + ); +} + +#[test] +fn test_label_reference_simple() { + check( + r#"\ref{foo}"#, + expect![[r#" + ROOT@0..9 + PREAMBLE@0..9 + LABEL_REFERENCE@0..9 + COMMAND_NAME@0..4 "\\ref" + CURLY_GROUP_WORD_LIST@4..9 + L_CURLY@4..5 "{" + KEY@5..8 + WORD@5..8 "foo" + R_CURLY@8..9 "}" + + "#]], + ); +} + +#[test] +fn test_parameter() { + check( + r#"#1"#, + expect![[r##" + ROOT@0..2 + PREAMBLE@0..2 + TEXT@0..2 + WORD@0..2 "#1" + + "##]], + ); +} + +#[test] +fn test_parameter_error() { + check( + r#"#"#, + expect![[r##" + ROOT@0..1 + PREAMBLE@0..1 + TEXT@0..1 + WORD@0..1 "#" + + "##]], + ); +} + +#[test] +fn test_paragraphs() { + check( + r#"\section{Section 1} +Section 1 + +\paragraph{Paragraph 1} +Paragraph 1 + +\paragraph{Paragraph 2} +Paragraph 2 + +\section{Section 2} +Section 2"#, + expect![[r#" + ROOT@0..134 + PREAMBLE@0..134 + SECTION@0..105 + COMMAND_NAME@0..8 "\\section" + CURLY_GROUP@8..20 + L_CURLY@8..9 "{" + TEXT@9..18 + WORD@9..16 "Section" + WHITESPACE@16..17 " " + WORD@17..18 "1" + R_CURLY@18..19 "}" + LINE_BREAK@19..20 "\n" + TEXT@20..31 + WORD@20..27 "Section" + WHITESPACE@27..28 " " + WORD@28..29 "1" + LINE_BREAK@29..31 "\n\n" + PARAGRAPH@31..68 + COMMAND_NAME@31..41 "\\paragraph" + CURLY_GROUP@41..55 + L_CURLY@41..42 "{" + TEXT@42..53 + WORD@42..51 "Paragraph" + WHITESPACE@51..52 " " + WORD@52..53 "1" + R_CURLY@53..54 "}" + LINE_BREAK@54..55 "\n" + TEXT@55..68 + WORD@55..64 "Paragraph" + WHITESPACE@64..65 " " + WORD@65..66 "1" + LINE_BREAK@66..68 "\n\n" + PARAGRAPH@68..105 + COMMAND_NAME@68..78 "\\paragraph" + CURLY_GROUP@78..92 + L_CURLY@78..79 "{" + TEXT@79..90 + WORD@79..88 "Paragraph" + WHITESPACE@88..89 " " + WORD@89..90 "2" + R_CURLY@90..91 "}" + LINE_BREAK@91..92 "\n" + TEXT@92..105 + WORD@92..101 "Paragraph" + WHITESPACE@101..102 " " + WORD@102..103 "2" + LINE_BREAK@103..105 "\n\n" + SECTION@105..134 + COMMAND_NAME@105..113 "\\section" + CURLY_GROUP@113..125 + L_CURLY@113..114 "{" + TEXT@114..123 + WORD@114..121 "Section" + WHITESPACE@121..122 " " + WORD@122..123 "2" + R_CURLY@123..124 "}" + LINE_BREAK@124..125 "\n" + TEXT@125..134 + WORD@125..132 "Section" + WHITESPACE@132..133 " " + WORD@133..134 "2" + + "#]], + ); +} + +#[test] +fn test_structure_enum_item() { + check( + r#"\begin{enumerate} \item 1 \item[2] 2 \item 3 \end{enumerate}"#, + expect![[r#" + ROOT@0..60 + PREAMBLE@0..60 + ENVIRONMENT@0..60 + BEGIN@0..18 + COMMAND_NAME@0..6 "\\begin" + CURLY_GROUP_WORD@6..18 + L_CURLY@6..7 "{" + KEY@7..16 + WORD@7..16 "enumerate" + R_CURLY@16..17 "}" + WHITESPACE@17..18 " " + ENUM_ITEM@18..26 + COMMAND_NAME@18..23 "\\item" + WHITESPACE@23..24 " " + TEXT@24..26 + WORD@24..25 "1" + WHITESPACE@25..26 " " + ENUM_ITEM@26..37 + COMMAND_NAME@26..31 "\\item" + BRACK_GROUP@31..35 + L_BRACK@31..32 "[" + TEXT@32..33 + WORD@32..33 "2" + R_BRACK@33..34 "]" + WHITESPACE@34..35 " " + TEXT@35..37 + WORD@35..36 "2" + WHITESPACE@36..37 " " + ENUM_ITEM@37..45 + COMMAND_NAME@37..42 "\\item" + WHITESPACE@42..43 " " + TEXT@43..45 + WORD@43..44 "3" + WHITESPACE@44..45 " " + END@45..60 + COMMAND_NAME@45..49 "\\end" + CURLY_GROUP_WORD@49..60 + L_CURLY@49..50 "{" + KEY@50..59 + WORD@50..59 "enumerate" + R_CURLY@59..60 "}" + + "#]], + ); +} + +#[test] +fn test_structure_invalid_nesting() { + check( + r#"\section{Foo} \chapter{Bar}"#, + expect![[r#" + ROOT@0..27 + PREAMBLE@0..27 + SECTION@0..14 + COMMAND_NAME@0..8 "\\section" + CURLY_GROUP@8..14 + L_CURLY@8..9 "{" + TEXT@9..12 + WORD@9..12 "Foo" + R_CURLY@12..13 "}" + WHITESPACE@13..14 " " + CHAPTER@14..27 + COMMAND_NAME@14..22 "\\chapter" + CURLY_GROUP@22..27 + L_CURLY@22..23 "{" + TEXT@23..26 + WORD@23..26 "Bar" + R_CURLY@26..27 "}" + + "#]], + ); +} + +#[test] +fn test_structure_nested() { + check( + r#"\part{1}\chapter{2}\section{3}\subsection{4}\subsubsection{5}\paragraph{6}\subparagraph{7}"#, + expect![[r#" + ROOT@0..90 + PREAMBLE@0..90 + PART@0..90 + COMMAND_NAME@0..5 "\\part" + CURLY_GROUP@5..8 + L_CURLY@5..6 "{" + TEXT@6..7 + WORD@6..7 "1" + R_CURLY@7..8 "}" + CHAPTER@8..90 + COMMAND_NAME@8..16 "\\chapter" + CURLY_GROUP@16..19 + L_CURLY@16..17 "{" + TEXT@17..18 + WORD@17..18 "2" + R_CURLY@18..19 "}" + SECTION@19..90 + COMMAND_NAME@19..27 "\\section" + CURLY_GROUP@27..30 + L_CURLY@27..28 "{" + TEXT@28..29 + WORD@28..29 "3" + R_CURLY@29..30 "}" + SUBSECTION@30..90 + COMMAND_NAME@30..41 "\\subsection" + CURLY_GROUP@41..44 + L_CURLY@41..42 "{" + TEXT@42..43 + WORD@42..43 "4" + R_CURLY@43..44 "}" + SUBSUBSECTION@44..90 + COMMAND_NAME@44..58 "\\subsubsection" + CURLY_GROUP@58..61 + L_CURLY@58..59 "{" + TEXT@59..60 + WORD@59..60 "5" + R_CURLY@60..61 "}" + PARAGRAPH@61..90 + COMMAND_NAME@61..71 "\\paragraph" + CURLY_GROUP@71..74 + L_CURLY@71..72 "{" + TEXT@72..73 + WORD@72..73 "6" + R_CURLY@73..74 "}" + SUBPARAGRAPH@74..90 + COMMAND_NAME@74..87 "\\subparagraph" + CURLY_GROUP@87..90 + L_CURLY@87..88 "{" + TEXT@88..89 + WORD@88..89 "7" + R_CURLY@89..90 "}" + + "#]], + ); +} + +#[test] +fn test_structure_siblings() { + check( + r#"\section{Foo} Foo \section{Bar} Bar"#, + expect![[r#" + ROOT@0..35 + PREAMBLE@0..35 + SECTION@0..18 + COMMAND_NAME@0..8 "\\section" + CURLY_GROUP@8..14 + L_CURLY@8..9 "{" + TEXT@9..12 + WORD@9..12 "Foo" + R_CURLY@12..13 "}" + WHITESPACE@13..14 " " + TEXT@14..18 + WORD@14..17 "Foo" + WHITESPACE@17..18 " " + SECTION@18..35 + COMMAND_NAME@18..26 "\\section" + CURLY_GROUP@26..32 + L_CURLY@26..27 "{" + TEXT@27..30 + WORD@27..30 "Bar" + R_CURLY@30..31 "}" + WHITESPACE@31..32 " " + TEXT@32..35 + WORD@32..35 "Bar" + + "#]], + ); +} + +#[test] +fn test_theorem_definition_full() { + check( + r#"\newtheorem{foo}[bar]{Foo}[baz]"#, + expect![[r#" + ROOT@0..31 + PREAMBLE@0..31 + THEOREM_DEFINITION_AMSTHM@0..31 + COMMAND_NAME@0..11 "\\newtheorem" + CURLY_GROUP_WORD@11..16 + L_CURLY@11..12 "{" + KEY@12..15 + WORD@12..15 "foo" + R_CURLY@15..16 "}" + BRACK_GROUP_WORD@16..21 + L_BRACK@16..17 "[" + KEY@17..20 + WORD@17..20 "bar" + R_BRACK@20..21 "]" + CURLY_GROUP@21..26 + L_CURLY@21..22 "{" + TEXT@22..25 + WORD@22..25 "Foo" + R_CURLY@25..26 "}" + BRACK_GROUP_WORD@26..31 + L_BRACK@26..27 "[" + KEY@27..30 + WORD@27..30 "baz" + R_BRACK@30..31 "]" + + "#]], + ); +} + +#[test] +fn test_theorem_definition_name_with_counter() { + check( + r#"\newtheorem{foo}[bar]"#, + expect![[r#" + ROOT@0..21 + PREAMBLE@0..21 + THEOREM_DEFINITION_AMSTHM@0..21 + COMMAND_NAME@0..11 "\\newtheorem" + CURLY_GROUP_WORD@11..16 + L_CURLY@11..12 "{" + KEY@12..15 + WORD@12..15 "foo" + R_CURLY@15..16 "}" + BRACK_GROUP_WORD@16..21 + L_BRACK@16..17 "[" + KEY@17..20 + WORD@17..20 "bar" + R_BRACK@20..21 "]" + + "#]], + ); +} + +#[test] +fn test_theorem_definition_name_with_description() { + check( + r#"\newtheorem{foo}{Foo}"#, + expect![[r#" + ROOT@0..21 + PREAMBLE@0..21 + THEOREM_DEFINITION_AMSTHM@0..21 + COMMAND_NAME@0..11 "\\newtheorem" + CURLY_GROUP_WORD@11..16 + L_CURLY@11..12 "{" + KEY@12..15 + WORD@12..15 "foo" + R_CURLY@15..16 "}" + CURLY_GROUP@16..21 + L_CURLY@16..17 "{" + TEXT@17..20 + WORD@17..20 "Foo" + R_CURLY@20..21 "}" + + "#]], + ); +} + +#[test] +fn test_theorem_definition_name_with_description_and_counter() { + check( + r#"\newtheorem{foo}[bar]{Foo}"#, + expect![[r#" + ROOT@0..26 + PREAMBLE@0..26 + THEOREM_DEFINITION_AMSTHM@0..26 + COMMAND_NAME@0..11 "\\newtheorem" + CURLY_GROUP_WORD@11..16 + L_CURLY@11..12 "{" + KEY@12..15 + WORD@12..15 "foo" + R_CURLY@15..16 "}" + BRACK_GROUP_WORD@16..21 + L_BRACK@16..17 "[" + KEY@17..20 + WORD@17..20 "bar" + R_BRACK@20..21 "]" + CURLY_GROUP@21..26 + L_CURLY@21..22 "{" + TEXT@22..25 + WORD@22..25 "Foo" + R_CURLY@25..26 "}" + + "#]], + ); +} + +#[test] +fn test_theorem_definition_only_name() { + check( + r#"\newtheorem{foo}"#, + expect![[r#" + ROOT@0..16 + PREAMBLE@0..16 + THEOREM_DEFINITION_AMSTHM@0..16 + COMMAND_NAME@0..11 "\\newtheorem" + CURLY_GROUP_WORD@11..16 + L_CURLY@11..12 "{" + KEY@12..15 + WORD@12..15 "foo" + R_CURLY@15..16 "}" + + "#]], + ); +} + +#[test] +fn test_theorem_definition_thmtools() { + check( + r#"\declaretheorem[style=foo, name=bar]{baz}"#, + expect![[r#" + ROOT@0..41 + PREAMBLE@0..41 + THEOREM_DEFINITION_THMTOOLS@0..41 + COMMAND_NAME@0..15 "\\declaretheorem" + BRACK_GROUP_KEY_VALUE@15..36 + L_BRACK@15..16 "[" + KEY_VALUE_BODY@16..35 + KEY_VALUE_PAIR@16..25 + KEY@16..21 + WORD@16..21 "style" + EQUALITY_SIGN@21..22 "=" + VALUE@22..25 + TEXT@22..25 + WORD@22..25 "foo" + COMMA@25..26 "," + WHITESPACE@26..27 " " + KEY_VALUE_PAIR@27..35 + KEY@27..31 + WORD@27..31 "name" + EQUALITY_SIGN@31..32 "=" + VALUE@32..35 + TEXT@32..35 + WORD@32..35 "bar" + R_BRACK@35..36 "]" + CURLY_GROUP_WORD@36..41 + L_CURLY@36..37 "{" + KEY@37..40 + WORD@37..40 "baz" + R_CURLY@40..41 "}" + + "#]], + ); +} diff --git a/support/texlab/crates/parser/src/latexmkrc.rs b/support/texlab/crates/parser/src/latexmkrc.rs new file mode 100644 index 0000000000..63c92bd353 --- /dev/null +++ b/support/texlab/crates/parser/src/latexmkrc.rs @@ -0,0 +1,52 @@ +use syntax::latexmkrc::LatexmkrcData; +use tempfile::tempdir; + +pub fn parse_latexmkrc(_input: &str) -> std::io::Result<LatexmkrcData> { + let temp_dir = tempdir()?; + let non_existent_tex = temp_dir.path().join("NONEXISTENT.tex"); + + // Run `latexmk -dir-report $TMPDIR/NONEXISTENT.tex` to obtain out_dir + // and aux_dir values. We pass nonexistent file to prevent latexmk from + // building anything, since we need this invocation only to extract the + // -dir-report variables. + // + // In the future, latexmk plans to implement -dir-report-only option and we + // won't have to resort to this hack with NONEXISTENT.tex. + let output = std::process::Command::new("latexmk") + .arg("-dir-report") + .arg(non_existent_tex) + .output()?; + + let stderr = String::from_utf8_lossy(&output.stderr); + + let (aux_dir, out_dir) = stderr.lines().find_map(extract_dirs).ok_or_else(|| { + std::io::Error::new( + std::io::ErrorKind::InvalidData, + "Normalized aux and out dir were not found in latexmk output", + ) + })?; + + Ok(LatexmkrcData { + aux_dir: Some(aux_dir), + out_dir: Some(out_dir), + }) +} + +/// Extracts $aux_dir and $out_dir from lines of the form +/// +/// Latexmk: Normalized aux dir and out dir: '$aux_dir', '$out_dir' +fn extract_dirs(line: &str) -> Option<(String, String)> { + let mut it = line + .strip_prefix("Latexmk: Normalized aux dir and out dir: ")? + .split(", "); + + let aux_dir = it.next()?.strip_prefix('\'')?.strip_suffix('\'')?; + let out_dir = it.next()?.strip_prefix('\'')?.strip_suffix('\'')?; + + // Ensure there's no more data + if it.next().is_some() { + return None; + } + + Some((String::from(aux_dir), String::from(out_dir))) +} diff --git a/support/texlab/crates/parser/src/lib.rs b/support/texlab/crates/parser/src/lib.rs index fab576a041..2a4190b7e2 100644 --- a/support/texlab/crates/parser/src/lib.rs +++ b/support/texlab/crates/parser/src/lib.rs @@ -2,5 +2,9 @@ mod bibtex; mod build_log; mod config; mod latex; +mod latexmkrc; -pub use self::{bibtex::parse_bibtex, build_log::parse_build_log, config::*, latex::parse_latex}; +pub use self::{ + bibtex::parse_bibtex, build_log::parse_build_log, config::*, latex::parse_latex, + latexmkrc::parse_latexmkrc, +}; diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@comment.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@comment.txt.snap deleted file mode 100644 index 7c665e628a..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@comment.txt.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/comment.txt ---- -ROOT@0..82 - JUNK@0..16 "Some junk here\n\n" - TYPE@16..24 "@comment" - JUNK@24..82 "{foo,\n author = {F ..." - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_809.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_809.txt.snap deleted file mode 100644 index 84c9f86ec0..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_809.txt.snap +++ /dev/null @@ -1,32 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/issue_809.txt ---- -ROOT@0..50 - ENTRY@0..50 - TYPE@0..8 "@article" - L_DELIM@8..9 "{" - NAME@9..18 "issue_809" - COMMA@18..19 "," - WHITESPACE@19..22 "\n " - FIELD@22..48 - NAME@22..27 "title" - WHITESPACE@27..28 " " - EQ@28..29 "=" - WHITESPACE@29..30 " " - CURLY_GROUP@30..47 - L_CURLY@30..31 "{" - WORD@31..34 "foo" - WHITESPACE@34..35 " " - WORD@35..36 "(" - QUOTE@36..37 "\"" - WHITESPACE@37..38 " " - WORD@38..42 "bar)" - WHITESPACE@42..43 " " - WORD@43..46 "baz" - R_CURLY@46..47 "}" - COMMA@47..48 "," - WHITESPACE@48..49 "\n" - R_DELIM@49..50 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_945.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_945.txt.snap deleted file mode 100644 index 11a2955b1c..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@issue_945.txt.snap +++ /dev/null @@ -1,27 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/issue_945.txt ---- -ROOT@0..33 - ENTRY@0..33 - TYPE@0..8 "@article" - L_DELIM@8..9 "{" - NAME@9..13 "test" - COMMA@13..14 "," - WHITESPACE@14..15 " " - FIELD@15..32 - NAME@15..21 "author" - WHITESPACE@21..22 " " - EQ@22..23 "=" - WHITESPACE@23..24 " " - CURLY_GROUP@24..32 - L_CURLY@24..25 "{" - ACCENT@25..31 - ACCENT_NAME@25..27 "\\\"" - L_CURLY@27..28 "{" - COMMAND_NAME@28..30 "\\i" - R_CURLY@30..31 "}" - R_CURLY@31..32 "}" - R_DELIM@32..33 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@preamble.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@preamble.txt.snap deleted file mode 100644 index b0d043b1a7..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@preamble.txt.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/preamble.txt ---- -ROOT@0..25 - PREAMBLE@0..25 - TYPE@0..9 "@preamble" - L_DELIM@9..10 "{" - QUOTE_GROUP@10..24 - QUOTE@10..11 "\"" - WORD@11..16 "Hello" - WHITESPACE@16..17 " " - WORD@17..23 "World!" - QUOTE@23..24 "\"" - R_DELIM@24..25 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aho_2006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aho_2006.txt.snap deleted file mode 100644 index 36db1ebb4c..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aho_2006.txt.snap +++ /dev/null @@ -1,132 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/aho_2006.txt ---- -ROOT@0..314 - ENTRY@0..314 - TYPE@0..5 "@book" - L_DELIM@5..6 "{" - NAME@6..21 "10.5555/1177220" - COMMA@21..22 "," - WHITESPACE@22..27 "\n " - FIELD@27..111 - NAME@27..33 "author" - WHITESPACE@33..34 " " - EQ@34..35 "=" - WHITESPACE@35..36 " " - CURLY_GROUP@36..110 - L_CURLY@36..37 "{" - WORD@37..40 "Aho" - COMMA@40..41 "," - WHITESPACE@41..42 " " - WORD@42..48 "Alfred" - WHITESPACE@48..49 " " - WORD@49..51 "V." - WHITESPACE@51..52 " " - WORD@52..55 "and" - WHITESPACE@55..56 " " - WORD@56..59 "Lam" - COMMA@59..60 "," - WHITESPACE@60..61 " " - WORD@61..67 "Monica" - WHITESPACE@67..68 " " - WORD@68..70 "S." - WHITESPACE@70..71 " " - WORD@71..74 "and" - WHITESPACE@74..75 " " - WORD@75..80 "Sethi" - COMMA@80..81 "," - WHITESPACE@81..82 " " - WORD@82..86 "Ravi" - WHITESPACE@86..87 " " - WORD@87..90 "and" - WHITESPACE@90..91 " " - WORD@91..97 "Ullman" - COMMA@97..98 "," - WHITESPACE@98..99 " " - WORD@99..106 "Jeffrey" - WHITESPACE@106..107 " " - WORD@107..109 "D." - R_CURLY@109..110 "}" - COMMA@110..111 "," - WHITESPACE@111..116 "\n " - FIELD@116..185 - NAME@116..121 "title" - WHITESPACE@121..122 " " - EQ@122..123 "=" - WHITESPACE@123..124 " " - CURLY_GROUP@124..184 - L_CURLY@124..125 "{" - WORD@125..135 "Compilers:" - WHITESPACE@135..136 " " - WORD@136..146 "Principles" - COMMA@146..147 "," - WHITESPACE@147..148 " " - WORD@148..158 "Techniques" - COMMA@158..159 "," - WHITESPACE@159..160 " " - WORD@160..163 "and" - WHITESPACE@163..164 " " - WORD@164..169 "Tools" - WHITESPACE@169..170 " " - WORD@170..174 "(2nd" - WHITESPACE@174..175 " " - WORD@175..183 "Edition)" - R_CURLY@183..184 "}" - COMMA@184..185 "," - WHITESPACE@185..190 "\n " - FIELD@190..204 - NAME@190..194 "year" - WHITESPACE@194..195 " " - EQ@195..196 "=" - WHITESPACE@196..197 " " - CURLY_GROUP@197..203 - L_CURLY@197..198 "{" - INTEGER@198..202 "2006" - R_CURLY@202..203 "}" - COMMA@203..204 "," - WHITESPACE@204..209 "\n " - FIELD@209..229 - NAME@209..213 "isbn" - WHITESPACE@213..214 " " - EQ@214..215 "=" - WHITESPACE@215..216 " " - CURLY_GROUP@216..228 - L_CURLY@216..217 "{" - INTEGER@217..227 "0321486811" - R_CURLY@227..228 "}" - COMMA@228..229 "," - WHITESPACE@229..234 "\n " - FIELD@234..292 - NAME@234..243 "publisher" - WHITESPACE@243..244 " " - EQ@244..245 "=" - WHITESPACE@245..246 " " - CURLY_GROUP@246..291 - L_CURLY@246..247 "{" - WORD@247..261 "Addison-Wesley" - WHITESPACE@261..262 " " - WORD@262..269 "Longman" - WHITESPACE@269..270 " " - WORD@270..280 "Publishing" - WHITESPACE@280..281 " " - WORD@281..284 "Co." - COMMA@284..285 "," - WHITESPACE@285..286 " " - WORD@286..290 "Inc." - R_CURLY@290..291 "}" - COMMA@291..292 "," - WHITESPACE@292..297 "\n " - FIELD@297..313 - NAME@297..304 "address" - WHITESPACE@304..305 " " - EQ@305..306 "=" - WHITESPACE@306..307 " " - CURLY_GROUP@307..312 - L_CURLY@307..308 "{" - WORD@308..311 "USA" - R_CURLY@311..312 "}" - WHITESPACE@312..313 "\n" - R_DELIM@313..314 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aksin_2006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aksin_2006.txt.snap deleted file mode 100644 index 6b273d63a2..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__aksin_2006.txt.snap +++ /dev/null @@ -1,258 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/aksin_2006.txt ---- -ROOT@0..679 - STRING@0..40 - TYPE@0..7 "@string" - L_DELIM@7..8 "{" - NAME@8..13 "jomch" - WHITESPACE@13..16 " " - EQ@16..17 "=" - WHITESPACE@17..18 " " - CURLY_GROUP@18..39 - L_CURLY@18..19 "{" - WORD@19..21 "J." - NBSP@21..22 "~" - WORD@22..32 "Organomet." - WHITESPACE@32..33 " " - WORD@33..38 "Chem." - R_CURLY@38..39 "}" - R_DELIM@39..40 "}" - JUNK@40..42 "\n\n" - ENTRY@42..679 - TYPE@42..50 "@article" - L_DELIM@50..51 "{" - NAME@51..56 "aksin" - COMMA@56..57 "," - WHITESPACE@57..62 "\n " - FIELD@62..284 - NAME@62..68 "author" - WHITESPACE@68..75 " " - EQ@75..76 "=" - WHITESPACE@76..77 " " - CURLY_GROUP@77..283 - L_CURLY@77..78 "{" - WORD@78..81 "Aks" - CURLY_GROUP@81..85 - L_CURLY@81..82 "{" - COMMAND@82..84 - COMMAND_NAME@82..84 "\\i" - R_CURLY@84..85 "}" - WORD@85..86 "n" - COMMA@86..87 "," - WHITESPACE@87..88 " " - CURLY_GROUP@88..93 - L_CURLY@88..89 "{" - ACCENT@89..92 - ACCENT_NAME@89..91 "\\\"" - WORD@91..92 "O" - R_CURLY@92..93 "}" - WORD@93..96 "zge" - WHITESPACE@96..97 " " - WORD@97..100 "and" - WHITESPACE@100..101 " " - WORD@101..102 "T" - CURLY_GROUP@102..107 - L_CURLY@102..103 "{" - ACCENT@103..106 - ACCENT_NAME@103..105 "\\\"" - WORD@105..106 "u" - R_CURLY@106..107 "}" - WORD@107..112 "rkmen" - COMMA@112..113 "," - WHITESPACE@113..114 " " - WORD@114..120 "Hayati" - WHITESPACE@120..121 " " - WORD@121..124 "and" - WHITESPACE@124..125 " " - WORD@125..130 "Artok" - COMMA@130..131 "," - WHITESPACE@131..132 " " - WORD@132..138 "Levent" - WHITESPACE@138..159 "\n " - WORD@159..162 "and" - WHITESPACE@162..163 " " - CURLY_GROUP@163..170 - L_CURLY@163..164 "{" - ACCENT@164..169 - ACCENT_NAME@164..166 "\\c" - L_CURLY@166..167 "{" - WORD@167..168 "C" - R_CURLY@168..169 "}" - R_CURLY@169..170 "}" - WORD@170..178 "etinkaya" - COMMA@178..179 "," - WHITESPACE@179..180 " " - WORD@180..185 "Bekir" - WHITESPACE@185..186 " " - WORD@186..189 "and" - WHITESPACE@189..190 " " - WORD@190..192 "Ni" - COMMA@192..193 "," - WHITESPACE@193..194 " " - WORD@194..202 "Chaoying" - WHITESPACE@202..203 " " - WORD@203..206 "and" - WHITESPACE@206..227 "\n " - WORD@227..228 "B" - CURLY_GROUP@228..233 - L_CURLY@228..229 "{" - ACCENT@229..232 - ACCENT_NAME@229..231 "\\\"" - WORD@231..232 "u" - R_CURLY@232..233 "}" - WORD@233..234 "y" - CURLY_GROUP@234..239 - L_CURLY@234..235 "{" - ACCENT@235..238 - ACCENT_NAME@235..237 "\\\"" - WORD@237..238 "u" - R_CURLY@238..239 "}" - WORD@239..241 "kg" - CURLY_GROUP@241..246 - L_CURLY@241..242 "{" - ACCENT@242..245 - ACCENT_NAME@242..244 "\\\"" - WORD@244..245 "u" - R_CURLY@245..246 "}" - WORD@246..248 "ng" - CURLY_GROUP@248..253 - L_CURLY@248..249 "{" - ACCENT@249..252 - ACCENT_NAME@249..251 "\\\"" - WORD@251..252 "o" - R_CURLY@252..253 "}" - WORD@253..254 "r" - COMMA@254..255 "," - WHITESPACE@255..256 " " - WORD@256..261 "Orhan" - WHITESPACE@261..262 " " - WORD@262..265 "and" - WHITESPACE@265..266 " " - CURLY_GROUP@266..271 - L_CURLY@266..267 "{" - ACCENT@267..270 - ACCENT_NAME@267..269 "\\\"" - WORD@269..270 "O" - R_CURLY@270..271 "}" - WORD@271..275 "zkal" - COMMA@275..276 "," - WHITESPACE@276..277 " " - WORD@277..282 "Erhan" - R_CURLY@282..283 "}" - COMMA@283..284 "," - WHITESPACE@284..289 "\n " - FIELD@289..471 - NAME@289..294 "title" - WHITESPACE@294..302 " " - EQ@302..303 "=" - WHITESPACE@303..304 " " - CURLY_GROUP@304..470 - L_CURLY@304..305 "{" - WORD@305..311 "Effect" - WHITESPACE@311..312 " " - WORD@312..314 "of" - WHITESPACE@314..315 " " - WORD@315..329 "immobilization" - WHITESPACE@329..330 " " - WORD@330..332 "on" - WHITESPACE@332..333 " " - WORD@333..342 "catalytic" - WHITESPACE@342..343 " " - WORD@343..358 "characteristics" - WHITESPACE@358..359 " " - WORD@359..361 "of" - WHITESPACE@361..382 "\n " - WORD@382..391 "saturated" - WHITESPACE@391..392 " " - CURLY_GROUP@392..398 - L_CURLY@392..393 "{" - WORD@393..397 "Pd-N" - R_CURLY@397..398 "}" - WORD@398..411 "-heterocyclic" - WHITESPACE@411..412 " " - WORD@412..420 "carbenes" - WHITESPACE@420..421 " " - WORD@421..423 "in" - WHITESPACE@423..424 " " - CURLY_GROUP@424..439 - L_CURLY@424..425 "{" - WORD@425..438 "Mizoroki-Heck" - R_CURLY@438..439 "}" - WHITESPACE@439..460 "\n " - WORD@460..469 "reactions" - R_CURLY@469..470 "}" - COMMA@470..471 "," - WHITESPACE@471..476 "\n " - FIELD@476..497 - NAME@476..488 "journaltitle" - WHITESPACE@488..489 " " - EQ@489..490 "=" - WHITESPACE@490..491 " " - LITERAL@491..496 - NAME@491..496 "jomch" - COMMA@496..497 "," - WHITESPACE@497..502 "\n " - FIELD@502..522 - NAME@502..506 "date" - WHITESPACE@506..515 " " - EQ@515..516 "=" - WHITESPACE@516..517 " " - LITERAL@517..521 - INTEGER@517..521 "2006" - COMMA@521..522 "," - WHITESPACE@522..527 "\n " - FIELD@527..546 - NAME@527..533 "volume" - WHITESPACE@533..540 " " - EQ@540..541 "=" - WHITESPACE@541..542 " " - LITERAL@542..545 - INTEGER@542..545 "691" - COMMA@545..546 "," - WHITESPACE@546..551 "\n " - FIELD@551..569 - NAME@551..557 "number" - WHITESPACE@557..564 " " - EQ@564..565 "=" - WHITESPACE@565..566 " " - LITERAL@566..568 - INTEGER@566..568 "13" - COMMA@568..569 "," - WHITESPACE@569..574 "\n " - FIELD@574..601 - NAME@574..579 "pages" - WHITESPACE@579..587 " " - EQ@587..588 "=" - WHITESPACE@588..589 " " - CURLY_GROUP@589..600 - L_CURLY@589..590 "{" - WORD@590..599 "3027-3036" - R_CURLY@599..600 "}" - COMMA@600..601 "," - WHITESPACE@601..606 "\n " - FIELD@606..677 - NAME@606..616 "indextitle" - WHITESPACE@616..619 " " - EQ@619..620 "=" - WHITESPACE@620..621 " " - CURLY_GROUP@621..676 - L_CURLY@621..622 "{" - WORD@622..628 "Effect" - WHITESPACE@628..629 " " - WORD@629..631 "of" - WHITESPACE@631..632 " " - WORD@632..646 "immobilization" - WHITESPACE@646..647 " " - WORD@647..649 "on" - WHITESPACE@649..650 " " - WORD@650..659 "catalytic" - WHITESPACE@659..660 " " - WORD@660..675 "characteristics" - R_CURLY@675..676 "}" - COMMA@676..677 "," - WHITESPACE@677..678 "\n" - R_DELIM@678..679 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__almendro_1998.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__almendro_1998.txt.snap deleted file mode 100644 index 280dd5a4cf..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__almendro_1998.txt.snap +++ /dev/null @@ -1,246 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/almendro_1998.txt ---- -ROOT@0..706 - ENTRY@0..706 - TYPE@0..7 "@patent" - L_DELIM@7..8 "{" - NAME@8..16 "almendro" - COMMA@16..17 "," - WHITESPACE@17..22 "\n " - FIELD@22..150 - NAME@22..28 "author" - WHITESPACE@28..35 " " - EQ@35..36 "=" - WHITESPACE@36..37 " " - CURLY_GROUP@37..149 - L_CURLY@37..38 "{" - WORD@38..46 "Almendro" - COMMA@46..47 "," - WHITESPACE@47..48 " " - WORD@48..51 "Jos" - CURLY_GROUP@51..56 - L_CURLY@51..52 "{" - ACCENT@52..55 - ACCENT_NAME@52..54 "\\'" - WORD@54..55 "e" - R_CURLY@55..56 "}" - WHITESPACE@56..57 " " - WORD@57..59 "L." - WHITESPACE@59..60 " " - WORD@60..63 "and" - WHITESPACE@63..64 " " - WORD@64..68 "Mart" - CURLY_GROUP@68..73 - L_CURLY@68..69 "{" - ACCENT@69..72 - ACCENT_NAME@69..71 "\\'" - WORD@71..72 "i" - R_CURLY@72..73 "}" - WORD@73..74 "n" - COMMA@74..75 "," - WHITESPACE@75..76 " " - WORD@76..83 "Jacinto" - WHITESPACE@83..84 " " - WORD@84..87 "and" - WHITESPACE@87..88 " " - WORD@88..89 "S" - CURLY_GROUP@89..94 - L_CURLY@89..90 "{" - ACCENT@90..93 - ACCENT_NAME@90..92 "\\'" - WORD@92..93 "a" - R_CURLY@93..94 "}" - WORD@94..99 "nchez" - COMMA@99..100 "," - WHITESPACE@100..121 "\n " - WORD@121..128 "Alberto" - WHITESPACE@128..129 " " - WORD@129..132 "and" - WHITESPACE@132..133 " " - WORD@133..138 "Nozal" - COMMA@138..139 "," - WHITESPACE@139..140 " " - WORD@140..148 "Fernando" - R_CURLY@148..149 "}" - COMMA@149..150 "," - WHITESPACE@150..155 "\n " - FIELD@155..203 - NAME@155..160 "title" - WHITESPACE@160..168 " " - EQ@168..169 "=" - WHITESPACE@169..170 " " - CURLY_GROUP@170..202 - L_CURLY@170..171 "{" - WORD@171..190 "Elektromagnetisches" - WHITESPACE@190..191 " " - WORD@191..201 "Signalhorn" - R_CURLY@201..202 "}" - COMMA@202..203 "," - WHITESPACE@203..208 "\n " - FIELD@208..238 - NAME@208..214 "number" - WHITESPACE@214..221 " " - EQ@221..222 "=" - WHITESPACE@222..223 " " - CURLY_GROUP@223..237 - L_CURLY@223..224 "{" - WORD@224..236 "EU-29702195U" - R_CURLY@236..237 "}" - COMMA@237..238 "," - WHITESPACE@238..243 "\n " - FIELD@243..263 - NAME@243..247 "date" - WHITESPACE@247..256 " " - EQ@256..257 "=" - WHITESPACE@257..258 " " - LITERAL@258..262 - INTEGER@258..262 "1998" - COMMA@262..263 "," - WHITESPACE@263..268 "\n " - FIELD@268..323 - NAME@268..276 "location" - WHITESPACE@276..281 " " - EQ@281..282 "=" - WHITESPACE@282..283 " " - CURLY_GROUP@283..322 - L_CURLY@283..284 "{" - WORD@284..293 "countryfr" - WHITESPACE@293..294 " " - WORD@294..297 "and" - WHITESPACE@297..298 " " - WORD@298..307 "countryuk" - WHITESPACE@307..308 " " - WORD@308..311 "and" - WHITESPACE@311..312 " " - WORD@312..321 "countryde" - R_CURLY@321..322 "}" - COMMA@322..323 "," - WHITESPACE@323..328 "\n " - FIELD@328..352 - NAME@328..334 "langid" - WHITESPACE@334..341 " " - EQ@341..342 "=" - WHITESPACE@342..343 " " - CURLY_GROUP@343..351 - L_CURLY@343..344 "{" - WORD@344..350 "german" - R_CURLY@350..351 "}" - COMMA@351..352 "," - WHITESPACE@352..357 "\n " - FIELD@357..704 - NAME@357..367 "annotation" - WHITESPACE@367..370 " " - EQ@370..371 "=" - WHITESPACE@371..372 " " - CURLY_GROUP@372..703 - L_CURLY@372..373 "{" - WORD@373..377 "This" - WHITESPACE@377..378 " " - WORD@378..380 "is" - WHITESPACE@380..381 " " - WORD@381..382 "a" - WHITESPACE@382..383 " " - COMMAND@383..390 - COMMAND_NAME@383..390 "\\texttt" - CURLY_GROUP@390..398 - L_CURLY@390..391 "{" - WORD@391..397 "patent" - R_CURLY@397..398 "}" - WHITESPACE@398..399 " " - WORD@399..404 "entry" - WHITESPACE@404..405 " " - WORD@405..409 "with" - WHITESPACE@409..410 " " - WORD@410..411 "a" - WHITESPACE@411..412 " " - COMMAND@412..419 - COMMAND_NAME@412..419 "\\texttt" - CURLY_GROUP@419..429 - L_CURLY@419..420 "{" - WORD@420..428 "location" - R_CURLY@428..429 "}" - WHITESPACE@429..450 "\n " - WORD@450..456 "field." - WHITESPACE@456..457 " " - WORD@457..460 "The" - WHITESPACE@460..461 " " - WORD@461..467 "number" - WHITESPACE@467..468 " " - WORD@468..470 "is" - WHITESPACE@470..471 " " - WORD@471..476 "given" - WHITESPACE@476..477 " " - WORD@477..479 "in" - WHITESPACE@479..480 " " - WORD@480..483 "the" - WHITESPACE@483..484 " " - COMMAND@484..491 - COMMAND_NAME@484..491 "\\texttt" - CURLY_GROUP@491..499 - L_CURLY@491..492 "{" - WORD@492..498 "number" - R_CURLY@498..499 "}" - WHITESPACE@499..500 " " - WORD@500..506 "field." - WHITESPACE@506..507 " " - WORD@507..511 "Note" - WHITESPACE@511..532 "\n " - WORD@532..535 "the" - WHITESPACE@535..536 " " - WORD@536..542 "format" - WHITESPACE@542..543 " " - WORD@543..545 "of" - WHITESPACE@545..546 " " - WORD@546..549 "the" - WHITESPACE@549..550 " " - COMMAND@550..557 - COMMAND_NAME@550..557 "\\texttt" - CURLY_GROUP@557..567 - L_CURLY@557..558 "{" - WORD@558..566 "location" - R_CURLY@566..567 "}" - WHITESPACE@567..568 " " - WORD@568..573 "field" - WHITESPACE@573..574 " " - WORD@574..576 "in" - WHITESPACE@576..577 " " - WORD@577..580 "the" - WHITESPACE@580..581 " " - WORD@581..589 "database" - WHITESPACE@589..610 "\n " - WORD@610..615 "file." - WHITESPACE@615..616 " " - WORD@616..623 "Compare" - WHITESPACE@623..624 " " - COMMAND@624..631 - COMMAND_NAME@624..631 "\\texttt" - CURLY_GROUP@631..643 - L_CURLY@631..632 "{" - WORD@632..642 "laufenberg" - R_CURLY@642..643 "}" - COMMA@643..644 "," - WHITESPACE@644..645 " " - COMMAND@645..652 - COMMAND_NAME@645..652 "\\texttt" - CURLY_GROUP@652..660 - L_CURLY@652..653 "{" - WORD@653..659 "sorace" - R_CURLY@659..660 "}" - COMMA@660..661 "," - WHITESPACE@661..662 " " - WORD@662..665 "and" - WHITESPACE@665..686 "\n " - COMMAND@686..693 - COMMAND_NAME@686..693 "\\texttt" - CURLY_GROUP@693..702 - L_CURLY@693..694 "{" - WORD@694..701 "kowalik" - R_CURLY@701..702 "}" - R_CURLY@702..703 "}" - COMMA@703..704 "," - WHITESPACE@704..705 "\n" - R_DELIM@705..706 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__averroes_1998.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__averroes_1998.txt.snap deleted file mode 100644 index 8fb5a718d0..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__averroes_1998.txt.snap +++ /dev/null @@ -1,351 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/averroes_1998.txt ---- -ROOT@0..1008 - ENTRY@0..1008 - TYPE@0..5 "@book" - L_DELIM@5..6 "{" - NAME@6..20 "averroes/bland" - COMMA@20..21 "," - WHITESPACE@21..26 "\n " - FIELD@26..52 - NAME@26..32 "author" - WHITESPACE@32..39 " " - EQ@39..40 "=" - WHITESPACE@40..41 " " - CURLY_GROUP@41..51 - L_CURLY@41..42 "{" - WORD@42..50 "Averroes" - R_CURLY@50..51 "}" - COMMA@51..52 "," - WHITESPACE@52..57 "\n " - FIELD@57..220 - NAME@57..62 "title" - WHITESPACE@62..70 " " - EQ@70..71 "=" - WHITESPACE@71..72 " " - CURLY_GROUP@72..219 - L_CURLY@72..73 "{" - WORD@73..76 "The" - WHITESPACE@76..77 " " - WORD@77..84 "Epistle" - WHITESPACE@84..85 " " - WORD@85..87 "on" - WHITESPACE@87..88 " " - WORD@88..91 "the" - WHITESPACE@91..92 " " - WORD@92..103 "Possibility" - WHITESPACE@103..104 " " - WORD@104..106 "of" - WHITESPACE@106..107 " " - WORD@107..118 "Conjunction" - WHITESPACE@118..119 " " - WORD@119..123 "with" - WHITESPACE@123..124 " " - WORD@124..127 "the" - WHITESPACE@127..128 " " - WORD@128..134 "Active" - WHITESPACE@134..155 "\n " - WORD@155..164 "Intellect" - WHITESPACE@164..165 " " - WORD@165..167 "by" - WHITESPACE@167..168 " " - CURLY_GROUP@168..179 - L_CURLY@168..169 "{" - WORD@169..172 "Ibn" - WHITESPACE@172..173 " " - WORD@173..178 "Rushd" - R_CURLY@178..179 "}" - WHITESPACE@179..180 " " - WORD@180..184 "with" - WHITESPACE@184..185 " " - WORD@185..188 "the" - WHITESPACE@188..189 " " - WORD@189..199 "Commentary" - WHITESPACE@199..200 " " - WORD@200..202 "of" - WHITESPACE@202..203 " " - CURLY_GROUP@203..218 - L_CURLY@203..204 "{" - WORD@204..209 "Moses" - WHITESPACE@209..210 " " - WORD@210..217 "Narboni" - R_CURLY@217..218 "}" - R_CURLY@218..219 "}" - COMMA@219..220 "," - WHITESPACE@220..225 "\n " - FIELD@225..245 - NAME@225..229 "date" - WHITESPACE@229..238 " " - EQ@238..239 "=" - WHITESPACE@239..240 " " - LITERAL@240..244 - INTEGER@240..244 "1982" - COMMA@244..245 "," - WHITESPACE@245..250 "\n " - FIELD@250..284 - NAME@250..256 "editor" - WHITESPACE@256..263 " " - EQ@263..264 "=" - WHITESPACE@264..265 " " - CURLY_GROUP@265..283 - L_CURLY@265..266 "{" - WORD@266..271 "Bland" - COMMA@271..272 "," - WHITESPACE@272..273 " " - WORD@273..279 "Kalman" - WHITESPACE@279..280 " " - WORD@280..282 "P." - R_CURLY@282..283 "}" - COMMA@283..284 "," - WHITESPACE@284..289 "\n " - FIELD@289..323 - NAME@289..299 "translator" - WHITESPACE@299..302 " " - EQ@302..303 "=" - WHITESPACE@303..304 " " - CURLY_GROUP@304..322 - L_CURLY@304..305 "{" - WORD@305..310 "Bland" - COMMA@310..311 "," - WHITESPACE@311..312 " " - WORD@312..318 "Kalman" - WHITESPACE@318..319 " " - WORD@319..321 "P." - R_CURLY@321..322 "}" - COMMA@322..323 "," - WHITESPACE@323..328 "\n " - FIELD@328..407 - NAME@328..334 "series" - WHITESPACE@334..341 " " - EQ@341..342 "=" - WHITESPACE@342..343 " " - CURLY_GROUP@343..406 - L_CURLY@343..344 "{" - WORD@344..353 "Moreshet:" - WHITESPACE@353..354 " " - WORD@354..361 "Studies" - WHITESPACE@361..362 " " - WORD@362..364 "in" - WHITESPACE@364..365 " " - CURLY_GROUP@365..373 - L_CURLY@365..366 "{" - WORD@366..372 "Jewish" - R_CURLY@372..373 "}" - WHITESPACE@373..374 " " - WORD@374..381 "History" - COMMA@381..382 "," - WHITESPACE@382..383 " " - WORD@383..393 "Literature" - WHITESPACE@393..394 " " - WORD@394..397 "and" - WHITESPACE@397..398 " " - WORD@398..405 "Thought" - R_CURLY@405..406 "}" - COMMA@406..407 "," - WHITESPACE@407..412 "\n " - FIELD@412..429 - NAME@412..418 "number" - WHITESPACE@418..425 " " - EQ@425..426 "=" - WHITESPACE@426..427 " " - LITERAL@427..428 - INTEGER@427..428 "7" - COMMA@428..429 "," - WHITESPACE@429..434 "\n " - FIELD@434..490 - NAME@434..443 "publisher" - WHITESPACE@443..447 " " - EQ@447..448 "=" - WHITESPACE@448..449 " " - CURLY_GROUP@449..489 - L_CURLY@449..450 "{" - WORD@450..456 "Jewish" - WHITESPACE@456..457 " " - WORD@457..468 "Theological" - WHITESPACE@468..469 " " - WORD@469..477 "Seminary" - WHITESPACE@477..478 " " - WORD@478..480 "of" - WHITESPACE@480..481 " " - WORD@481..488 "America" - R_CURLY@488..489 "}" - COMMA@489..490 "," - WHITESPACE@490..495 "\n " - FIELD@495..521 - NAME@495..503 "location" - WHITESPACE@503..508 " " - EQ@508..509 "=" - WHITESPACE@509..510 " " - CURLY_GROUP@510..520 - L_CURLY@510..511 "{" - WORD@511..514 "New" - WHITESPACE@514..515 " " - WORD@515..519 "York" - R_CURLY@519..520 "}" - COMMA@520..521 "," - WHITESPACE@521..526 "\n " - FIELD@526..551 - NAME@526..534 "keywords" - WHITESPACE@534..539 " " - EQ@539..540 "=" - WHITESPACE@540..541 " " - CURLY_GROUP@541..550 - L_CURLY@541..542 "{" - WORD@542..549 "primary" - R_CURLY@549..550 "}" - COMMA@550..551 "," - WHITESPACE@551..556 "\n " - FIELD@556..581 - NAME@556..562 "langid" - WHITESPACE@562..569 " " - EQ@569..570 "=" - WHITESPACE@570..571 " " - CURLY_GROUP@571..580 - L_CURLY@571..572 "{" - WORD@572..579 "english" - R_CURLY@579..580 "}" - COMMA@580..581 "," - WHITESPACE@581..586 "\n " - FIELD@586..620 - NAME@586..596 "langidopts" - WHITESPACE@596..599 " " - EQ@599..600 "=" - WHITESPACE@600..601 " " - CURLY_GROUP@601..619 - L_CURLY@601..602 "{" - WORD@602..618 "variant=american" - R_CURLY@618..619 "}" - COMMA@619..620 "," - WHITESPACE@620..625 "\n " - FIELD@625..689 - NAME@625..635 "indextitle" - WHITESPACE@635..638 " " - EQ@638..639 "=" - WHITESPACE@639..640 " " - CURLY_GROUP@640..688 - L_CURLY@640..641 "{" - WORD@641..648 "Epistle" - WHITESPACE@648..649 " " - WORD@649..651 "on" - WHITESPACE@651..652 " " - WORD@652..655 "the" - WHITESPACE@655..656 " " - WORD@656..667 "Possibility" - WHITESPACE@667..668 " " - WORD@668..670 "of" - WHITESPACE@670..671 " " - WORD@671..682 "Conjunction" - COMMA@682..683 "," - WHITESPACE@683..684 " " - WORD@684..687 "The" - R_CURLY@687..688 "}" - COMMA@688..689 "," - WHITESPACE@689..694 "\n " - FIELD@694..738 - NAME@694..704 "shorttitle" - WHITESPACE@704..707 " " - EQ@707..708 "=" - WHITESPACE@708..709 " " - CURLY_GROUP@709..737 - L_CURLY@709..710 "{" - WORD@710..721 "Possibility" - WHITESPACE@721..722 " " - WORD@722..724 "of" - WHITESPACE@724..725 " " - WORD@725..736 "Conjunction" - R_CURLY@736..737 "}" - COMMA@737..738 "," - WHITESPACE@738..743 "\n " - FIELD@743..1006 - NAME@743..753 "annotation" - WHITESPACE@753..756 " " - EQ@756..757 "=" - WHITESPACE@757..758 " " - CURLY_GROUP@758..1005 - L_CURLY@758..759 "{" - WORD@759..760 "A" - WHITESPACE@760..761 " " - COMMAND@761..768 - COMMAND_NAME@761..768 "\\texttt" - CURLY_GROUP@768..774 - L_CURLY@768..769 "{" - WORD@769..773 "book" - R_CURLY@773..774 "}" - WHITESPACE@774..775 " " - WORD@775..780 "entry" - WHITESPACE@780..781 " " - WORD@781..785 "with" - WHITESPACE@785..786 " " - WORD@786..787 "a" - WHITESPACE@787..788 " " - COMMAND@788..795 - COMMAND_NAME@788..795 "\\texttt" - CURLY_GROUP@795..803 - L_CURLY@795..796 "{" - WORD@796..802 "series" - R_CURLY@802..803 "}" - WHITESPACE@803..804 " " - WORD@804..807 "and" - WHITESPACE@807..808 " " - WORD@808..809 "a" - WHITESPACE@809..830 "\n " - COMMAND@830..837 - COMMAND_NAME@830..837 "\\texttt" - CURLY_GROUP@837..845 - L_CURLY@837..838 "{" - WORD@838..844 "number" - R_CURLY@844..845 "}" - WORD@845..846 "." - WHITESPACE@846..847 " " - WORD@847..851 "Note" - WHITESPACE@851..852 " " - WORD@852..855 "the" - WHITESPACE@855..856 " " - WORD@856..869 "concatenation" - WHITESPACE@869..870 " " - WORD@870..872 "of" - WHITESPACE@872..873 " " - WORD@873..876 "the" - WHITESPACE@876..877 " " - COMMAND@877..884 - COMMAND_NAME@877..884 "\\texttt" - CURLY_GROUP@884..892 - L_CURLY@884..885 "{" - WORD@885..891 "editor" - R_CURLY@891..892 "}" - WHITESPACE@892..913 "\n " - WORD@913..916 "and" - WHITESPACE@916..917 " " - COMMAND@917..924 - COMMAND_NAME@917..924 "\\texttt" - CURLY_GROUP@924..936 - L_CURLY@924..925 "{" - WORD@925..935 "translator" - R_CURLY@935..936 "}" - WHITESPACE@936..937 " " - WORD@937..943 "fields" - WHITESPACE@943..944 " " - WORD@944..946 "as" - WHITESPACE@946..947 " " - WORD@947..951 "well" - WHITESPACE@951..952 " " - WORD@952..954 "as" - WHITESPACE@954..955 " " - WORD@955..958 "the" - WHITESPACE@958..979 "\n " - COMMAND@979..986 - COMMAND_NAME@979..986 "\\texttt" - CURLY_GROUP@986..998 - L_CURLY@986..987 "{" - WORD@987..997 "indextitle" - R_CURLY@997..998 "}" - WHITESPACE@998..999 " " - WORD@999..1004 "field" - R_CURLY@1004..1005 "}" - COMMA@1005..1006 "," - WHITESPACE@1006..1007 "\n" - R_DELIM@1007..1008 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__betram_1996.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__betram_1996.txt.snap deleted file mode 100644 index 417041cde4..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__betram_1996.txt.snap +++ /dev/null @@ -1,208 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/betram_1996.txt ---- -ROOT@0..556 - STRING@0..40 - TYPE@0..7 "@string" - L_DELIM@7..8 "{" - NAME@8..12 "jams" - WHITESPACE@12..16 " " - EQ@16..17 "=" - WHITESPACE@17..18 " " - CURLY_GROUP@18..39 - L_CURLY@18..19 "{" - WORD@19..21 "J." - NBSP@21..22 "~" - WORD@22..27 "Amer." - WHITESPACE@27..28 " " - WORD@28..33 "Math." - WHITESPACE@33..34 " " - WORD@34..38 "Soc." - R_CURLY@38..39 "}" - R_DELIM@39..40 "}" - JUNK@40..42 "\n\n" - ENTRY@42..556 - TYPE@42..50 "@article" - L_DELIM@50..51 "{" - NAME@51..58 "bertram" - COMMA@58..59 "," - WHITESPACE@59..64 "\n " - FIELD@64..119 - NAME@64..70 "author" - WHITESPACE@70..77 " " - EQ@77..78 "=" - WHITESPACE@78..79 " " - CURLY_GROUP@79..118 - L_CURLY@79..80 "{" - WORD@80..87 "Bertram" - COMMA@87..88 "," - WHITESPACE@88..89 " " - WORD@89..94 "Aaron" - WHITESPACE@94..95 " " - WORD@95..98 "and" - WHITESPACE@98..99 " " - WORD@99..108 "Wentworth" - COMMA@108..109 "," - WHITESPACE@109..110 " " - WORD@110..117 "Richard" - R_CURLY@117..118 "}" - COMMA@118..119 "," - WHITESPACE@119..124 "\n " - FIELD@124..202 - NAME@124..129 "title" - WHITESPACE@129..137 " " - EQ@137..138 "=" - WHITESPACE@138..139 " " - CURLY_GROUP@139..201 - L_CURLY@139..140 "{" - WORD@140..146 "Gromov" - WHITESPACE@146..147 " " - WORD@147..157 "invariants" - WHITESPACE@157..158 " " - WORD@158..161 "for" - WHITESPACE@161..162 " " - WORD@162..173 "holomorphic" - WHITESPACE@173..174 " " - WORD@174..178 "maps" - WHITESPACE@178..179 " " - WORD@179..181 "on" - WHITESPACE@181..182 " " - CURLY_GROUP@182..191 - L_CURLY@182..183 "{" - WORD@183..190 "Riemann" - R_CURLY@190..191 "}" - WHITESPACE@191..192 " " - WORD@192..200 "surfaces" - R_CURLY@200..201 "}" - COMMA@201..202 "," - WHITESPACE@202..207 "\n " - FIELD@207..227 - NAME@207..219 "journaltitle" - WHITESPACE@219..220 " " - EQ@220..221 "=" - WHITESPACE@221..222 " " - LITERAL@222..226 - NAME@222..226 "jams" - COMMA@226..227 "," - WHITESPACE@227..232 "\n " - FIELD@232..252 - NAME@232..236 "date" - WHITESPACE@236..245 " " - EQ@245..246 "=" - WHITESPACE@246..247 " " - LITERAL@247..251 - INTEGER@247..251 "1996" - COMMA@251..252 "," - WHITESPACE@252..257 "\n " - FIELD@257..274 - NAME@257..263 "volume" - WHITESPACE@263..270 " " - EQ@270..271 "=" - WHITESPACE@271..272 " " - LITERAL@272..273 - INTEGER@272..273 "9" - COMMA@273..274 "," - WHITESPACE@274..279 "\n " - FIELD@279..296 - NAME@279..285 "number" - WHITESPACE@285..292 " " - EQ@292..293 "=" - WHITESPACE@293..294 " " - LITERAL@294..295 - INTEGER@294..295 "2" - COMMA@295..296 "," - WHITESPACE@296..301 "\n " - FIELD@301..326 - NAME@301..306 "pages" - WHITESPACE@306..314 " " - EQ@314..315 "=" - WHITESPACE@315..316 " " - CURLY_GROUP@316..325 - L_CURLY@316..317 "{" - WORD@317..324 "529-571" - R_CURLY@324..325 "}" - COMMA@325..326 "," - WHITESPACE@326..331 "\n " - FIELD@331..356 - NAME@331..337 "langid" - WHITESPACE@337..344 " " - EQ@344..345 "=" - WHITESPACE@345..346 " " - CURLY_GROUP@346..355 - L_CURLY@346..347 "{" - WORD@347..354 "english" - R_CURLY@354..355 "}" - COMMA@355..356 "," - WHITESPACE@356..361 "\n " - FIELD@361..395 - NAME@361..371 "langidopts" - WHITESPACE@371..374 " " - EQ@374..375 "=" - WHITESPACE@375..376 " " - CURLY_GROUP@376..394 - L_CURLY@376..377 "{" - WORD@377..393 "variant=american" - R_CURLY@393..394 "}" - COMMA@394..395 "," - WHITESPACE@395..400 "\n " - FIELD@400..435 - NAME@400..410 "shorttitle" - WHITESPACE@410..413 " " - EQ@413..414 "=" - WHITESPACE@414..415 " " - CURLY_GROUP@415..434 - L_CURLY@415..416 "{" - WORD@416..422 "Gromov" - WHITESPACE@422..423 " " - WORD@423..433 "invariants" - R_CURLY@433..434 "}" - COMMA@434..435 "," - WHITESPACE@435..440 "\n " - FIELD@440..554 - NAME@440..450 "annotation" - WHITESPACE@450..453 " " - EQ@453..454 "=" - WHITESPACE@454..455 " " - CURLY_GROUP@455..553 - L_CURLY@455..456 "{" - WORD@456..458 "An" - WHITESPACE@458..459 " " - COMMAND@459..466 - COMMAND_NAME@459..466 "\\texttt" - CURLY_GROUP@466..475 - L_CURLY@466..467 "{" - WORD@467..474 "article" - R_CURLY@474..475 "}" - WHITESPACE@475..476 " " - WORD@476..481 "entry" - WHITESPACE@481..482 " " - WORD@482..486 "with" - WHITESPACE@486..487 " " - WORD@487..488 "a" - WHITESPACE@488..489 " " - COMMAND@489..496 - COMMAND_NAME@489..496 "\\texttt" - CURLY_GROUP@496..504 - L_CURLY@496..497 "{" - WORD@497..503 "volume" - R_CURLY@503..504 "}" - WHITESPACE@504..505 " " - WORD@505..508 "and" - WHITESPACE@508..509 " " - WORD@509..510 "a" - WHITESPACE@510..531 "\n " - COMMAND@531..538 - COMMAND_NAME@531..538 "\\texttt" - CURLY_GROUP@538..546 - L_CURLY@538..539 "{" - WORD@539..545 "number" - R_CURLY@545..546 "}" - WHITESPACE@546..547 " " - WORD@547..552 "field" - R_CURLY@552..553 "}" - COMMA@553..554 "," - WHITESPACE@554..555 "\n" - R_DELIM@555..556 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__blom_2021.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__blom_2021.txt.snap deleted file mode 100644 index 86ee736c2b..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__blom_2021.txt.snap +++ /dev/null @@ -1,223 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/blom_2021.txt ---- -ROOT@0..860 - ENTRY@0..860 - TYPE@0..8 "@article" - L_DELIM@8..9 "{" - NAME@9..42 "DBLP:journals/corr/ab ..." - COMMA@42..43 "," - WHITESPACE@43..48 "\n " - FIELD@48..322 - NAME@48..54 "author" - WHITESPACE@54..58 " " - EQ@58..59 "=" - WHITESPACE@59..60 " " - CURLY_GROUP@60..321 - L_CURLY@60..61 "{" - WORD@61..69 "Michelle" - WHITESPACE@69..70 " " - WORD@70..72 "L." - WHITESPACE@72..73 " " - WORD@73..77 "Blom" - WHITESPACE@77..78 " " - WORD@78..81 "and" - WHITESPACE@81..102 "\n " - WORD@102..109 "Jurlind" - WHITESPACE@109..110 " " - WORD@110..119 "Budurushi" - WHITESPACE@119..120 " " - WORD@120..123 "and" - WHITESPACE@123..144 "\n " - WORD@144..150 "Ronald" - WHITESPACE@150..151 " " - WORD@151..153 "L." - WHITESPACE@153..154 " " - WORD@154..160 "Rivest" - WHITESPACE@160..161 " " - WORD@161..164 "and" - WHITESPACE@164..185 "\n " - WORD@185..191 "Philip" - WHITESPACE@191..192 " " - WORD@192..194 "B." - WHITESPACE@194..195 " " - WORD@195..200 "Stark" - WHITESPACE@200..201 " " - WORD@201..204 "and" - WHITESPACE@204..225 "\n " - WORD@225..230 "Peter" - WHITESPACE@230..231 " " - WORD@231..233 "J." - WHITESPACE@233..234 " " - WORD@234..241 "Stuckey" - WHITESPACE@241..242 " " - WORD@242..245 "and" - WHITESPACE@245..266 "\n " - WORD@266..273 "Vanessa" - WHITESPACE@273..274 " " - WORD@274..280 "Teague" - WHITESPACE@280..281 " " - WORD@281..284 "and" - WHITESPACE@284..305 "\n " - WORD@305..311 "Damjan" - WHITESPACE@311..312 " " - WORD@312..320 "Vukcevic" - R_CURLY@320..321 "}" - COMMA@321..322 "," - WHITESPACE@322..327 "\n " - FIELD@327..473 - NAME@327..332 "title" - WHITESPACE@332..337 " " - EQ@337..338 "=" - WHITESPACE@338..339 " " - CURLY_GROUP@339..472 - L_CURLY@339..340 "{" - WORD@340..355 "Assertion-based" - WHITESPACE@355..356 " " - WORD@356..366 "Approaches" - WHITESPACE@366..367 " " - WORD@367..369 "to" - WHITESPACE@369..370 " " - WORD@370..378 "Auditing" - WHITESPACE@378..379 " " - WORD@379..386 "Complex" - WHITESPACE@386..387 " " - WORD@387..396 "Elections" - COMMA@396..397 "," - WHITESPACE@397..398 " " - WORD@398..402 "with" - WHITESPACE@402..403 " " - WORD@403..414 "application" - WHITESPACE@414..435 "\n " - WORD@435..437 "to" - WHITESPACE@437..438 " " - WORD@438..448 "party-list" - WHITESPACE@448..449 " " - WORD@449..461 "proportional" - WHITESPACE@461..462 " " - WORD@462..471 "elections" - R_CURLY@471..472 "}" - COMMA@472..473 "," - WHITESPACE@473..478 "\n " - FIELD@478..497 - NAME@478..485 "journal" - WHITESPACE@485..488 " " - EQ@488..489 "=" - WHITESPACE@489..490 " " - CURLY_GROUP@490..496 - L_CURLY@490..491 "{" - WORD@491..495 "CoRR" - R_CURLY@495..496 "}" - COMMA@496..497 "," - WHITESPACE@497..502 "\n " - FIELD@502..531 - NAME@502..508 "volume" - WHITESPACE@508..512 " " - EQ@512..513 "=" - WHITESPACE@513..514 " " - CURLY_GROUP@514..530 - L_CURLY@514..515 "{" - WORD@515..529 "abs/2107.11903" - R_CURLY@529..530 "}" - COMMA@530..531 "," - WHITESPACE@531..536 "\n " - FIELD@536..555 - NAME@536..540 "year" - WHITESPACE@540..546 " " - EQ@546..547 "=" - WHITESPACE@547..548 " " - CURLY_GROUP@548..554 - L_CURLY@548..549 "{" - INTEGER@549..553 "2021" - R_CURLY@553..554 "}" - COMMA@554..555 "," - WHITESPACE@555..560 "\n " - FIELD@560..607 - NAME@560..563 "url" - WHITESPACE@563..570 " " - EQ@570..571 "=" - WHITESPACE@571..572 " " - CURLY_GROUP@572..606 - L_CURLY@572..573 "{" - WORD@573..605 "https://arxiv.org/abs ..." - R_CURLY@605..606 "}" - COMMA@606..607 "," - WHITESPACE@607..612 "\n " - FIELD@612..633 - NAME@612..622 "eprinttype" - WHITESPACE@622..623 " " - EQ@623..624 "=" - WHITESPACE@624..625 " " - CURLY_GROUP@625..632 - L_CURLY@625..626 "{" - WORD@626..631 "arXiv" - R_CURLY@631..632 "}" - COMMA@632..633 "," - WHITESPACE@633..638 "\n " - FIELD@638..663 - NAME@638..644 "eprint" - WHITESPACE@644..648 " " - EQ@648..649 "=" - WHITESPACE@649..650 " " - CURLY_GROUP@650..662 - L_CURLY@650..651 "{" - WORD@651..661 "2107.11903" - R_CURLY@661..662 "}" - COMMA@662..663 "," - WHITESPACE@663..668 "\n " - FIELD@668..714 - NAME@668..677 "timestamp" - WHITESPACE@677..678 " " - EQ@678..679 "=" - WHITESPACE@679..680 " " - CURLY_GROUP@680..713 - L_CURLY@680..681 "{" - WORD@681..684 "Thu" - COMMA@684..685 "," - WHITESPACE@685..686 " " - INTEGER@686..688 "29" - WHITESPACE@688..689 " " - WORD@689..692 "Jul" - WHITESPACE@692..693 " " - INTEGER@693..697 "2021" - WHITESPACE@697..698 " " - WORD@698..706 "16:14:15" - WHITESPACE@706..707 " " - WORD@707..712 "+0200" - R_CURLY@712..713 "}" - COMMA@713..714 "," - WHITESPACE@714..719 "\n " - FIELD@719..787 - NAME@719..725 "biburl" - WHITESPACE@725..729 " " - EQ@729..730 "=" - WHITESPACE@730..731 " " - CURLY_GROUP@731..786 - L_CURLY@731..732 "{" - WORD@732..785 "https://dblp.org/rec/ ..." - R_CURLY@785..786 "}" - COMMA@786..787 "," - WHITESPACE@787..792 "\n " - FIELD@792..859 - NAME@792..801 "bibsource" - WHITESPACE@801..802 " " - EQ@802..803 "=" - WHITESPACE@803..804 " " - CURLY_GROUP@804..858 - L_CURLY@804..805 "{" - WORD@805..809 "dblp" - WHITESPACE@809..810 " " - WORD@810..818 "computer" - WHITESPACE@818..819 " " - WORD@819..826 "science" - WHITESPACE@826..827 " " - WORD@827..839 "bibliography" - COMMA@839..840 "," - WHITESPACE@840..841 " " - WORD@841..857 "https://dblp.org" - R_CURLY@857..858 "}" - WHITESPACE@858..859 "\n" - R_DELIM@859..860 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__combi_2004.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__combi_2004.txt.snap deleted file mode 100644 index d633886ced..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__combi_2004.txt.snap +++ /dev/null @@ -1,251 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/combi_2004.txt ---- -ROOT@0..674 - ENTRY@0..674 - TYPE@0..14 "@inproceedings" - L_DELIM@14..15 "{" - NAME@15..36 "10.1145/967900.968040" - COMMA@36..37 "," - WHITESPACE@37..42 "\n " - FIELD@42..86 - NAME@42..48 "author" - WHITESPACE@48..49 " " - EQ@49..50 "=" - WHITESPACE@50..51 " " - CURLY_GROUP@51..85 - L_CURLY@51..52 "{" - WORD@52..57 "Combi" - COMMA@57..58 "," - WHITESPACE@58..59 " " - WORD@59..64 "Carlo" - WHITESPACE@64..65 " " - WORD@65..68 "and" - WHITESPACE@68..69 " " - WORD@69..74 "Pozzi" - COMMA@74..75 "," - WHITESPACE@75..76 " " - WORD@76..84 "Giuseppe" - R_CURLY@84..85 "}" - COMMA@85..86 "," - WHITESPACE@86..91 "\n " - FIELD@91..157 - NAME@91..96 "title" - WHITESPACE@96..97 " " - EQ@97..98 "=" - WHITESPACE@98..99 " " - CURLY_GROUP@99..156 - L_CURLY@99..100 "{" - WORD@100..113 "Architectures" - WHITESPACE@113..114 " " - WORD@114..117 "for" - WHITESPACE@117..118 " " - WORD@118..119 "a" - WHITESPACE@119..120 " " - WORD@120..128 "Temporal" - WHITESPACE@128..129 " " - WORD@129..137 "Workflow" - WHITESPACE@137..138 " " - WORD@138..148 "Management" - WHITESPACE@148..149 " " - WORD@149..155 "System" - R_CURLY@155..156 "}" - COMMA@156..157 "," - WHITESPACE@157..162 "\n " - FIELD@162..176 - NAME@162..166 "year" - WHITESPACE@166..167 " " - EQ@167..168 "=" - WHITESPACE@168..169 " " - CURLY_GROUP@169..175 - L_CURLY@169..170 "{" - INTEGER@170..174 "2004" - R_CURLY@174..175 "}" - COMMA@175..176 "," - WHITESPACE@176..181 "\n " - FIELD@181..201 - NAME@181..185 "isbn" - WHITESPACE@185..186 " " - EQ@186..187 "=" - WHITESPACE@187..188 " " - CURLY_GROUP@188..200 - L_CURLY@188..189 "{" - INTEGER@189..199 "1581138121" - R_CURLY@199..200 "}" - COMMA@200..201 "," - WHITESPACE@201..206 "\n " - FIELD@206..256 - NAME@206..215 "publisher" - WHITESPACE@215..216 " " - EQ@216..217 "=" - WHITESPACE@217..218 " " - CURLY_GROUP@218..255 - L_CURLY@218..219 "{" - WORD@219..230 "Association" - WHITESPACE@230..231 " " - WORD@231..234 "for" - WHITESPACE@234..235 " " - WORD@235..244 "Computing" - WHITESPACE@244..245 " " - WORD@245..254 "Machinery" - R_CURLY@254..255 "}" - COMMA@255..256 "," - WHITESPACE@256..261 "\n " - FIELD@261..291 - NAME@261..268 "address" - WHITESPACE@268..269 " " - EQ@269..270 "=" - WHITESPACE@270..271 " " - CURLY_GROUP@271..290 - L_CURLY@271..272 "{" - WORD@272..275 "New" - WHITESPACE@275..276 " " - WORD@276..280 "York" - COMMA@280..281 "," - WHITESPACE@281..282 " " - WORD@282..284 "NY" - COMMA@284..285 "," - WHITESPACE@285..286 " " - WORD@286..289 "USA" - R_CURLY@289..290 "}" - COMMA@290..291 "," - WHITESPACE@291..296 "\n " - FIELD@296..342 - NAME@296..299 "url" - WHITESPACE@299..300 " " - EQ@300..301 "=" - WHITESPACE@301..302 " " - CURLY_GROUP@302..341 - L_CURLY@302..303 "{" - WORD@303..340 "https://doi.org/10.11 ..." - R_CURLY@340..341 "}" - COMMA@341..342 "," - WHITESPACE@342..347 "\n " - FIELD@347..377 - NAME@347..350 "doi" - WHITESPACE@350..351 " " - EQ@351..352 "=" - WHITESPACE@352..353 " " - CURLY_GROUP@353..376 - L_CURLY@353..354 "{" - WORD@354..375 "10.1145/967900.968040" - R_CURLY@375..376 "}" - COMMA@376..377 "," - WHITESPACE@377..382 "\n " - FIELD@382..455 - NAME@382..391 "booktitle" - WHITESPACE@391..392 " " - EQ@392..393 "=" - WHITESPACE@393..394 " " - CURLY_GROUP@394..454 - L_CURLY@394..395 "{" - WORD@395..406 "Proceedings" - WHITESPACE@406..407 " " - WORD@407..409 "of" - WHITESPACE@409..410 " " - WORD@410..413 "the" - WHITESPACE@413..414 " " - INTEGER@414..418 "2004" - WHITESPACE@418..419 " " - WORD@419..422 "ACM" - WHITESPACE@422..423 " " - WORD@423..432 "Symposium" - WHITESPACE@432..433 " " - WORD@433..435 "on" - WHITESPACE@435..436 " " - WORD@436..443 "Applied" - WHITESPACE@443..444 " " - WORD@444..453 "Computing" - R_CURLY@453..454 "}" - COMMA@454..455 "," - WHITESPACE@455..460 "\n " - FIELD@460..478 - NAME@460..465 "pages" - WHITESPACE@465..466 " " - EQ@466..467 "=" - WHITESPACE@467..468 " " - CURLY_GROUP@468..477 - L_CURLY@468..469 "{" - WORD@469..476 "659-666" - R_CURLY@476..477 "}" - COMMA@477..478 "," - WHITESPACE@478..483 "\n " - FIELD@483..498 - NAME@483..491 "numpages" - WHITESPACE@491..492 " " - EQ@492..493 "=" - WHITESPACE@493..494 " " - CURLY_GROUP@494..497 - L_CURLY@494..495 "{" - INTEGER@495..496 "8" - R_CURLY@496..497 "}" - COMMA@497..498 "," - WHITESPACE@498..503 "\n " - FIELD@503..615 - NAME@503..511 "keywords" - WHITESPACE@511..512 " " - EQ@512..513 "=" - WHITESPACE@513..514 " " - CURLY_GROUP@514..614 - L_CURLY@514..515 "{" - WORD@515..521 "active" - WHITESPACE@521..522 " " - WORD@522..526 "DBMS" - COMMA@526..527 "," - WHITESPACE@527..528 " " - WORD@528..536 "temporal" - WHITESPACE@536..537 " " - WORD@537..541 "DBMS" - COMMA@541..542 "," - WHITESPACE@542..543 " " - WORD@543..551 "workflow" - WHITESPACE@551..552 " " - WORD@552..562 "management" - WHITESPACE@562..563 " " - WORD@563..569 "system" - WHITESPACE@569..570 " " - WORD@570..571 "-" - WHITESPACE@571..572 " " - WORD@572..576 "WfMS" - COMMA@576..577 "," - WHITESPACE@577..578 " " - WORD@578..586 "temporal" - WHITESPACE@586..587 " " - WORD@587..595 "workflow" - WHITESPACE@595..596 " " - WORD@596..606 "management" - WHITESPACE@606..607 " " - WORD@607..613 "system" - R_CURLY@613..614 "}" - COMMA@614..615 "," - WHITESPACE@615..620 "\n " - FIELD@620..649 - NAME@620..628 "location" - WHITESPACE@628..629 " " - EQ@629..630 "=" - WHITESPACE@630..631 " " - CURLY_GROUP@631..648 - L_CURLY@631..632 "{" - WORD@632..639 "Nicosia" - COMMA@639..640 "," - WHITESPACE@640..641 " " - WORD@641..647 "Cyprus" - R_CURLY@647..648 "}" - COMMA@648..649 "," - WHITESPACE@649..654 "\n " - FIELD@654..673 - NAME@654..660 "series" - WHITESPACE@660..661 " " - EQ@661..662 "=" - WHITESPACE@662..663 " " - CURLY_GROUP@663..672 - L_CURLY@663..664 "{" - WORD@664..667 "SAC" - WHITESPACE@667..668 " " - WORD@668..671 "'04" - R_CURLY@671..672 "}" - WHITESPACE@672..673 "\n" - R_DELIM@673..674 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__erwin_2007.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__erwin_2007.txt.snap deleted file mode 100644 index 2275d58d08..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__erwin_2007.txt.snap +++ /dev/null @@ -1,239 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/erwin_2007.txt ---- -ROOT@0..615 - ENTRY@0..615 - TYPE@0..14 "@inproceedings" - L_DELIM@14..15 "{" - NAME@15..38 "10.5555/1386993.1386994" - COMMA@38..39 "," - WHITESPACE@39..44 "\n " - FIELD@44..107 - NAME@44..50 "author" - WHITESPACE@50..51 " " - EQ@51..52 "=" - WHITESPACE@52..53 " " - CURLY_GROUP@53..106 - L_CURLY@53..54 "{" - WORD@54..59 "Erwin" - COMMA@59..60 "," - WHITESPACE@60..61 " " - WORD@61..65 "Alva" - WHITESPACE@65..66 " " - WORD@66..69 "and" - WHITESPACE@69..70 " " - WORD@70..77 "Gopalan" - COMMA@77..78 "," - WHITESPACE@78..79 " " - WORD@79..82 "Raj" - WHITESPACE@82..83 " " - WORD@83..85 "P." - WHITESPACE@85..86 " " - WORD@86..89 "and" - WHITESPACE@89..90 " " - WORD@90..98 "Achuthan" - COMMA@98..99 "," - WHITESPACE@99..100 " " - WORD@100..102 "N." - WHITESPACE@102..103 " " - WORD@103..105 "R." - R_CURLY@105..106 "}" - COMMA@106..107 "," - WHITESPACE@107..112 "\n " - FIELD@112..194 - NAME@112..117 "title" - WHITESPACE@117..118 " " - EQ@118..119 "=" - WHITESPACE@119..120 " " - CURLY_GROUP@120..193 - L_CURLY@120..121 "{" - WORD@121..122 "A" - WHITESPACE@122..123 " " - WORD@123..132 "Bottom-up" - WHITESPACE@132..133 " " - WORD@133..143 "Projection" - WHITESPACE@143..144 " " - WORD@144..149 "Based" - WHITESPACE@149..150 " " - WORD@150..159 "Algorithm" - WHITESPACE@159..160 " " - WORD@160..163 "for" - WHITESPACE@163..164 " " - WORD@164..170 "Mining" - WHITESPACE@170..171 " " - WORD@171..175 "High" - WHITESPACE@175..176 " " - WORD@176..183 "Utility" - WHITESPACE@183..184 " " - WORD@184..192 "Itemsets" - R_CURLY@192..193 "}" - COMMA@193..194 "," - WHITESPACE@194..199 "\n " - FIELD@199..213 - NAME@199..203 "year" - WHITESPACE@203..204 " " - EQ@204..205 "=" - WHITESPACE@205..206 " " - CURLY_GROUP@206..212 - L_CURLY@206..207 "{" - INTEGER@207..211 "2007" - R_CURLY@211..212 "}" - COMMA@212..213 "," - WHITESPACE@213..218 "\n " - FIELD@218..241 - NAME@218..222 "isbn" - WHITESPACE@222..223 " " - EQ@223..224 "=" - WHITESPACE@224..225 " " - CURLY_GROUP@225..240 - L_CURLY@225..226 "{" - INTEGER@226..239 "9781920682651" - R_CURLY@239..240 "}" - COMMA@240..241 "," - WHITESPACE@241..246 "\n " - FIELD@246..294 - NAME@246..255 "publisher" - WHITESPACE@255..256 " " - EQ@256..257 "=" - WHITESPACE@257..258 " " - CURLY_GROUP@258..293 - L_CURLY@258..259 "{" - WORD@259..269 "Australian" - WHITESPACE@269..270 " " - WORD@270..278 "Computer" - WHITESPACE@278..279 " " - WORD@279..286 "Society" - COMMA@286..287 "," - WHITESPACE@287..288 " " - WORD@288..292 "Inc." - R_CURLY@292..293 "}" - COMMA@293..294 "," - WHITESPACE@294..299 "\n " - FIELD@299..315 - NAME@299..306 "address" - WHITESPACE@306..307 " " - EQ@307..308 "=" - WHITESPACE@308..309 " " - CURLY_GROUP@309..314 - L_CURLY@309..310 "{" - WORD@310..313 "AUS" - R_CURLY@313..314 "}" - COMMA@314..315 "," - WHITESPACE@315..320 "\n " - FIELD@320..447 - NAME@320..329 "booktitle" - WHITESPACE@329..330 " " - EQ@330..331 "=" - WHITESPACE@331..332 " " - CURLY_GROUP@332..446 - L_CURLY@332..333 "{" - WORD@333..344 "Proceedings" - WHITESPACE@344..345 " " - WORD@345..347 "of" - WHITESPACE@347..348 " " - WORD@348..351 "the" - WHITESPACE@351..352 " " - WORD@352..355 "2nd" - WHITESPACE@355..356 " " - WORD@356..369 "International" - WHITESPACE@369..370 " " - WORD@370..378 "Workshop" - WHITESPACE@378..379 " " - WORD@379..381 "on" - WHITESPACE@381..382 " " - WORD@382..393 "Integrating" - WHITESPACE@393..394 " " - WORD@394..404 "Artificial" - WHITESPACE@404..405 " " - WORD@405..417 "Intelligence" - WHITESPACE@417..418 " " - WORD@418..421 "and" - WHITESPACE@421..422 " " - WORD@422..426 "Data" - WHITESPACE@426..427 " " - WORD@427..433 "Mining" - WHITESPACE@433..434 " " - WORD@434..435 "-" - WHITESPACE@435..436 " " - WORD@436..442 "Volume" - WHITESPACE@442..443 " " - INTEGER@443..445 "84" - R_CURLY@445..446 "}" - COMMA@446..447 "," - WHITESPACE@447..452 "\n " - FIELD@452..467 - NAME@452..457 "pages" - WHITESPACE@457..458 " " - EQ@458..459 "=" - WHITESPACE@459..460 " " - CURLY_GROUP@460..466 - L_CURLY@460..461 "{" - WORD@461..465 "3-11" - R_CURLY@465..466 "}" - COMMA@466..467 "," - WHITESPACE@467..472 "\n " - FIELD@472..487 - NAME@472..480 "numpages" - WHITESPACE@480..481 " " - EQ@481..482 "=" - WHITESPACE@482..483 " " - CURLY_GROUP@483..486 - L_CURLY@483..484 "{" - INTEGER@484..485 "9" - R_CURLY@485..486 "}" - COMMA@486..487 "," - WHITESPACE@487..492 "\n " - FIELD@492..549 - NAME@492..500 "keywords" - WHITESPACE@500..501 " " - EQ@501..502 "=" - WHITESPACE@502..503 " " - CURLY_GROUP@503..548 - L_CURLY@503..504 "{" - WORD@504..511 "pattern" - WHITESPACE@511..512 " " - WORD@512..518 "growth" - COMMA@518..519 "," - WHITESPACE@519..520 " " - WORD@520..524 "high" - WHITESPACE@524..525 " " - WORD@525..532 "utility" - WHITESPACE@532..533 " " - WORD@533..540 "itemset" - WHITESPACE@540..541 " " - WORD@541..547 "mining" - R_CURLY@547..548 "}" - COMMA@548..549 "," - WHITESPACE@549..554 "\n " - FIELD@554..589 - NAME@554..562 "location" - WHITESPACE@562..563 " " - EQ@563..564 "=" - WHITESPACE@564..565 " " - CURLY_GROUP@565..588 - L_CURLY@565..566 "{" - WORD@566..570 "Gold" - WHITESPACE@570..571 " " - WORD@571..576 "Coast" - COMMA@576..577 "," - WHITESPACE@577..578 " " - WORD@578..587 "Australia" - R_CURLY@587..588 "}" - COMMA@588..589 "," - WHITESPACE@589..594 "\n " - FIELD@594..614 - NAME@594..600 "series" - WHITESPACE@600..601 " " - EQ@601..602 "=" - WHITESPACE@602..603 " " - CURLY_GROUP@603..613 - L_CURLY@603..604 "{" - WORD@604..608 "AIDM" - WHITESPACE@608..609 " " - WORD@609..612 "'07" - R_CURLY@612..613 "}" - WHITESPACE@613..614 "\n" - R_DELIM@614..615 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap deleted file mode 100644 index d409435d09..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__jain_1999.txt.snap +++ /dev/null @@ -1,267 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/jain_1999.txt ---- -ROOT@0..674 - ENTRY@0..674 - TYPE@0..8 "@article" - L_DELIM@8..9 "{" - NAME@9..30 "10.1145/331499.331504" - COMMA@30..31 "," - WHITESPACE@31..36 "\n " - FIELD@36..93 - NAME@36..42 "author" - WHITESPACE@42..43 " " - EQ@43..44 "=" - WHITESPACE@44..45 " " - CURLY_GROUP@45..92 - L_CURLY@45..46 "{" - WORD@46..50 "Jain" - COMMA@50..51 "," - WHITESPACE@51..52 " " - WORD@52..54 "A." - WHITESPACE@54..55 " " - WORD@55..57 "K." - WHITESPACE@57..58 " " - WORD@58..61 "and" - WHITESPACE@61..62 " " - WORD@62..67 "Murty" - COMMA@67..68 "," - WHITESPACE@68..69 " " - WORD@69..71 "M." - WHITESPACE@71..72 " " - WORD@72..74 "N." - WHITESPACE@74..75 " " - WORD@75..78 "and" - WHITESPACE@78..79 " " - WORD@79..84 "Flynn" - COMMA@84..85 "," - WHITESPACE@85..86 " " - WORD@86..88 "P." - WHITESPACE@88..89 " " - WORD@89..91 "J." - R_CURLY@91..92 "}" - COMMA@92..93 "," - WHITESPACE@93..98 "\n " - FIELD@98..134 - NAME@98..103 "title" - WHITESPACE@103..104 " " - EQ@104..105 "=" - WHITESPACE@105..106 " " - CURLY_GROUP@106..133 - L_CURLY@106..107 "{" - WORD@107..111 "Data" - WHITESPACE@111..112 " " - WORD@112..123 "Clustering:" - WHITESPACE@123..124 " " - WORD@124..125 "A" - WHITESPACE@125..126 " " - WORD@126..132 "Review" - R_CURLY@132..133 "}" - COMMA@133..134 "," - WHITESPACE@134..139 "\n " - FIELD@139..153 - NAME@139..143 "year" - WHITESPACE@143..144 " " - EQ@144..145 "=" - WHITESPACE@145..146 " " - CURLY_GROUP@146..152 - L_CURLY@146..147 "{" - INTEGER@147..151 "1999" - R_CURLY@151..152 "}" - COMMA@152..153 "," - WHITESPACE@153..158 "\n " - FIELD@158..184 - NAME@158..168 "issue_date" - WHITESPACE@168..169 " " - EQ@169..170 "=" - WHITESPACE@170..171 " " - CURLY_GROUP@171..183 - L_CURLY@171..172 "{" - WORD@172..177 "Sept." - WHITESPACE@177..178 " " - INTEGER@178..182 "1999" - R_CURLY@182..183 "}" - COMMA@183..184 "," - WHITESPACE@184..189 "\n " - FIELD@189..239 - NAME@189..198 "publisher" - WHITESPACE@198..199 " " - EQ@199..200 "=" - WHITESPACE@200..201 " " - CURLY_GROUP@201..238 - L_CURLY@201..202 "{" - WORD@202..213 "Association" - WHITESPACE@213..214 " " - WORD@214..217 "for" - WHITESPACE@217..218 " " - WORD@218..227 "Computing" - WHITESPACE@227..228 " " - WORD@228..237 "Machinery" - R_CURLY@237..238 "}" - COMMA@238..239 "," - WHITESPACE@239..244 "\n " - FIELD@244..274 - NAME@244..251 "address" - WHITESPACE@251..252 " " - EQ@252..253 "=" - WHITESPACE@253..254 " " - CURLY_GROUP@254..273 - L_CURLY@254..255 "{" - WORD@255..258 "New" - WHITESPACE@258..259 " " - WORD@259..263 "York" - COMMA@263..264 "," - WHITESPACE@264..265 " " - WORD@265..267 "NY" - COMMA@267..268 "," - WHITESPACE@268..269 " " - WORD@269..272 "USA" - R_CURLY@272..273 "}" - COMMA@273..274 "," - WHITESPACE@274..279 "\n " - FIELD@279..293 - NAME@279..285 "volume" - WHITESPACE@285..286 " " - EQ@286..287 "=" - WHITESPACE@287..288 " " - CURLY_GROUP@288..292 - L_CURLY@288..289 "{" - INTEGER@289..291 "31" - R_CURLY@291..292 "}" - COMMA@292..293 "," - WHITESPACE@293..298 "\n " - FIELD@298..311 - NAME@298..304 "number" - WHITESPACE@304..305 " " - EQ@305..306 "=" - WHITESPACE@306..307 " " - CURLY_GROUP@307..310 - L_CURLY@307..308 "{" - INTEGER@308..309 "3" - R_CURLY@309..310 "}" - COMMA@310..311 "," - WHITESPACE@311..316 "\n " - FIELD@316..335 - NAME@316..320 "issn" - WHITESPACE@320..321 " " - EQ@321..322 "=" - WHITESPACE@322..323 " " - CURLY_GROUP@323..334 - L_CURLY@323..324 "{" - WORD@324..333 "0360-0300" - R_CURLY@333..334 "}" - COMMA@334..335 "," - WHITESPACE@335..340 "\n " - FIELD@340..386 - NAME@340..343 "url" - WHITESPACE@343..344 " " - EQ@344..345 "=" - WHITESPACE@345..346 " " - CURLY_GROUP@346..385 - L_CURLY@346..347 "{" - WORD@347..384 "https://doi.org/10.11 ..." - R_CURLY@384..385 "}" - COMMA@385..386 "," - WHITESPACE@386..391 "\n " - FIELD@391..421 - NAME@391..394 "doi" - WHITESPACE@394..395 " " - EQ@395..396 "=" - WHITESPACE@396..397 " " - CURLY_GROUP@397..420 - L_CURLY@397..398 "{" - WORD@398..419 "10.1145/331499.331504" - R_CURLY@419..420 "}" - COMMA@420..421 "," - WHITESPACE@421..426 "\n " - FIELD@426..456 - NAME@426..433 "journal" - WHITESPACE@433..434 " " - EQ@434..435 "=" - WHITESPACE@435..436 " " - CURLY_GROUP@436..455 - L_CURLY@436..437 "{" - WORD@437..440 "ACM" - WHITESPACE@440..441 " " - WORD@441..448 "Comput." - WHITESPACE@448..449 " " - WORD@449..454 "Surv." - R_CURLY@454..455 "}" - COMMA@455..456 "," - WHITESPACE@456..461 "\n " - FIELD@461..475 - NAME@461..466 "month" - WHITESPACE@466..467 " " - EQ@467..468 "=" - WHITESPACE@468..469 " " - CURLY_GROUP@469..474 - L_CURLY@469..470 "{" - WORD@470..473 "sep" - R_CURLY@473..474 "}" - COMMA@474..475 "," - WHITESPACE@475..480 "\n " - FIELD@480..498 - NAME@480..485 "pages" - WHITESPACE@485..486 " " - EQ@486..487 "=" - WHITESPACE@487..488 " " - CURLY_GROUP@488..497 - L_CURLY@488..489 "{" - WORD@489..496 "264-323" - R_CURLY@496..497 "}" - COMMA@497..498 "," - WHITESPACE@498..503 "\n " - FIELD@503..519 - NAME@503..511 "numpages" - WHITESPACE@511..512 " " - EQ@512..513 "=" - WHITESPACE@513..514 " " - CURLY_GROUP@514..518 - L_CURLY@514..515 "{" - INTEGER@515..517 "60" - R_CURLY@517..518 "}" - COMMA@518..519 "," - WHITESPACE@519..524 "\n " - FIELD@524..673 - NAME@524..532 "keywords" - WHITESPACE@532..533 " " - EQ@533..534 "=" - WHITESPACE@534..535 " " - CURLY_GROUP@535..672 - L_CURLY@535..536 "{" - WORD@536..547 "incremental" - WHITESPACE@547..548 " " - WORD@548..558 "clustering" - COMMA@558..559 "," - WHITESPACE@559..560 " " - WORD@560..570 "clustering" - WHITESPACE@570..571 " " - WORD@571..583 "applications" - COMMA@583..584 "," - WHITESPACE@584..585 " " - WORD@585..596 "exploratory" - WHITESPACE@596..597 " " - WORD@597..601 "data" - WHITESPACE@601..602 " " - WORD@602..610 "analysis" - COMMA@610..611 "," - WHITESPACE@611..612 " " - WORD@612..619 "cluster" - WHITESPACE@619..620 " " - WORD@620..628 "analysis" - COMMA@628..629 "," - WHITESPACE@629..630 " " - WORD@630..640 "similarity" - WHITESPACE@640..641 " " - WORD@641..648 "indices" - COMMA@648..649 "," - WHITESPACE@649..650 " " - WORD@650..662 "unsupervised" - WHITESPACE@662..663 " " - WORD@663..671 "learning" - R_CURLY@671..672 "}" - WHITESPACE@672..673 "\n" - R_DELIM@673..674 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__kastenholz_2006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__kastenholz_2006.txt.snap deleted file mode 100644 index e93f8ce6cb..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__kastenholz_2006.txt.snap +++ /dev/null @@ -1,302 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt ---- -ROOT@0..898 - STRING@0..35 - TYPE@0..7 "@string" - L_DELIM@7..8 "{" - NAME@8..13 "jchph" - WHITESPACE@13..16 " " - EQ@16..17 "=" - WHITESPACE@17..18 " " - CURLY_GROUP@18..34 - L_CURLY@18..19 "{" - WORD@19..21 "J." - NBSP@21..22 "~" - WORD@22..27 "Chem." - WHITESPACE@27..28 " " - WORD@28..33 "Phys." - R_CURLY@33..34 "}" - R_DELIM@34..35 "}" - JUNK@35..37 "\n\n" - ENTRY@37..898 - TYPE@37..45 "@article" - L_DELIM@45..46 "{" - NAME@46..56 "kastenholz" - COMMA@56..57 "," - WHITESPACE@57..62 "\n " - FIELD@62..130 - NAME@62..68 "author" - WHITESPACE@68..75 " " - EQ@75..76 "=" - WHITESPACE@76..77 " " - CURLY_GROUP@77..129 - L_CURLY@77..78 "{" - WORD@78..88 "Kastenholz" - COMMA@88..89 "," - WHITESPACE@89..90 " " - WORD@90..92 "M." - WHITESPACE@92..93 " " - WORD@93..95 "A." - WHITESPACE@95..96 " " - WORD@96..99 "and" - WHITESPACE@99..100 " " - WORD@100..101 "H" - CURLY_GROUP@101..106 - L_CURLY@101..102 "{" - ACCENT@102..105 - ACCENT_NAME@102..104 "\\\"" - WORD@104..105 "u" - R_CURLY@105..106 "}" - WORD@106..115 "nenberger" - COMMA@115..116 "," - WHITESPACE@116..117 " " - WORD@117..125 "Philippe" - WHITESPACE@125..126 " " - WORD@126..128 "H." - R_CURLY@128..129 "}" - COMMA@129..130 "," - WHITESPACE@130..135 "\n " - FIELD@135..275 - NAME@135..140 "title" - WHITESPACE@140..148 " " - EQ@148..149 "=" - WHITESPACE@149..150 " " - CURLY_GROUP@150..274 - L_CURLY@150..151 "{" - WORD@151..162 "Computation" - WHITESPACE@162..163 " " - WORD@163..165 "of" - WHITESPACE@165..166 " " - WORD@166..177 "methodology" - COMMAND@177..184 - COMMAND_NAME@177..184 "\\hyphen" - WHITESPACE@184..185 " " - WORD@185..196 "independent" - WHITESPACE@196..197 " " - WORD@197..202 "ionic" - WHITESPACE@202..203 " " - WORD@203..212 "solvation" - WHITESPACE@212..233 "\n " - WORD@233..237 "free" - WHITESPACE@237..238 " " - WORD@238..246 "energies" - WHITESPACE@246..247 " " - WORD@247..251 "from" - WHITESPACE@251..252 " " - WORD@252..261 "molecular" - WHITESPACE@261..262 " " - WORD@262..273 "simulations" - R_CURLY@273..274 "}" - COMMA@274..275 "," - WHITESPACE@275..280 "\n " - FIELD@280..301 - NAME@280..292 "journaltitle" - WHITESPACE@292..293 " " - EQ@293..294 "=" - WHITESPACE@294..295 " " - LITERAL@295..300 - NAME@295..300 "jchph" - COMMA@300..301 "," - WHITESPACE@301..306 "\n " - FIELD@306..326 - NAME@306..310 "date" - WHITESPACE@310..319 " " - EQ@319..320 "=" - WHITESPACE@320..321 " " - LITERAL@321..325 - INTEGER@321..325 "2006" - COMMA@325..326 "," - WHITESPACE@326..331 "\n " - FIELD@331..404 - NAME@331..339 "subtitle" - WHITESPACE@339..344 " " - EQ@344..345 "=" - WHITESPACE@345..346 " " - CURLY_GROUP@346..403 - L_CURLY@346..347 "{" - CURLY_GROUP@347..350 - L_CURLY@347..348 "{" - WORD@348..349 "I" - R_CURLY@349..350 "}" - WORD@350..351 "." - WHITESPACE@351..352 " " - CURLY_GROUP@352..357 - L_CURLY@352..353 "{" - WORD@353..356 "The" - R_CURLY@356..357 "}" - WHITESPACE@357..358 " " - WORD@358..371 "electrostatic" - WHITESPACE@371..372 " " - WORD@372..381 "potential" - WHITESPACE@381..382 " " - WORD@382..384 "in" - WHITESPACE@384..385 " " - WORD@385..394 "molecular" - WHITESPACE@394..395 " " - WORD@395..402 "liquids" - R_CURLY@402..403 "}" - COMMA@403..404 "," - WHITESPACE@404..409 "\n " - FIELD@409..428 - NAME@409..415 "volume" - WHITESPACE@415..422 " " - EQ@422..423 "=" - WHITESPACE@423..424 " " - LITERAL@424..427 - INTEGER@424..427 "124" - COMMA@427..428 "," - WHITESPACE@428..433 "\n " - FIELD@433..455 - NAME@433..436 "eid" - WHITESPACE@436..446 " " - EQ@446..447 "=" - WHITESPACE@447..448 " " - LITERAL@448..454 - INTEGER@448..454 "124106" - COMMA@454..455 "," - WHITESPACE@455..460 "\n " - FIELD@460..495 - NAME@460..463 "doi" - WHITESPACE@463..473 " " - EQ@473..474 "=" - WHITESPACE@474..475 " " - CURLY_GROUP@475..494 - L_CURLY@475..476 "{" - WORD@476..493 "10.1063/1.2172593" - R_CURLY@493..494 "}" - COMMA@494..495 "," - WHITESPACE@495..500 "\n " - FIELD@500..525 - NAME@500..506 "langid" - WHITESPACE@506..513 " " - EQ@513..514 "=" - WHITESPACE@514..515 " " - CURLY_GROUP@515..524 - L_CURLY@515..516 "{" - WORD@516..523 "english" - R_CURLY@523..524 "}" - COMMA@524..525 "," - WHITESPACE@525..530 "\n " - FIELD@530..564 - NAME@530..540 "langidopts" - WHITESPACE@540..543 " " - EQ@543..544 "=" - WHITESPACE@544..545 " " - CURLY_GROUP@545..563 - L_CURLY@545..546 "{" - WORD@546..562 "variant=american" - R_CURLY@562..563 "}" - COMMA@563..564 "," - WHITESPACE@564..569 "\n " - FIELD@569..631 - NAME@569..579 "indextitle" - WHITESPACE@579..582 " " - EQ@582..583 "=" - WHITESPACE@583..584 " " - CURLY_GROUP@584..630 - L_CURLY@584..585 "{" - WORD@585..596 "Computation" - WHITESPACE@596..597 " " - WORD@597..599 "of" - WHITESPACE@599..600 " " - WORD@600..605 "ionic" - WHITESPACE@605..606 " " - WORD@606..615 "solvation" - WHITESPACE@615..616 " " - WORD@616..620 "free" - WHITESPACE@620..621 " " - WORD@621..629 "energies" - R_CURLY@629..630 "}" - COMMA@630..631 "," - WHITESPACE@631..636 "\n " - FIELD@636..896 - NAME@636..646 "annotation" - WHITESPACE@646..649 " " - EQ@649..650 "=" - WHITESPACE@650..651 " " - CURLY_GROUP@651..895 - L_CURLY@651..652 "{" - WORD@652..654 "An" - WHITESPACE@654..655 " " - COMMAND@655..662 - COMMAND_NAME@655..662 "\\texttt" - CURLY_GROUP@662..671 - L_CURLY@662..663 "{" - WORD@663..670 "article" - R_CURLY@670..671 "}" - WHITESPACE@671..672 " " - WORD@672..677 "entry" - WHITESPACE@677..678 " " - WORD@678..682 "with" - WHITESPACE@682..683 " " - WORD@683..685 "an" - WHITESPACE@685..686 " " - COMMAND@686..693 - COMMAND_NAME@686..693 "\\texttt" - CURLY_GROUP@693..698 - L_CURLY@693..694 "{" - WORD@694..697 "eid" - R_CURLY@697..698 "}" - WHITESPACE@698..699 " " - WORD@699..702 "and" - WHITESPACE@702..703 " " - WORD@703..704 "a" - WHITESPACE@704..725 "\n " - COMMAND@725..732 - COMMAND_NAME@725..732 "\\texttt" - CURLY_GROUP@732..737 - L_CURLY@732..733 "{" - WORD@733..736 "doi" - R_CURLY@736..737 "}" - WHITESPACE@737..738 " " - WORD@738..744 "field." - WHITESPACE@744..745 " " - WORD@745..749 "Note" - WHITESPACE@749..750 " " - WORD@750..754 "that" - WHITESPACE@754..755 " " - WORD@755..758 "the" - WHITESPACE@758..759 " " - COMMAND@759..766 - COMMAND_NAME@759..766 "\\textsc" - CURLY_GROUP@766..771 - L_CURLY@766..767 "{" - WORD@767..770 "doi" - R_CURLY@770..771 "}" - WHITESPACE@771..772 " " - WORD@772..774 "is" - WHITESPACE@774..775 " " - WORD@775..786 "transformed" - WHITESPACE@786..807 "\n " - WORD@807..811 "into" - WHITESPACE@811..812 " " - WORD@812..813 "a" - WHITESPACE@813..814 " " - WORD@814..823 "clickable" - WHITESPACE@823..824 " " - WORD@824..828 "link" - WHITESPACE@828..829 " " - WORD@829..831 "if" - WHITESPACE@831..832 " " - COMMAND@832..839 - COMMAND_NAME@832..839 "\\texttt" - CURLY_GROUP@839..849 - L_CURLY@839..840 "{" - WORD@840..848 "hyperref" - R_CURLY@848..849 "}" - WHITESPACE@849..850 " " - WORD@850..857 "support" - WHITESPACE@857..858 " " - WORD@858..861 "has" - WHITESPACE@861..862 " " - WORD@862..866 "been" - WHITESPACE@866..887 "\n " - WORD@887..894 "enabled" - R_CURLY@894..895 "}" - COMMA@895..896 "," - WHITESPACE@896..897 "\n" - R_DELIM@897..898 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__knuth_1984.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__knuth_1984.txt.snap deleted file mode 100644 index 59e678cbee..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__knuth_1984.txt.snap +++ /dev/null @@ -1,320 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/knuth_1984.txt ---- -ROOT@0..993 - ENTRY@0..993 - TYPE@0..5 "@book" - L_DELIM@5..6 "{" - NAME@6..16 "knuth:ct:a" - COMMA@16..17 "," - WHITESPACE@17..22 "\n " - FIELD@22..56 - NAME@22..28 "author" - WHITESPACE@28..35 " " - EQ@35..36 "=" - WHITESPACE@36..37 " " - CURLY_GROUP@37..55 - L_CURLY@37..38 "{" - WORD@38..43 "Knuth" - COMMA@43..44 "," - WHITESPACE@44..45 " " - WORD@45..51 "Donald" - WHITESPACE@51..52 " " - WORD@52..54 "E." - R_CURLY@54..55 "}" - COMMA@55..56 "," - WHITESPACE@56..61 "\n " - FIELD@61..94 - NAME@61..66 "title" - WHITESPACE@66..74 " " - EQ@74..75 "=" - WHITESPACE@75..76 " " - CURLY_GROUP@76..93 - L_CURLY@76..77 "{" - WORD@77..80 "The" - WHITESPACE@80..81 " " - CURLY_GROUP@81..92 - L_CURLY@81..82 "{" - COMMAND@82..86 - COMMAND_NAME@82..86 "\\TeX" - WHITESPACE@86..87 " " - WORD@87..91 "book" - R_CURLY@91..92 "}" - R_CURLY@92..93 "}" - COMMA@93..94 "," - WHITESPACE@94..99 "\n " - FIELD@99..119 - NAME@99..103 "date" - WHITESPACE@103..112 " " - EQ@112..113 "=" - WHITESPACE@113..114 " " - LITERAL@114..118 - INTEGER@114..118 "1984" - COMMA@118..119 "," - WHITESPACE@119..124 "\n " - FIELD@124..166 - NAME@124..133 "maintitle" - WHITESPACE@133..137 " " - EQ@137..138 "=" - WHITESPACE@138..139 " " - CURLY_GROUP@139..165 - L_CURLY@139..140 "{" - WORD@140..149 "Computers" - WHITESPACE@149..150 " " - COMMAND@150..152 - COMMAND_NAME@150..152 "\\&" - WHITESPACE@152..153 " " - WORD@153..164 "Typesetting" - R_CURLY@164..165 "}" - COMMA@165..166 "," - WHITESPACE@166..171 "\n " - FIELD@171..190 - NAME@171..177 "volume" - WHITESPACE@177..184 " " - EQ@184..185 "=" - WHITESPACE@185..186 " " - CURLY_GROUP@186..189 - L_CURLY@186..187 "{" - WORD@187..188 "A" - R_CURLY@188..189 "}" - COMMA@189..190 "," - WHITESPACE@190..195 "\n " - FIELD@195..227 - NAME@195..204 "publisher" - WHITESPACE@204..208 " " - EQ@208..209 "=" - WHITESPACE@209..210 " " - CURLY_GROUP@210..226 - L_CURLY@210..211 "{" - WORD@211..225 "Addison-Wesley" - R_CURLY@225..226 "}" - COMMA@226..227 "," - WHITESPACE@227..232 "\n " - FIELD@232..264 - NAME@232..240 "location" - WHITESPACE@240..245 " " - EQ@245..246 "=" - WHITESPACE@246..247 " " - CURLY_GROUP@247..263 - L_CURLY@247..248 "{" - WORD@248..255 "Reading" - COMMA@255..256 "," - WHITESPACE@256..257 " " - WORD@257..262 "Mass." - R_CURLY@262..263 "}" - COMMA@263..264 "," - WHITESPACE@264..269 "\n " - FIELD@269..294 - NAME@269..275 "langid" - WHITESPACE@275..282 " " - EQ@282..283 "=" - WHITESPACE@283..284 " " - CURLY_GROUP@284..293 - L_CURLY@284..285 "{" - WORD@285..292 "english" - R_CURLY@292..293 "}" - COMMA@293..294 "," - WHITESPACE@294..299 "\n " - FIELD@299..333 - NAME@299..309 "langidopts" - WHITESPACE@309..312 " " - EQ@312..313 "=" - WHITESPACE@313..314 " " - CURLY_GROUP@314..332 - L_CURLY@314..315 "{" - WORD@315..331 "variant=american" - R_CURLY@331..332 "}" - COMMA@332..333 "," - WHITESPACE@333..338 "\n " - FIELD@338..381 - NAME@338..347 "sorttitle" - WHITESPACE@347..351 " " - EQ@351..352 "=" - WHITESPACE@352..353 " " - CURLY_GROUP@353..380 - L_CURLY@353..354 "{" - WORD@354..363 "Computers" - WHITESPACE@363..364 " " - WORD@364..365 "&" - WHITESPACE@365..366 " " - WORD@366..377 "Typesetting" - WHITESPACE@377..378 " " - WORD@378..379 "A" - R_CURLY@379..380 "}" - COMMA@380..381 "," - WHITESPACE@381..386 "\n " - FIELD@386..416 - NAME@386..400 "indexsorttitle" - EQ@400..401 "=" - WHITESPACE@401..402 " " - CURLY_GROUP@402..415 - L_CURLY@402..403 "{" - WORD@403..406 "The" - WHITESPACE@406..407 " " - WORD@407..414 "TeXbook" - R_CURLY@414..415 "}" - COMMA@415..416 "," - WHITESPACE@416..421 "\n " - FIELD@421..461 - NAME@421..431 "indextitle" - WHITESPACE@431..434 " " - EQ@434..435 "=" - WHITESPACE@435..436 " " - CURLY_GROUP@436..460 - L_CURLY@436..437 "{" - COMMAND@437..445 - COMMAND_NAME@437..445 "\\protect" - COMMAND@445..449 - COMMAND_NAME@445..449 "\\TeX" - WHITESPACE@449..450 " " - WORD@450..454 "book" - COMMA@454..455 "," - WHITESPACE@455..456 " " - WORD@456..459 "The" - R_CURLY@459..460 "}" - COMMA@460..461 "," - WHITESPACE@461..466 "\n " - FIELD@466..493 - NAME@466..476 "shorttitle" - WHITESPACE@476..479 " " - EQ@479..480 "=" - WHITESPACE@480..481 " " - CURLY_GROUP@481..492 - L_CURLY@481..482 "{" - COMMAND@482..486 - COMMAND_NAME@482..486 "\\TeX" - WHITESPACE@486..487 " " - WORD@487..491 "book" - R_CURLY@491..492 "}" - COMMA@492..493 "," - WHITESPACE@493..498 "\n " - FIELD@498..991 - NAME@498..508 "annotation" - WHITESPACE@508..511 " " - EQ@511..512 "=" - WHITESPACE@512..513 " " - CURLY_GROUP@513..990 - L_CURLY@513..514 "{" - WORD@514..517 "The" - WHITESPACE@517..518 " " - WORD@518..523 "first" - WHITESPACE@523..524 " " - WORD@524..530 "volume" - WHITESPACE@530..531 " " - WORD@531..533 "of" - WHITESPACE@533..534 " " - WORD@534..535 "a" - WHITESPACE@535..536 " " - WORD@536..547 "five-volume" - WHITESPACE@547..548 " " - WORD@548..553 "book." - WHITESPACE@553..554 " " - WORD@554..558 "Note" - WHITESPACE@558..559 " " - WORD@559..562 "the" - WHITESPACE@562..583 "\n " - COMMAND@583..590 - COMMAND_NAME@583..590 "\\texttt" - CURLY_GROUP@590..601 - L_CURLY@590..591 "{" - WORD@591..600 "sorttitle" - R_CURLY@600..601 "}" - WHITESPACE@601..602 " " - WORD@602..608 "field." - WHITESPACE@608..609 " " - WORD@609..611 "We" - WHITESPACE@611..612 " " - WORD@612..616 "want" - WHITESPACE@616..617 " " - WORD@617..621 "this" - WHITESPACE@621..642 "\n " - WORD@642..648 "volume" - WHITESPACE@648..649 " " - WORD@649..651 "to" - WHITESPACE@651..652 " " - WORD@652..654 "be" - WHITESPACE@654..655 " " - WORD@655..661 "listed" - WHITESPACE@661..662 " " - WORD@662..667 "after" - WHITESPACE@667..668 " " - WORD@668..671 "the" - WHITESPACE@671..672 " " - WORD@672..677 "entry" - WHITESPACE@677..678 " " - WORD@678..687 "referring" - WHITESPACE@687..688 " " - WORD@688..690 "to" - WHITESPACE@690..691 " " - WORD@691..694 "the" - WHITESPACE@694..695 " " - WORD@695..701 "entire" - WHITESPACE@701..722 "\n " - WORD@722..733 "five-volume" - WHITESPACE@733..734 " " - WORD@734..738 "set." - WHITESPACE@738..739 " " - WORD@739..743 "Also" - WHITESPACE@743..744 " " - WORD@744..748 "note" - WHITESPACE@748..749 " " - WORD@749..752 "the" - WHITESPACE@752..753 " " - COMMAND@753..760 - COMMAND_NAME@753..760 "\\texttt" - CURLY_GROUP@760..772 - L_CURLY@760..761 "{" - WORD@761..771 "indextitle" - R_CURLY@771..772 "}" - WHITESPACE@772..773 " " - WORD@773..776 "and" - WHITESPACE@776..797 "\n " - COMMAND@797..804 - COMMAND_NAME@797..804 "\\texttt" - CURLY_GROUP@804..820 - L_CURLY@804..805 "{" - WORD@805..819 "indexsorttitle" - R_CURLY@819..820 "}" - WHITESPACE@820..821 " " - WORD@821..828 "fields." - WHITESPACE@828..829 " " - WORD@829..837 "Indexing" - WHITESPACE@837..838 " " - WORD@838..846 "packages" - WHITESPACE@846..847 " " - WORD@847..851 "that" - WHITESPACE@851..852 " " - WORD@852..857 "don't" - WHITESPACE@857..878 "\n " - WORD@878..886 "generate" - WHITESPACE@886..887 " " - WORD@887..893 "robust" - WHITESPACE@893..894 " " - WORD@894..899 "index" - WHITESPACE@899..900 " " - WORD@900..907 "entries" - WHITESPACE@907..908 " " - WORD@908..915 "require" - WHITESPACE@915..916 " " - WORD@916..920 "some" - WHITESPACE@920..921 " " - WORD@921..928 "control" - WHITESPACE@928..929 " " - WORD@929..938 "sequences" - WHITESPACE@938..959 "\n " - WORD@959..961 "to" - WHITESPACE@961..962 " " - WORD@962..964 "be" - WHITESPACE@964..965 " " - WORD@965..974 "protected" - WHITESPACE@974..975 " " - WORD@975..979 "from" - WHITESPACE@979..980 " " - WORD@980..989 "expansion" - R_CURLY@989..990 "}" - COMMA@990..991 "," - WHITESPACE@991..992 "\n" - R_DELIM@992..993 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__matuz_1990.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__matuz_1990.txt.snap deleted file mode 100644 index 75f0293f23..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__matuz_1990.txt.snap +++ /dev/null @@ -1,176 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/matuz_1990.txt ---- -ROOT@0..517 - ENTRY@0..517 - TYPE@0..11 "@collection" - L_DELIM@11..12 "{" - NAME@12..23 "matuz:doody" - COMMA@23..24 "," - WHITESPACE@24..29 "\n " - FIELD@29..59 - NAME@29..35 "editor" - WHITESPACE@35..42 " " - EQ@42..43 "=" - WHITESPACE@43..44 " " - CURLY_GROUP@44..58 - L_CURLY@44..45 "{" - WORD@45..50 "Matuz" - COMMA@50..51 "," - WHITESPACE@51..52 " " - WORD@52..57 "Roger" - R_CURLY@57..58 "}" - COMMA@58..59 "," - WHITESPACE@59..64 "\n " - FIELD@64..113 - NAME@64..69 "title" - WHITESPACE@69..77 " " - EQ@77..78 "=" - WHITESPACE@78..79 " " - CURLY_GROUP@79..112 - L_CURLY@79..80 "{" - WORD@80..92 "Contemporary" - WHITESPACE@92..93 " " - WORD@93..101 "Literary" - WHITESPACE@101..102 " " - WORD@102..111 "Criticism" - R_CURLY@111..112 "}" - COMMA@112..113 "," - WHITESPACE@113..118 "\n " - FIELD@118..138 - NAME@118..122 "year" - WHITESPACE@122..131 " " - EQ@131..132 "=" - WHITESPACE@132..133 " " - LITERAL@133..137 - INTEGER@133..137 "1990" - COMMA@137..138 "," - WHITESPACE@138..143 "\n " - FIELD@143..161 - NAME@143..149 "volume" - WHITESPACE@149..156 " " - EQ@156..157 "=" - WHITESPACE@157..158 " " - LITERAL@158..160 - INTEGER@158..160 "61" - COMMA@160..161 "," - WHITESPACE@161..166 "\n " - FIELD@166..188 - NAME@166..175 "publisher" - WHITESPACE@175..179 " " - EQ@179..180 "=" - WHITESPACE@180..181 " " - CURLY_GROUP@181..187 - L_CURLY@181..182 "{" - WORD@182..186 "Gale" - R_CURLY@186..187 "}" - COMMA@187..188 "," - WHITESPACE@188..193 "\n " - FIELD@193..218 - NAME@193..201 "location" - WHITESPACE@201..206 " " - EQ@206..207 "=" - WHITESPACE@207..208 " " - CURLY_GROUP@208..217 - L_CURLY@208..209 "{" - WORD@209..216 "Detroit" - R_CURLY@216..217 "}" - COMMA@217..218 "," - WHITESPACE@218..223 "\n " - FIELD@223..248 - NAME@223..228 "pages" - WHITESPACE@228..236 " " - EQ@236..237 "=" - WHITESPACE@237..238 " " - CURLY_GROUP@238..247 - L_CURLY@238..239 "{" - WORD@239..246 "204-208" - R_CURLY@246..247 "}" - COMMA@247..248 "," - WHITESPACE@248..253 "\n " - FIELD@253..278 - NAME@253..259 "langid" - WHITESPACE@259..266 " " - EQ@266..267 "=" - WHITESPACE@267..268 " " - CURLY_GROUP@268..277 - L_CURLY@268..269 "{" - WORD@269..276 "english" - R_CURLY@276..277 "}" - COMMA@277..278 "," - WHITESPACE@278..283 "\n " - FIELD@283..317 - NAME@283..293 "langidopts" - WHITESPACE@293..296 " " - EQ@296..297 "=" - WHITESPACE@297..298 " " - CURLY_GROUP@298..316 - L_CURLY@298..299 "{" - WORD@299..315 "variant=american" - R_CURLY@315..316 "}" - COMMA@316..317 "," - WHITESPACE@317..322 "\n " - FIELD@322..515 - NAME@322..332 "annotation" - WHITESPACE@332..335 " " - EQ@335..336 "=" - WHITESPACE@336..337 " " - CURLY_GROUP@337..514 - L_CURLY@337..338 "{" - WORD@338..339 "A" - WHITESPACE@339..340 " " - COMMAND@340..347 - COMMAND_NAME@340..347 "\\texttt" - CURLY_GROUP@347..359 - L_CURLY@347..348 "{" - WORD@348..358 "collection" - R_CURLY@358..359 "}" - WHITESPACE@359..360 " " - WORD@360..365 "entry" - WHITESPACE@365..366 " " - WORD@366..375 "providing" - WHITESPACE@375..376 " " - WORD@376..379 "the" - WHITESPACE@379..380 " " - WORD@380..387 "excerpt" - WHITESPACE@387..388 " " - WORD@388..399 "information" - WHITESPACE@399..420 "\n " - WORD@420..423 "for" - WHITESPACE@423..424 " " - WORD@424..427 "the" - WHITESPACE@427..428 " " - COMMAND@428..435 - COMMAND_NAME@428..435 "\\texttt" - CURLY_GROUP@435..442 - L_CURLY@435..436 "{" - WORD@436..441 "doody" - R_CURLY@441..442 "}" - WHITESPACE@442..443 " " - WORD@443..449 "entry." - WHITESPACE@449..450 " " - WORD@450..454 "Note" - WHITESPACE@454..455 " " - WORD@455..458 "the" - WHITESPACE@458..459 " " - WORD@459..465 "format" - WHITESPACE@465..466 " " - WORD@466..468 "of" - WHITESPACE@468..469 " " - WORD@469..472 "the" - WHITESPACE@472..493 "\n " - COMMAND@493..500 - COMMAND_NAME@493..500 "\\texttt" - CURLY_GROUP@500..507 - L_CURLY@500..501 "{" - WORD@501..506 "pages" - R_CURLY@506..507 "}" - WHITESPACE@507..508 " " - WORD@508..513 "field" - R_CURLY@513..514 "}" - COMMA@514..515 "," - WHITESPACE@515..516 "\n" - R_DELIM@516..517 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__nietzsche_1998.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__nietzsche_1998.txt.snap deleted file mode 100644 index 97fe0cf087..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__nietzsche_1998.txt.snap +++ /dev/null @@ -1,368 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt ---- -ROOT@0..1112 - STRING@0..49 - TYPE@0..7 "@string" - L_DELIM@7..8 "{" - NAME@8..11 "dtv" - WHITESPACE@11..16 " " - EQ@16..17 "=" - WHITESPACE@17..18 " " - CURLY_GROUP@18..48 - L_CURLY@18..19 "{" - WORD@19..28 "Deutscher" - WHITESPACE@28..29 " " - WORD@29..47 "Taschenbuch-Verlag" - R_CURLY@47..48 "}" - R_DELIM@48..49 "}" - JUNK@49..51 "\n\n" - ENTRY@51..1112 - TYPE@51..58 "@mvbook" - L_DELIM@58..59 "{" - NAME@59..72 "nietzsche:ksa" - COMMA@72..73 "," - WHITESPACE@73..78 "\n " - FIELD@78..116 - NAME@78..84 "author" - WHITESPACE@84..91 " " - EQ@91..92 "=" - WHITESPACE@92..93 " " - CURLY_GROUP@93..115 - L_CURLY@93..94 "{" - WORD@94..103 "Nietzsche" - COMMA@103..104 "," - WHITESPACE@104..105 " " - WORD@105..114 "Friedrich" - R_CURLY@114..115 "}" - COMMA@115..116 "," - WHITESPACE@116..121 "\n " - FIELD@121..158 - NAME@121..126 "title" - WHITESPACE@126..134 " " - EQ@134..135 "=" - WHITESPACE@135..136 " " - CURLY_GROUP@136..157 - L_CURLY@136..137 "{" - WORD@137..138 "S" - CURLY_GROUP@138..143 - L_CURLY@138..139 "{" - ACCENT@139..142 - ACCENT_NAME@139..141 "\\\"" - WORD@141..142 "a" - R_CURLY@142..143 "}" - WORD@143..150 "mtliche" - WHITESPACE@150..151 " " - WORD@151..156 "Werke" - R_CURLY@156..157 "}" - COMMA@157..158 "," - WHITESPACE@158..163 "\n " - FIELD@163..183 - NAME@163..167 "date" - WHITESPACE@167..176 " " - EQ@176..177 "=" - WHITESPACE@177..178 " " - LITERAL@178..182 - INTEGER@178..182 "1988" - COMMA@182..183 "," - WHITESPACE@183..188 "\n " - FIELD@188..243 - NAME@188..194 "editor" - WHITESPACE@194..201 " " - EQ@201..202 "=" - WHITESPACE@202..203 " " - CURLY_GROUP@203..242 - L_CURLY@203..204 "{" - WORD@204..209 "Colli" - COMMA@209..210 "," - WHITESPACE@210..211 " " - WORD@211..218 "Giorgio" - WHITESPACE@218..219 " " - WORD@219..222 "and" - WHITESPACE@222..223 " " - WORD@223..232 "Montinari" - COMMA@232..233 "," - WHITESPACE@233..234 " " - WORD@234..241 "Mazzino" - R_CURLY@241..242 "}" - COMMA@242..243 "," - WHITESPACE@243..248 "\n " - FIELD@248..265 - NAME@248..255 "edition" - WHITESPACE@255..261 " " - EQ@261..262 "=" - WHITESPACE@262..263 " " - LITERAL@263..264 - INTEGER@263..264 "2" - COMMA@264..265 "," - WHITESPACE@265..270 "\n " - FIELD@270..288 - NAME@270..277 "volumes" - WHITESPACE@277..283 " " - EQ@283..284 "=" - WHITESPACE@284..285 " " - LITERAL@285..287 - INTEGER@285..287 "15" - COMMA@287..288 "," - WHITESPACE@288..293 "\n " - FIELD@293..339 - NAME@293..302 "publisher" - WHITESPACE@302..306 " " - EQ@306..307 "=" - WHITESPACE@307..308 " " - JOIN@308..338 - LITERAL@308..311 - NAME@308..311 "dtv" - WHITESPACE@311..312 " " - POUND@312..313 "#" - WHITESPACE@313..314 " " - CURLY_GROUP@314..338 - L_CURLY@314..315 "{" - WHITESPACE@315..316 " " - WORD@316..319 "and" - WHITESPACE@319..320 " " - WORD@320..326 "Walter" - WHITESPACE@326..327 " " - WORD@327..329 "de" - WHITESPACE@329..330 " " - WORD@330..337 "Gruyter" - R_CURLY@337..338 "}" - COMMA@338..339 "," - WHITESPACE@339..344 "\n " - FIELD@344..397 - NAME@344..352 "location" - WHITESPACE@352..357 " " - EQ@357..358 "=" - WHITESPACE@358..359 " " - CURLY_GROUP@359..396 - L_CURLY@359..360 "{" - WORD@360..361 "M" - CURLY_GROUP@361..366 - L_CURLY@361..362 "{" - ACCENT@362..365 - ACCENT_NAME@362..364 "\\\"" - WORD@364..365 "u" - R_CURLY@365..366 "}" - WORD@366..371 "nchen" - WHITESPACE@371..372 " " - WORD@372..375 "and" - WHITESPACE@375..376 " " - WORD@376..382 "Berlin" - WHITESPACE@382..383 " " - WORD@383..386 "and" - WHITESPACE@386..387 " " - WORD@387..390 "New" - WHITESPACE@390..391 " " - WORD@391..395 "York" - R_CURLY@395..396 "}" - COMMA@396..397 "," - WHITESPACE@397..402 "\n " - FIELD@402..426 - NAME@402..408 "langid" - WHITESPACE@408..415 " " - EQ@415..416 "=" - WHITESPACE@416..417 " " - CURLY_GROUP@417..425 - L_CURLY@417..418 "{" - WORD@418..424 "german" - R_CURLY@424..425 "}" - COMMA@425..426 "," - WHITESPACE@426..431 "\n " - FIELD@431..461 - NAME@431..440 "sorttitle" - WHITESPACE@440..444 " " - EQ@444..445 "=" - WHITESPACE@445..446 " " - CURLY_GROUP@446..460 - L_CURLY@446..447 "{" - WORD@447..459 "Werke-00-000" - R_CURLY@459..460 "}" - COMMA@460..461 "," - WHITESPACE@461..466 "\n " - FIELD@466..500 - NAME@466..480 "indexsorttitle" - EQ@480..481 "=" - WHITESPACE@481..482 " " - CURLY_GROUP@482..499 - L_CURLY@482..483 "{" - WORD@483..492 "Samtliche" - WHITESPACE@492..493 " " - WORD@493..498 "Werke" - R_CURLY@498..499 "}" - COMMA@499..500 "," - WHITESPACE@500..505 "\n " - FIELD@505..547 - NAME@505..513 "subtitle" - WHITESPACE@513..518 " " - EQ@518..519 "=" - WHITESPACE@519..520 " " - CURLY_GROUP@520..546 - L_CURLY@520..521 "{" - WORD@521..530 "Kritische" - WHITESPACE@530..531 " " - WORD@531..545 "Studienausgabe" - R_CURLY@545..546 "}" - COMMA@546..547 "," - WHITESPACE@547..552 "\n " - FIELD@552..1110 - NAME@552..562 "annotation" - WHITESPACE@562..565 " " - EQ@565..566 "=" - WHITESPACE@566..567 " " - CURLY_GROUP@567..1109 - L_CURLY@567..568 "{" - WORD@568..571 "The" - WHITESPACE@571..572 " " - WORD@572..580 "critical" - WHITESPACE@580..581 " " - WORD@581..588 "edition" - WHITESPACE@588..589 " " - WORD@589..591 "of" - WHITESPACE@591..592 " " - WORD@592..603 "Nietzsche's" - WHITESPACE@603..604 " " - WORD@604..610 "works." - WHITESPACE@610..611 " " - WORD@611..615 "This" - WHITESPACE@615..616 " " - WORD@616..618 "is" - WHITESPACE@618..619 " " - WORD@619..620 "a" - WHITESPACE@620..641 "\n " - COMMAND@641..648 - COMMAND_NAME@641..648 "\\texttt" - CURLY_GROUP@648..656 - L_CURLY@648..649 "{" - WORD@649..655 "mvbook" - R_CURLY@655..656 "}" - WHITESPACE@656..657 " " - WORD@657..662 "entry" - WHITESPACE@662..663 " " - WORD@663..672 "referring" - WHITESPACE@672..673 " " - WORD@673..675 "to" - WHITESPACE@675..676 " " - WORD@676..677 "a" - WHITESPACE@677..678 " " - WORD@678..687 "15-volume" - WHITESPACE@687..688 " " - WORD@688..692 "work" - WHITESPACE@692..693 " " - WORD@693..695 "as" - WHITESPACE@695..696 " " - WORD@696..697 "a" - WHITESPACE@697..718 "\n " - WORD@718..724 "whole." - WHITESPACE@724..725 " " - WORD@725..729 "Note" - WHITESPACE@729..730 " " - WORD@730..733 "the" - WHITESPACE@733..734 " " - COMMAND@734..741 - COMMAND_NAME@734..741 "\\texttt" - CURLY_GROUP@741..750 - L_CURLY@741..742 "{" - WORD@742..749 "volumes" - R_CURLY@749..750 "}" - WHITESPACE@750..751 " " - WORD@751..756 "field" - WHITESPACE@756..757 " " - WORD@757..760 "and" - WHITESPACE@760..761 " " - WORD@761..764 "the" - WHITESPACE@764..765 " " - WORD@765..771 "format" - WHITESPACE@771..772 " " - WORD@772..774 "of" - WHITESPACE@774..775 " " - WORD@775..778 "the" - WHITESPACE@778..799 "\n " - COMMAND@799..806 - COMMAND_NAME@799..806 "\\texttt" - CURLY_GROUP@806..817 - L_CURLY@806..807 "{" - WORD@807..816 "publisher" - R_CURLY@816..817 "}" - WHITESPACE@817..818 " " - WORD@818..821 "and" - WHITESPACE@821..822 " " - COMMAND@822..829 - COMMAND_NAME@822..829 "\\texttt" - CURLY_GROUP@829..839 - L_CURLY@829..830 "{" - WORD@830..838 "location" - R_CURLY@838..839 "}" - WHITESPACE@839..840 " " - WORD@840..846 "fields" - WHITESPACE@846..847 " " - WORD@847..849 "in" - WHITESPACE@849..850 " " - WORD@850..853 "the" - WHITESPACE@853..874 "\n " - WORD@874..882 "database" - WHITESPACE@882..883 " " - WORD@883..888 "file." - WHITESPACE@888..889 " " - WORD@889..893 "Also" - WHITESPACE@893..894 " " - WORD@894..898 "note" - WHITESPACE@898..899 " " - WORD@899..902 "the" - WHITESPACE@902..903 " " - COMMAND@903..910 - COMMAND_NAME@903..910 "\\texttt" - CURLY_GROUP@910..921 - L_CURLY@910..911 "{" - WORD@911..920 "sorttitle" - R_CURLY@920..921 "}" - WHITESPACE@921..922 " " - WORD@922..925 "and" - WHITESPACE@925..946 "\n " - WORD@946..951 "field" - WHITESPACE@951..952 " " - WORD@952..957 "which" - WHITESPACE@957..958 " " - WORD@958..960 "is" - WHITESPACE@960..961 " " - WORD@961..965 "used" - WHITESPACE@965..966 " " - WORD@966..968 "to" - WHITESPACE@968..969 " " - WORD@969..978 "fine-tune" - WHITESPACE@978..979 " " - WORD@979..982 "the" - WHITESPACE@982..1003 "\n " - WORD@1003..1010 "sorting" - WHITESPACE@1010..1011 " " - WORD@1011..1016 "order" - WHITESPACE@1016..1017 " " - WORD@1017..1019 "of" - WHITESPACE@1019..1020 " " - WORD@1020..1023 "the" - WHITESPACE@1023..1024 " " - WORD@1024..1037 "bibliography." - WHITESPACE@1037..1038 " " - WORD@1038..1040 "We" - WHITESPACE@1040..1041 " " - WORD@1041..1045 "want" - WHITESPACE@1045..1046 " " - WORD@1046..1050 "this" - WHITESPACE@1050..1051 " " - WORD@1051..1055 "item" - WHITESPACE@1055..1056 " " - WORD@1056..1062 "listed" - WHITESPACE@1062..1083 "\n " - WORD@1083..1088 "first" - WHITESPACE@1088..1089 " " - WORD@1089..1091 "in" - WHITESPACE@1091..1092 " " - WORD@1092..1095 "the" - WHITESPACE@1095..1096 " " - WORD@1096..1108 "bibliography" - R_CURLY@1108..1109 "}" - COMMA@1109..1110 "," - WHITESPACE@1110..1111 "\n" - R_DELIM@1111..1112 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__rivest_1978.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__rivest_1978.txt.snap deleted file mode 100644 index 11a8f38bac..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__bibtex__tests__parse@samples__rivest_1978.txt.snap +++ /dev/null @@ -1,232 +0,0 @@ ---- -source: crates/parser/src/bibtex.rs -expression: root -input_file: crates/parser/src/test_data/bibtex/samples/rivest_1978.txt ---- -ROOT@0..557 - ENTRY@0..557 - TYPE@0..8 "@article" - L_DELIM@8..9 "{" - NAME@9..30 "10.1145/359340.359342" - COMMA@30..31 "," - WHITESPACE@31..36 "\n " - FIELD@36..92 - NAME@36..42 "author" - WHITESPACE@42..43 " " - EQ@43..44 "=" - WHITESPACE@44..45 " " - CURLY_GROUP@45..91 - L_CURLY@45..46 "{" - WORD@46..52 "Rivest" - COMMA@52..53 "," - WHITESPACE@53..54 " " - WORD@54..56 "R." - WHITESPACE@56..57 " " - WORD@57..59 "L." - WHITESPACE@59..60 " " - WORD@60..63 "and" - WHITESPACE@63..64 " " - WORD@64..70 "Shamir" - COMMA@70..71 "," - WHITESPACE@71..72 " " - WORD@72..74 "A." - WHITESPACE@74..75 " " - WORD@75..78 "and" - WHITESPACE@78..79 " " - WORD@79..86 "Adleman" - COMMA@86..87 "," - WHITESPACE@87..88 " " - WORD@88..90 "L." - R_CURLY@90..91 "}" - COMMA@91..92 "," - WHITESPACE@92..97 "\n " - FIELD@97..178 - NAME@97..102 "title" - WHITESPACE@102..103 " " - EQ@103..104 "=" - WHITESPACE@104..105 " " - CURLY_GROUP@105..177 - L_CURLY@105..106 "{" - WORD@106..107 "A" - WHITESPACE@107..108 " " - WORD@108..114 "Method" - WHITESPACE@114..115 " " - WORD@115..118 "for" - WHITESPACE@118..119 " " - WORD@119..128 "Obtaining" - WHITESPACE@128..129 " " - WORD@129..136 "Digital" - WHITESPACE@136..137 " " - WORD@137..147 "Signatures" - WHITESPACE@147..148 " " - WORD@148..151 "and" - WHITESPACE@151..152 " " - WORD@152..162 "Public-Key" - WHITESPACE@162..163 " " - WORD@163..176 "Cryptosystems" - R_CURLY@176..177 "}" - COMMA@177..178 "," - WHITESPACE@178..183 "\n " - FIELD@183..197 - NAME@183..187 "year" - WHITESPACE@187..188 " " - EQ@188..189 "=" - WHITESPACE@189..190 " " - CURLY_GROUP@190..196 - L_CURLY@190..191 "{" - INTEGER@191..195 "1978" - R_CURLY@195..196 "}" - COMMA@196..197 "," - WHITESPACE@197..202 "\n " - FIELD@202..227 - NAME@202..212 "issue_date" - WHITESPACE@212..213 " " - EQ@213..214 "=" - WHITESPACE@214..215 " " - CURLY_GROUP@215..226 - L_CURLY@215..216 "{" - WORD@216..220 "Feb." - WHITESPACE@220..221 " " - INTEGER@221..225 "1978" - R_CURLY@225..226 "}" - COMMA@226..227 "," - WHITESPACE@227..232 "\n " - FIELD@232..282 - NAME@232..241 "publisher" - WHITESPACE@241..242 " " - EQ@242..243 "=" - WHITESPACE@243..244 " " - CURLY_GROUP@244..281 - L_CURLY@244..245 "{" - WORD@245..256 "Association" - WHITESPACE@256..257 " " - WORD@257..260 "for" - WHITESPACE@260..261 " " - WORD@261..270 "Computing" - WHITESPACE@270..271 " " - WORD@271..280 "Machinery" - R_CURLY@280..281 "}" - COMMA@281..282 "," - WHITESPACE@282..287 "\n " - FIELD@287..317 - NAME@287..294 "address" - WHITESPACE@294..295 " " - EQ@295..296 "=" - WHITESPACE@296..297 " " - CURLY_GROUP@297..316 - L_CURLY@297..298 "{" - WORD@298..301 "New" - WHITESPACE@301..302 " " - WORD@302..306 "York" - COMMA@306..307 "," - WHITESPACE@307..308 " " - WORD@308..310 "NY" - COMMA@310..311 "," - WHITESPACE@311..312 " " - WORD@312..315 "USA" - R_CURLY@315..316 "}" - COMMA@316..317 "," - WHITESPACE@317..322 "\n " - FIELD@322..336 - NAME@322..328 "volume" - WHITESPACE@328..329 " " - EQ@329..330 "=" - WHITESPACE@330..331 " " - CURLY_GROUP@331..335 - L_CURLY@331..332 "{" - INTEGER@332..334 "21" - R_CURLY@334..335 "}" - COMMA@335..336 "," - WHITESPACE@336..341 "\n " - FIELD@341..354 - NAME@341..347 "number" - WHITESPACE@347..348 " " - EQ@348..349 "=" - WHITESPACE@349..350 " " - CURLY_GROUP@350..353 - L_CURLY@350..351 "{" - INTEGER@351..352 "2" - R_CURLY@352..353 "}" - COMMA@353..354 "," - WHITESPACE@354..359 "\n " - FIELD@359..378 - NAME@359..363 "issn" - WHITESPACE@363..364 " " - EQ@364..365 "=" - WHITESPACE@365..366 " " - CURLY_GROUP@366..377 - L_CURLY@366..367 "{" - WORD@367..376 "0001-0782" - R_CURLY@376..377 "}" - COMMA@377..378 "," - WHITESPACE@378..383 "\n " - FIELD@383..429 - NAME@383..386 "url" - WHITESPACE@386..387 " " - EQ@387..388 "=" - WHITESPACE@388..389 " " - CURLY_GROUP@389..428 - L_CURLY@389..390 "{" - WORD@390..427 "https://doi.org/10.11 ..." - R_CURLY@427..428 "}" - COMMA@428..429 "," - WHITESPACE@429..434 "\n " - FIELD@434..464 - NAME@434..437 "doi" - WHITESPACE@437..438 " " - EQ@438..439 "=" - WHITESPACE@439..440 " " - CURLY_GROUP@440..463 - L_CURLY@440..441 "{" - WORD@441..462 "10.1145/359340.359342" - R_CURLY@462..463 "}" - COMMA@463..464 "," - WHITESPACE@464..469 "\n " - FIELD@469..493 - NAME@469..476 "journal" - WHITESPACE@476..477 " " - EQ@477..478 "=" - WHITESPACE@478..479 " " - CURLY_GROUP@479..492 - L_CURLY@479..480 "{" - WORD@480..487 "Commun." - WHITESPACE@487..488 " " - WORD@488..491 "ACM" - R_CURLY@491..492 "}" - COMMA@492..493 "," - WHITESPACE@493..498 "\n " - FIELD@498..512 - NAME@498..503 "month" - WHITESPACE@503..504 " " - EQ@504..505 "=" - WHITESPACE@505..506 " " - CURLY_GROUP@506..511 - L_CURLY@506..507 "{" - WORD@507..510 "feb" - R_CURLY@510..511 "}" - COMMA@511..512 "," - WHITESPACE@512..517 "\n " - FIELD@517..535 - NAME@517..522 "pages" - WHITESPACE@522..523 " " - EQ@523..524 "=" - WHITESPACE@524..525 " " - CURLY_GROUP@525..534 - L_CURLY@525..526 "{" - WORD@526..533 "120-126" - R_CURLY@533..534 "}" - COMMA@534..535 "," - WHITESPACE@535..540 "\n " - FIELD@540..555 - NAME@540..548 "numpages" - WHITESPACE@548..549 " " - EQ@549..550 "=" - WHITESPACE@550..551 " " - CURLY_GROUP@551..554 - L_CURLY@551..552 "{" - INTEGER@552..553 "7" - R_CURLY@553..554 "}" - COMMA@554..555 "," - WHITESPACE@555..556 "\n" - R_DELIM@556..557 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@001.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@001.txt.snap deleted file mode 100644 index 39808505c1..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@001.txt.snap +++ /dev/null @@ -1,27 +0,0 @@ ---- -source: crates/parser/src/build_log.rs -expression: parse_build_log(&text) -input_file: crates/parser/src/test_data/build_log/001.txt ---- -BuildLog { - errors: [ - BuildError { - relative_path: "./parent.tex", - level: Warning, - message: "Overfull \\hbox (200.00162pt too wide) in paragraph at lines 8--9", - hint: None, - line: Some( - 7, - ), - }, - BuildError { - relative_path: "./parent.tex", - level: Warning, - message: "Overfull \\vbox (3.19998pt too high) detected at line 23", - hint: None, - line: Some( - 22, - ), - }, - ], -} diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@002.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@002.txt.snap deleted file mode 100644 index 6d4001e120..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@002.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/build_log.rs -expression: parse_build_log(&text) -input_file: crates/parser/src/test_data/build_log/002.txt ---- -BuildLog { - errors: [ - BuildError { - relative_path: "./child.tex", - level: Error, - message: "Undefined control sequence.", - hint: Some( - "\\foo", - ), - line: Some( - 0, - ), - }, - ], -} diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@003.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@003.txt.snap deleted file mode 100644 index bbc50a44c2..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@003.txt.snap +++ /dev/null @@ -1,25 +0,0 @@ ---- -source: crates/parser/src/build_log.rs -expression: parse_build_log(&text) -input_file: crates/parser/src/test_data/build_log/003.txt ---- -BuildLog { - errors: [ - BuildError { - relative_path: "./parent.tex", - level: Warning, - message: "LaTeX Warning: Citation `foo' on page 1 undefined on input line 6.", - hint: None, - line: Some( - 5, - ), - }, - BuildError { - relative_path: "./parent.tex", - level: Warning, - message: "LaTeX Warning: There were undefined references.", - hint: None, - line: None, - }, - ], -} diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@004.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@004.txt.snap deleted file mode 100644 index c4f2ce5c72..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@004.txt.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/parser/src/build_log.rs -expression: parse_build_log(&text) -input_file: crates/parser/src/test_data/build_log/004.txt ---- -BuildLog { - errors: [ - BuildError { - relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty", - level: Error, - message: "Package babel Error: Unknown option `foo'. Either you misspelled it or the language definition file foo.ldf was not found.", - hint: Some( - "\\ProcessOptions*", - ), - line: Some( - 392, - ), - }, - BuildError { - relative_path: "/TexLive/texmf-dist/tex/generic/babel/babel.sty", - level: Error, - message: "Package babel Error: You haven't specified a language option.", - hint: Some( - "ry to proceed from here, type x to quit.}", - ), - line: Some( - 425, - ), - }, - ], -} diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@005.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@005.txt.snap deleted file mode 100644 index dafd6a4506..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@005.txt.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/parser/src/build_log.rs -expression: parse_build_log(&text) -input_file: crates/parser/src/test_data/build_log/005.txt ---- -BuildLog { - errors: [ - BuildError { - relative_path: "./parent.tex", - level: Warning, - message: "Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. Loading 'csquotes' recommended.", - hint: None, - line: None, - }, - BuildError { - relative_path: "./parent.tex", - level: Warning, - message: "LaTeX Warning: There were undefined references.", - hint: None, - line: None, - }, - BuildError { - relative_path: "./parent.tex", - level: Warning, - message: "Package biblatex Warning: Please (re)run Biber on the file: parent and rerun LaTeX afterwards.", - hint: None, - line: None, - }, - ], -} diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@006.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@006.txt.snap deleted file mode 100644 index ca9318c68d..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@006.txt.snap +++ /dev/null @@ -1,69 +0,0 @@ ---- -source: crates/parser/src/build_log.rs -expression: parse_build_log(&text) -input_file: crates/parser/src/test_data/build_log/006.txt ---- -BuildLog { - errors: [ - BuildError { - relative_path: "./parent.tex", - level: Error, - message: "Undefined control sequence.", - hint: Some( - "\\foo", - ), - line: Some( - 6, - ), - }, - BuildError { - relative_path: "./parent.tex", - level: Error, - message: "Missing $ inserted.", - hint: Some( - "\\bar", - ), - line: Some( - 7, - ), - }, - BuildError { - relative_path: "./parent.tex", - level: Error, - message: "Undefined control sequence.", - hint: Some( - "\\baz", - ), - line: Some( - 8, - ), - }, - BuildError { - relative_path: "./parent.tex", - level: Error, - message: "Missing { inserted.", - hint: None, - line: Some( - 9, - ), - }, - BuildError { - relative_path: "./parent.tex", - level: Error, - message: "Missing $ inserted.", - hint: None, - line: Some( - 9, - ), - }, - BuildError { - relative_path: "./parent.tex", - level: Error, - message: "Missing } inserted.", - hint: None, - line: Some( - 9, - ), - }, - ], -} diff --git a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@007.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@007.txt.snap deleted file mode 100644 index bf0c832fe2..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__build_log__tests__parse@007.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/build_log.rs -expression: parse_build_log(&text) -input_file: crates/parser/src/test_data/build_log/007.txt ---- -BuildLog { - errors: [ - BuildError { - relative_path: "/some/folder/a.tex", - level: Error, - message: "Undefined control sequence.", - hint: Some( - "\\lsdkfjlskdfj", - ), - line: Some( - 3, - ), - }, - ], -} diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap deleted file mode 100644 index b93689a3b9..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@block_comments.txt.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/block_comments.txt ---- -ROOT@0..48 - PREAMBLE@0..48 - TEXT@0..4 - WORD@0..3 "Foo" - LINE_BREAK@3..4 "\n" - BLOCK_COMMENT@4..22 - COMMAND_NAME@4..12 "\\iffalse" - LINE_BREAK@12..13 "\n" - WORD@13..18 "Test1" - LINE_BREAK@18..19 "\n" - COMMAND_NAME@19..22 "\\fi" - LINE_BREAK@22..23 "\n" - TEXT@23..27 - WORD@23..26 "Bar" - LINE_BREAK@26..27 "\n" - BLOCK_COMMENT@27..44 - COMMAND_NAME@27..35 "\\iffalse" - LINE_BREAK@35..36 "\n" - COMMAND_NAME@36..40 "\\fii" - LINE_BREAK@40..41 "\n" - COMMAND_NAME@41..44 "\\fi" - LINE_BREAK@44..45 "\n" - TEXT@45..48 - WORD@45..48 "Baz" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default.txt.snap deleted file mode 100644 index bb82661568..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default.txt.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/caption/caption_default.txt ---- -ROOT@0..27 - PREAMBLE@0..27 - CAPTION@0..27 - COMMAND_NAME@0..8 "\\caption" - BRACK_GROUP@8..13 - L_BRACK@8..9 "[" - TEXT@9..12 - WORD@9..12 "qux" - R_BRACK@12..13 "]" - CURLY_GROUP@13..27 - L_CURLY@13..14 "{" - TEXT@14..18 - WORD@14..17 "Foo" - WHITESPACE@17..18 " " - GENERIC_COMMAND@18..23 - COMMAND_NAME@18..22 "\\Bar" - WHITESPACE@22..23 " " - TEXT@23..26 - WORD@23..26 "Baz" - R_CURLY@26..27 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default_error.txt.snap deleted file mode 100644 index 741d4ea0c4..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_default_error.txt.snap +++ /dev/null @@ -1,25 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/caption/caption_default_error.txt ---- -ROOT@0..26 - PREAMBLE@0..26 - CAPTION@0..26 - COMMAND_NAME@0..8 "\\caption" - BRACK_GROUP@8..13 - L_BRACK@8..9 "[" - TEXT@9..12 - WORD@9..12 "qux" - R_BRACK@12..13 "]" - CURLY_GROUP@13..26 - L_CURLY@13..14 "{" - TEXT@14..18 - WORD@14..17 "Foo" - WHITESPACE@17..18 " " - GENERIC_COMMAND@18..23 - COMMAND_NAME@18..22 "\\Bar" - WHITESPACE@22..23 " " - TEXT@23..26 - WORD@23..26 "Baz" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_figure.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_figure.txt.snap deleted file mode 100644 index 56735873f9..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_figure.txt.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/caption/caption_figure.txt ---- -ROOT@0..39 - PREAMBLE@0..39 - ENVIRONMENT@0..39 - BEGIN@0..14 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..14 - L_CURLY@6..7 "{" - KEY@7..13 - WORD@7..13 "figure" - R_CURLY@13..14 "}" - CAPTION@14..27 - COMMAND_NAME@14..22 "\\caption" - CURLY_GROUP@22..27 - L_CURLY@22..23 "{" - TEXT@23..26 - WORD@23..26 "Foo" - R_CURLY@26..27 "}" - END@27..39 - COMMAND_NAME@27..31 "\\end" - CURLY_GROUP_WORD@31..39 - L_CURLY@31..32 "{" - KEY@32..38 - WORD@32..38 "figure" - R_CURLY@38..39 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal.txt.snap deleted file mode 100644 index 12ef5ffebb..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal.txt.snap +++ /dev/null @@ -1,21 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/caption/caption_minimal.txt ---- -ROOT@0..22 - PREAMBLE@0..22 - CAPTION@0..22 - COMMAND_NAME@0..8 "\\caption" - CURLY_GROUP@8..22 - L_CURLY@8..9 "{" - TEXT@9..13 - WORD@9..12 "Foo" - WHITESPACE@12..13 " " - GENERIC_COMMAND@13..18 - COMMAND_NAME@13..17 "\\Bar" - WHITESPACE@17..18 " " - TEXT@18..21 - WORD@18..21 "Baz" - R_CURLY@21..22 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal_error.txt.snap deleted file mode 100644 index 7bc85c0b20..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@caption__caption_minimal_error.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/caption/caption_minimal_error.txt ---- -ROOT@0..21 - PREAMBLE@0..21 - CAPTION@0..21 - COMMAND_NAME@0..8 "\\caption" - CURLY_GROUP@8..21 - L_CURLY@8..9 "{" - TEXT@9..13 - WORD@9..12 "Foo" - WHITESPACE@12..13 " " - GENERIC_COMMAND@13..18 - COMMAND_NAME@13..17 "\\Bar" - WHITESPACE@17..18 " " - TEXT@18..21 - WORD@18..21 "Baz" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_empty.txt.snap deleted file mode 100644 index d35246b26c..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_empty.txt.snap +++ /dev/null @@ -1,13 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_empty.txt ---- -ROOT@0..7 - PREAMBLE@0..7 - CITATION@0..7 - COMMAND_NAME@0..5 "\\cite" - CURLY_GROUP_WORD_LIST@5..7 - L_CURLY@5..6 "{" - R_CURLY@6..7 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_missing_brace.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_missing_brace.txt.snap deleted file mode 100644 index 0855ea49ad..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_missing_brace.txt.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_missing_brace.txt ---- -ROOT@0..9 - PREAMBLE@0..9 - CITATION@0..9 - COMMAND_NAME@0..5 "\\cite" - CURLY_GROUP_WORD_LIST@5..9 - L_CURLY@5..6 "{" - KEY@6..9 - WORD@6..9 "foo" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_multiple_keys.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_multiple_keys.txt.snap deleted file mode 100644 index e4d49e796e..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_multiple_keys.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt ---- -ROOT@0..15 - PREAMBLE@0..15 - CITATION@0..15 - COMMAND_NAME@0..5 "\\cite" - CURLY_GROUP_WORD_LIST@5..15 - L_CURLY@5..6 "{" - KEY@6..9 - WORD@6..9 "foo" - COMMA@9..10 "," - WHITESPACE@10..11 " " - KEY@11..14 - WORD@11..14 "bar" - R_CURLY@14..15 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote.txt.snap deleted file mode 100644 index 654b97dfd9..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_prenote.txt ---- -ROOT@0..15 - PREAMBLE@0..15 - CITATION@0..15 - COMMAND_NAME@0..5 "\\cite" - BRACK_GROUP@5..10 - L_BRACK@5..6 "[" - TEXT@6..9 - WORD@6..9 "foo" - R_BRACK@9..10 "]" - CURLY_GROUP_WORD_LIST@10..15 - L_CURLY@10..11 "{" - KEY@11..14 - WORD@11..14 "bar" - R_CURLY@14..15 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote_postnote.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote_postnote.txt.snap deleted file mode 100644 index ca83218dfb..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_prenote_postnote.txt.snap +++ /dev/null @@ -1,25 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt ---- -ROOT@0..20 - PREAMBLE@0..20 - CITATION@0..20 - COMMAND_NAME@0..5 "\\cite" - BRACK_GROUP@5..10 - L_BRACK@5..6 "[" - TEXT@6..9 - WORD@6..9 "foo" - R_BRACK@9..10 "]" - BRACK_GROUP@10..15 - L_BRACK@10..11 "[" - TEXT@11..14 - WORD@11..14 "bar" - R_BRACK@14..15 "]" - CURLY_GROUP_WORD_LIST@15..20 - L_CURLY@15..16 "{" - KEY@16..19 - WORD@16..19 "baz" - R_CURLY@19..20 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_redundant_comma.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_redundant_comma.txt.snap deleted file mode 100644 index 015abf7011..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_redundant_comma.txt.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt ---- -ROOT@0..12 - PREAMBLE@0..12 - CITATION@0..12 - COMMAND_NAME@0..5 "\\cite" - CURLY_GROUP_WORD_LIST@5..12 - L_CURLY@5..6 "{" - COMMA@6..7 "," - KEY@7..10 - WORD@7..10 "foo" - COMMA@10..11 "," - R_CURLY@11..12 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_simple.txt.snap deleted file mode 100644 index 99cc891d2b..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_simple.txt ---- -ROOT@0..10 - PREAMBLE@0..10 - CITATION@0..10 - COMMAND_NAME@0..5 "\\cite" - CURLY_GROUP_WORD_LIST@5..10 - L_CURLY@5..6 "{" - KEY@6..9 - WORD@6..9 "foo" - R_CURLY@9..10 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_star.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_star.txt.snap deleted file mode 100644 index 4b66a7e7d9..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@citation__citation_star.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/citation/citation_star.txt ---- -ROOT@0..10 - PREAMBLE@0..10 - CITATION@0..10 - COMMAND_NAME@0..7 "\\nocite" - CURLY_GROUP_WORD_LIST@7..10 - L_CURLY@7..8 "{" - KEY@8..9 - WORD@8..9 "*" - R_CURLY@9..10 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_definition_simple.txt.snap deleted file mode 100644 index d38951b148..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_definition_simple.txt.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/color/color_definition_simple.txt ---- -ROOT@0..33 - PREAMBLE@0..33 - COLOR_DEFINITION@0..33 - COMMAND_NAME@0..12 "\\definecolor" - CURLY_GROUP_WORD@12..17 - L_CURLY@12..13 "{" - KEY@13..16 - WORD@13..16 "foo" - R_CURLY@16..17 "}" - CURLY_GROUP_WORD@17..22 - L_CURLY@17..18 "{" - KEY@18..21 - WORD@18..21 "rgb" - R_CURLY@21..22 "}" - CURLY_GROUP@22..33 - L_CURLY@22..23 "{" - TEXT@23..32 - WORD@23..26 "255" - COMMA@26..27 "," - WORD@27..30 "168" - COMMA@30..31 "," - WORD@31..32 "0" - R_CURLY@32..33 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_reference_simple.txt.snap deleted file mode 100644 index dbf153dc18..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_reference_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/color/color_reference_simple.txt ---- -ROOT@0..13 - PREAMBLE@0..13 - COLOR_REFERENCE@0..13 - COMMAND_NAME@0..6 "\\color" - CURLY_GROUP_WORD@6..13 - L_CURLY@6..7 "{" - KEY@7..12 - WORD@7..12 "black" - R_CURLY@12..13 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error1.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error1.txt.snap deleted file mode 100644 index 9e3317ac05..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error1.txt.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/color/color_set_definition_error1.txt ---- -ROOT@0..39 - PREAMBLE@0..39 - COLOR_SET_DEFINITION@0..39 - COMMAND_NAME@0..15 "\\definecolorset" - BRACK_GROUP_WORD@15..19 - L_BRACK@15..16 "[" - KEY@16..18 - WORD@16..18 "ty" - R_BRACK@18..19 "]" - CURLY_GROUP_WORD_LIST@19..29 - L_CURLY@19..20 "{" - KEY@20..23 - WORD@20..23 "rgb" - COMMA@23..24 "," - KEY@24..28 - WORD@24..28 "HTML" - R_CURLY@28..29 "}" - CURLY_GROUP_WORD@29..34 - L_CURLY@29..30 "{" - KEY@30..33 - WORD@30..33 "foo" - R_CURLY@33..34 "}" - CURLY_GROUP_WORD@34..39 - L_CURLY@34..35 "{" - KEY@35..38 - WORD@35..38 "bar" - R_CURLY@38..39 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error2.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error2.txt.snap deleted file mode 100644 index 04b75973e5..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error2.txt.snap +++ /dev/null @@ -1,23 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/color/color_set_definition_error2.txt ---- -ROOT@0..30 - PREAMBLE@0..30 - COLOR_SET_DEFINITION@0..30 - COMMAND_NAME@0..15 "\\definecolorset" - CURLY_GROUP_WORD_LIST@15..25 - L_CURLY@15..16 "{" - KEY@16..19 - WORD@16..19 "rgb" - COMMA@19..20 "," - KEY@20..24 - WORD@20..24 "HTML" - R_CURLY@24..25 "}" - CURLY_GROUP_WORD@25..30 - L_CURLY@25..26 "{" - KEY@26..29 - WORD@26..29 "foo" - R_CURLY@29..30 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error3.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error3.txt.snap deleted file mode 100644 index 1133778fbf..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error3.txt.snap +++ /dev/null @@ -1,18 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/color/color_set_definition_error3.txt ---- -ROOT@0..25 - PREAMBLE@0..25 - COLOR_SET_DEFINITION@0..25 - COMMAND_NAME@0..15 "\\definecolorset" - CURLY_GROUP_WORD_LIST@15..25 - L_CURLY@15..16 "{" - KEY@16..19 - WORD@16..19 "rgb" - COMMA@19..20 "," - KEY@20..24 - WORD@20..24 "HTML" - R_CURLY@24..25 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error4.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error4.txt.snap deleted file mode 100644 index 11d175d732..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_error4.txt.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/color/color_set_definition_error4.txt ---- -ROOT@0..15 - PREAMBLE@0..15 - COLOR_SET_DEFINITION@0..15 - COMMAND_NAME@0..15 "\\definecolorset" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_simple.txt.snap deleted file mode 100644 index 903a780989..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@color__color_set_definition_simple.txt.snap +++ /dev/null @@ -1,38 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/color/color_set_definition_simple.txt ---- -ROOT@0..44 - PREAMBLE@0..44 - COLOR_SET_DEFINITION@0..44 - COMMAND_NAME@0..15 "\\definecolorset" - BRACK_GROUP_WORD@15..19 - L_BRACK@15..16 "[" - KEY@16..18 - WORD@16..18 "ty" - R_BRACK@18..19 "]" - CURLY_GROUP_WORD_LIST@19..29 - L_CURLY@19..20 "{" - KEY@20..23 - WORD@20..23 "rgb" - COMMA@23..24 "," - KEY@24..28 - WORD@24..28 "HTML" - R_CURLY@28..29 "}" - CURLY_GROUP_WORD@29..34 - L_CURLY@29..30 "{" - KEY@30..33 - WORD@30..33 "foo" - R_CURLY@33..34 "}" - CURLY_GROUP_WORD@34..39 - L_CURLY@34..35 "{" - KEY@35..38 - WORD@35..38 "bar" - R_CURLY@38..39 "}" - CURLY_GROUP_WORD@39..44 - L_CURLY@39..40 "{" - KEY@40..43 - WORD@40..43 "baz" - R_CURLY@43..44 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_argc.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_argc.txt.snap deleted file mode 100644 index c4d51b8248..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_argc.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt ---- -ROOT@0..22 - PREAMBLE@0..22 - COMMAND_DEFINITION@0..22 - COMMAND_NAME@0..11 "\\newcommand" - CURLY_GROUP_COMMAND@11..17 - L_CURLY@11..12 "{" - COMMAND_NAME@12..16 "\\foo" - R_CURLY@16..17 "}" - CURLY_GROUP@17..22 - L_CURLY@17..18 "{" - TEXT@18..21 - WORD@18..21 "foo" - R_CURLY@21..22 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl.txt.snap deleted file mode 100644 index 4170bbb233..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl.txt.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt ---- -ROOT@0..17 - PREAMBLE@0..17 - COMMAND_DEFINITION@0..17 - COMMAND_NAME@0..11 "\\newcommand" - CURLY_GROUP_COMMAND@11..17 - L_CURLY@11..12 "{" - COMMAND_NAME@12..16 "\\foo" - R_CURLY@16..17 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl_error.txt.snap deleted file mode 100644 index 8a3bd36895..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_no_impl_error.txt.snap +++ /dev/null @@ -1,13 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt ---- -ROOT@0..16 - PREAMBLE@0..16 - COMMAND_DEFINITION@0..16 - COMMAND_NAME@0..11 "\\newcommand" - CURLY_GROUP_COMMAND@11..16 - L_CURLY@11..12 "{" - COMMAND_NAME@12..16 "\\foo" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_optional.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_optional.txt.snap deleted file mode 100644 index ff11be61d4..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_optional.txt.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt ---- -ROOT@0..29 - PREAMBLE@0..29 - COMMAND_DEFINITION@0..29 - COMMAND_NAME@0..11 "\\newcommand" - CURLY_GROUP_COMMAND@11..17 - L_CURLY@11..12 "{" - COMMAND_NAME@12..16 "\\foo" - R_CURLY@16..17 "}" - BRACK_GROUP_WORD@17..20 - L_BRACK@17..18 "[" - KEY@18..19 - WORD@18..19 "1" - R_BRACK@19..20 "]" - BRACK_GROUP@20..25 - L_BRACK@20..21 "[" - TEXT@21..24 - WORD@21..24 "def" - R_BRACK@24..25 "]" - CURLY_GROUP@25..29 - L_CURLY@25..26 "{" - TEXT@26..28 - WORD@26..28 "#1" - R_CURLY@28..29 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_simple.txt.snap deleted file mode 100644 index 1d5fb28686..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_simple.txt.snap +++ /dev/null @@ -1,25 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt ---- -ROOT@0..23 - PREAMBLE@0..23 - COMMAND_DEFINITION@0..19 - COMMAND_NAME@0..11 "\\newcommand" - BRACK_GROUP_WORD@11..14 - L_BRACK@11..12 "[" - KEY@12..13 - WORD@12..13 "1" - R_BRACK@13..14 "]" - CURLY_GROUP@14..19 - L_CURLY@14..15 "{" - GENERIC_COMMAND@15..18 - COMMAND_NAME@15..18 "\\id" - R_CURLY@18..19 "}" - CURLY_GROUP@19..23 - L_CURLY@19..20 "{" - TEXT@20..22 - WORD@20..22 "#1" - R_CURLY@22..23 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_with_begin.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_with_begin.txt.snap deleted file mode 100644 index 3e58111e6b..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__command_definition_with_begin.txt.snap +++ /dev/null @@ -1,39 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt ---- -ROOT@0..80 - PREAMBLE@0..80 - COMMAND_DEFINITION@0..80 - COMMAND_NAME@0..11 "\\newcommand" - CURLY_GROUP_COMMAND@11..35 - L_CURLY@11..12 "{" - COMMAND_NAME@12..34 "\\CVSubHeadingListStart" - R_CURLY@34..35 "}" - CURLY_GROUP@35..80 - L_CURLY@35..36 "{" - BEGIN@36..79 - COMMAND_NAME@36..42 "\\begin" - CURLY_GROUP_WORD@42..51 - L_CURLY@42..43 "{" - KEY@43..50 - WORD@43..50 "itemize" - R_CURLY@50..51 "}" - BRACK_GROUP@51..79 - L_BRACK@51..52 "[" - TEXT@52..62 - WORD@52..62 "leftmargin" - EQUALITY_SIGN@62..63 "=" - TEXT@63..75 - WORD@63..68 "0.5cm" - COMMA@68..69 "," - WHITESPACE@69..70 " " - WORD@70..75 "label" - EQUALITY_SIGN@75..76 "=" - CURLY_GROUP@76..78 - L_CURLY@76..77 "{" - R_CURLY@77..78 "}" - R_BRACK@78..79 "]" - R_CURLY@79..80 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_no_impl.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_no_impl.txt.snap deleted file mode 100644 index ea401584af..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_no_impl.txt.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt ---- -ROOT@0..26 - PREAMBLE@0..26 - MATH_OPERATOR@0..26 - COMMAND_NAME@0..20 "\\DeclareMathOperator" - CURLY_GROUP_COMMAND@20..26 - L_CURLY@20..21 "{" - COMMAND_NAME@21..25 "\\foo" - R_CURLY@25..26 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_simple.txt.snap deleted file mode 100644 index 2833943059..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@command_definition__math_operator_simple.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt ---- -ROOT@0..31 - PREAMBLE@0..31 - MATH_OPERATOR@0..31 - COMMAND_NAME@0..20 "\\DeclareMathOperator" - CURLY_GROUP_COMMAND@20..26 - L_CURLY@20..21 "{" - COMMAND_NAME@21..25 "\\foo" - R_CURLY@25..26 "}" - CURLY_GROUP@26..31 - L_CURLY@26..27 "{" - TEXT@27..30 - WORD@27..30 "foo" - R_CURLY@30..31 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_asymptote.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_asymptote.txt.snap deleted file mode 100644 index 48f11f6285..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_asymptote.txt.snap +++ /dev/null @@ -1,41 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/environment/environment_asymptote.txt ---- -ROOT@0..50 - PREAMBLE@0..50 - ENVIRONMENT@0..50 - BEGIN@0..16 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..16 - L_CURLY@6..7 "{" - KEY@7..10 - WORD@7..10 "asy" - R_CURLY@10..11 "}" - LINE_BREAK@11..12 "\n" - WHITESPACE@12..16 " " - TEXT@16..22 - WORD@16..22 "printf" - MIXED_GROUP@22..39 - L_PAREN@22..23 "(" - TEXT@23..35 - WORD@23..29 "\"Hello" - WHITESPACE@29..30 " " - WORD@30..35 "World" - GENERIC_COMMAND@35..37 - COMMAND_NAME@35..37 "\\n" - TEXT@37..38 - WORD@37..38 "\"" - R_PAREN@38..39 ")" - TEXT@39..41 - WORD@39..40 ";" - LINE_BREAK@40..41 "\n" - END@41..50 - COMMAND_NAME@41..45 "\\end" - CURLY_GROUP_WORD@45..50 - L_CURLY@45..46 "{" - KEY@46..49 - WORD@46..49 "asy" - R_CURLY@49..50 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition.txt.snap deleted file mode 100644 index 2403d60ef1..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition.txt.snap +++ /dev/null @@ -1,40 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/environment/environment_definition.txt ---- -ROOT@0..47 - PREAMBLE@0..47 - ENVIRONMENT_DEFINITION@0..47 - COMMAND_NAME@0..15 "\\newenvironment" - CURLY_GROUP_WORD@15..20 - L_CURLY@15..16 "{" - KEY@16..19 - WORD@16..19 "bar" - R_CURLY@19..20 "}" - BRACK_GROUP_WORD@20..23 - L_BRACK@20..21 "[" - KEY@21..22 - WORD@21..22 "1" - R_BRACK@22..23 "]" - CURLY_GROUP@23..36 - L_CURLY@23..24 "{" - GENERIC_COMMAND@24..35 - COMMAND_NAME@24..30 "\\begin" - CURLY_GROUP@30..35 - L_CURLY@30..31 "{" - TEXT@31..34 - WORD@31..34 "foo" - R_CURLY@34..35 "}" - R_CURLY@35..36 "}" - CURLY_GROUP@36..47 - L_CURLY@36..37 "{" - GENERIC_COMMAND@37..46 - COMMAND_NAME@37..41 "\\end" - CURLY_GROUP@41..46 - L_CURLY@41..42 "{" - TEXT@42..45 - WORD@42..45 "foo" - R_CURLY@45..46 "}" - R_CURLY@46..47 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition_optional_arg.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition_optional_arg.txt.snap deleted file mode 100644 index ae0fbd931a..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_definition_optional_arg.txt.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt ---- -ROOT@0..44 - PREAMBLE@0..44 - ENVIRONMENT_DEFINITION@0..44 - COMMAND_NAME@0..15 "\\newenvironment" - CURLY_GROUP_WORD@15..20 - L_CURLY@15..16 "{" - KEY@16..19 - WORD@16..19 "foo" - R_CURLY@19..20 "}" - BRACK_GROUP_WORD@20..23 - L_BRACK@20..21 "[" - KEY@21..22 - WORD@21..22 "1" - R_BRACK@22..23 "]" - BRACK_GROUP@23..32 - L_BRACK@23..24 "[" - TEXT@24..31 - WORD@24..31 "default" - R_BRACK@31..32 "]" - CURLY_GROUP@32..39 - L_CURLY@32..33 "{" - TEXT@33..38 - WORD@33..38 "begin" - R_CURLY@38..39 "}" - CURLY_GROUP@39..44 - L_CURLY@39..40 "{" - TEXT@40..43 - WORD@40..43 "end" - R_CURLY@43..44 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested.txt.snap deleted file mode 100644 index b4e1d6a458..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested.txt.snap +++ /dev/null @@ -1,41 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/environment/environment_nested.txt ---- -ROOT@0..43 - PREAMBLE@0..43 - ENVIRONMENT@0..43 - BEGIN@0..12 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..12 - L_CURLY@6..7 "{" - KEY@7..10 - WORD@7..10 "foo" - R_CURLY@10..11 "}" - WHITESPACE@11..12 " " - ENVIRONMENT@12..34 - BEGIN@12..24 - COMMAND_NAME@12..18 "\\begin" - CURLY_GROUP_WORD@18..24 - L_CURLY@18..19 "{" - KEY@19..22 - WORD@19..22 "qux" - R_CURLY@22..23 "}" - WHITESPACE@23..24 " " - END@24..34 - COMMAND_NAME@24..28 "\\end" - CURLY_GROUP_WORD@28..34 - L_CURLY@28..29 "{" - KEY@29..32 - WORD@29..32 "baz" - R_CURLY@32..33 "}" - WHITESPACE@33..34 " " - END@34..43 - COMMAND_NAME@34..38 "\\end" - CURLY_GROUP_WORD@38..43 - L_CURLY@38..39 "{" - KEY@39..42 - WORD@39..42 "bar" - R_CURLY@42..43 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested_missing_braces.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested_missing_braces.txt.snap deleted file mode 100644 index 5d67bfe665..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_nested_missing_braces.txt.snap +++ /dev/null @@ -1,42 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt ---- -ROOT@0..52 - PREAMBLE@0..52 - ENVIRONMENT@0..52 - BEGIN@0..11 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..11 - L_CURLY@6..7 "{" - KEY@7..11 - WORD@7..10 "foo" - WHITESPACE@10..11 " " - ENVIRONMENT@11..44 - BEGIN@11..34 - COMMAND_NAME@11..17 "\\begin" - CURLY_GROUP_WORD@17..34 - L_CURLY@17..18 "{" - KEY@18..34 - WORD@18..21 "qux" - WHITESPACE@21..22 " " - WORD@22..27 "Hello" - WHITESPACE@27..28 " " - WORD@28..33 "World" - WHITESPACE@33..34 " " - END@34..44 - COMMAND_NAME@34..38 "\\end" - CURLY_GROUP_WORD@38..44 - L_CURLY@38..39 "{" - KEY@39..42 - WORD@39..42 "baz" - R_CURLY@42..43 "}" - WHITESPACE@43..44 " " - END@44..52 - COMMAND_NAME@44..48 "\\end" - CURLY_GROUP_WORD@48..52 - L_CURLY@48..49 "{" - KEY@49..52 - WORD@49..52 "bar" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap deleted file mode 100644 index f74b68fdf7..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@environment__environment_simple.txt.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/environment/environment_simple.txt ---- -ROOT@0..33 - PREAMBLE@0..33 - ENVIRONMENT@0..33 - BEGIN@0..12 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..12 - L_CURLY@6..7 "{" - KEY@7..10 - WORD@7..10 "foo" - R_CURLY@10..11 "}" - WHITESPACE@11..12 " " - TEXT@12..24 - WORD@12..17 "Hello" - WHITESPACE@17..18 " " - WORD@18..23 "World" - WHITESPACE@23..24 " " - END@24..33 - COMMAND_NAME@24..28 "\\end" - CURLY_GROUP_WORD@28..33 - L_CURLY@28..29 "{" - KEY@29..32 - WORD@29..32 "bar" - R_CURLY@32..33 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation.txt.snap deleted file mode 100644 index 71fff49984..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation.txt.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/equation.txt ---- -ROOT@0..13 - PREAMBLE@0..13 - EQUATION@0..13 - COMMAND_NAME@0..2 "\\[" - WHITESPACE@2..3 " " - TEXT@3..11 - WORD@3..6 "foo" - WHITESPACE@6..7 " " - WORD@7..10 "bar" - WHITESPACE@10..11 " " - COMMAND_NAME@11..13 "\\]" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation_missing_begin.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation_missing_begin.txt.snap deleted file mode 100644 index 1590fbed73..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@equation_missing_begin.txt.snap +++ /dev/null @@ -1,32 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/equation_missing_begin.txt ---- -ROOT@0..28 - PREAMBLE@0..28 - ENVIRONMENT@0..28 - BEGIN@0..10 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..10 - L_CURLY@6..7 "{" - KEY@7..8 - WORD@7..8 "a" - R_CURLY@8..9 "}" - WHITESPACE@9..10 " " - TEXT@10..18 - WORD@10..13 "foo" - WHITESPACE@13..14 " " - WORD@14..17 "bar" - WHITESPACE@17..18 " " - GENERIC_COMMAND@18..21 - COMMAND_NAME@18..20 "\\]" - WHITESPACE@20..21 " " - END@21..28 - COMMAND_NAME@21..25 "\\end" - CURLY_GROUP_WORD@25..28 - L_CURLY@25..26 "{" - KEY@26..27 - WORD@26..27 "b" - R_CURLY@27..28 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_args.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_args.txt.snap deleted file mode 100644 index 9057d8f024..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_args.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/generic_command_args.txt ---- -ROOT@0..14 - PREAMBLE@0..14 - GENERIC_COMMAND@0..14 - COMMAND_NAME@0..4 "\\foo" - CURLY_GROUP@4..9 - L_CURLY@4..5 "{" - TEXT@5..8 - WORD@5..8 "bar" - R_CURLY@8..9 "}" - MIXED_GROUP@9..14 - L_BRACK@9..10 "[" - TEXT@10..13 - WORD@10..13 "qux" - R_BRACK@13..14 "]" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_empty.txt.snap deleted file mode 100644 index ee8f593395..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_empty.txt.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/generic_command_empty.txt ---- -ROOT@0..4 - PREAMBLE@0..4 - GENERIC_COMMAND@0..4 - COMMAND_NAME@0..4 "\\foo" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_escape.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_escape.txt.snap deleted file mode 100644 index f973be4b12..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@generic_command_escape.txt.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/generic_command_escape.txt ---- -ROOT@0..2 - PREAMBLE@0..2 - GENERIC_COMMAND@0..2 - COMMAND_NAME@0..2 "\\#" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_declaration.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_declaration.txt.snap deleted file mode 100644 index fb24afbf24..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_declaration.txt.snap +++ /dev/null @@ -1,50 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/acronym_declaration.txt ---- -ROOT@0..64 - PREAMBLE@0..64 - ACRONYM_DECLARATION@0..64 - COMMAND_NAME@0..15 "\\DeclareAcronym" - CURLY_GROUP_WORD@15..19 - L_CURLY@15..16 "{" - KEY@16..18 - WORD@16..18 "eg" - R_CURLY@18..19 "}" - CURLY_GROUP_KEY_VALUE@19..64 - L_CURLY@19..20 "{" - KEY_VALUE_BODY@20..63 - KEY_VALUE_PAIR@20..31 - KEY@20..26 - WORD@20..25 "short" - WHITESPACE@25..26 " " - EQUALITY_SIGN@26..27 "=" - WHITESPACE@27..28 " " - VALUE@28..31 - TEXT@28..31 - WORD@28..31 "e.g" - COMMA@31..32 "," - KEY_VALUE_PAIR@32..50 - KEY@32..37 - WORD@32..36 "long" - WHITESPACE@36..37 " " - EQUALITY_SIGN@37..38 "=" - WHITESPACE@38..39 " " - VALUE@39..50 - TEXT@39..50 - WORD@39..42 "for" - WHITESPACE@42..43 " " - WORD@43..50 "example" - COMMA@50..51 "," - KEY_VALUE_PAIR@51..63 - KEY@51..55 - WORD@51..54 "tag" - WHITESPACE@54..55 " " - EQUALITY_SIGN@55..56 "=" - WHITESPACE@56..57 " " - VALUE@57..63 - TEXT@57..63 - WORD@57..63 "abbrev" - R_CURLY@63..64 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_options.txt.snap deleted file mode 100644 index 8dd76abbf3..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_options.txt.snap +++ /dev/null @@ -1,47 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt ---- -ROOT@0..76 - PREAMBLE@0..76 - ACRONYM_DEFINITION@0..76 - COMMAND_NAME@0..11 "\\newacronym" - BRACK_GROUP_KEY_VALUE@11..43 - L_BRACK@11..12 "[" - KEY_VALUE_BODY@12..42 - KEY_VALUE_PAIR@12..42 - KEY@12..22 - WORD@12..22 "longplural" - EQUALITY_SIGN@22..23 "=" - VALUE@23..42 - CURLY_GROUP@23..42 - L_CURLY@23..24 "{" - TEXT@24..41 - WORD@24..30 "Frames" - WHITESPACE@30..31 " " - WORD@31..34 "per" - WHITESPACE@34..35 " " - WORD@35..41 "Second" - R_CURLY@41..42 "}" - R_BRACK@42..43 "]" - CURLY_GROUP_WORD@43..53 - L_CURLY@43..44 "{" - KEY@44..52 - WORD@44..52 "fpsLabel" - R_CURLY@52..53 "}" - CURLY_GROUP@53..58 - L_CURLY@53..54 "{" - TEXT@54..57 - WORD@54..57 "FPS" - R_CURLY@57..58 "}" - CURLY_GROUP@58..76 - L_CURLY@58..59 "{" - TEXT@59..75 - WORD@59..64 "Frame" - WHITESPACE@64..65 " " - WORD@65..68 "per" - WHITESPACE@68..69 " " - WORD@69..75 "Second" - R_CURLY@75..76 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_simple.txt.snap deleted file mode 100644 index cf630440f8..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_definition_simple.txt.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt ---- -ROOT@0..44 - PREAMBLE@0..44 - ACRONYM_DEFINITION@0..44 - COMMAND_NAME@0..11 "\\newacronym" - CURLY_GROUP_WORD@11..21 - L_CURLY@11..12 "{" - KEY@12..20 - WORD@12..20 "fpsLabel" - R_CURLY@20..21 "}" - CURLY_GROUP@21..26 - L_CURLY@21..22 "{" - TEXT@22..25 - WORD@22..25 "FPS" - R_CURLY@25..26 "}" - CURLY_GROUP@26..44 - L_CURLY@26..27 "{" - TEXT@27..43 - WORD@27..32 "Frame" - WHITESPACE@32..33 " " - WORD@33..36 "per" - WHITESPACE@36..37 " " - WORD@37..43 "Second" - R_CURLY@43..44 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_package.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_package.txt.snap deleted file mode 100644 index 721dfa5bf9..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_package.txt.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/acronym_package.txt ---- -ROOT@0..35 - PREAMBLE@0..35 - ACRONYM_DEFINITION@0..35 - COMMAND_NAME@0..5 "\\acro" - CURLY_GROUP_WORD@5..10 - L_CURLY@5..6 "{" - KEY@6..9 - WORD@6..9 "fps" - R_CURLY@9..10 "}" - BRACK_GROUP@10..15 - L_BRACK@10..11 "[" - TEXT@11..14 - WORD@11..14 "FPS" - R_BRACK@14..15 "]" - CURLY_GROUP@15..35 - L_CURLY@15..16 "{" - TEXT@16..33 - WORD@16..22 "Frames" - WHITESPACE@22..23 " " - WORD@23..26 "per" - WHITESPACE@26..27 " " - WORD@27..33 "Second" - R_CURLY@33..34 "}" - LINE_BREAK@34..35 "\n" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_options.txt.snap deleted file mode 100644 index 6e470c3add..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_options.txt.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt ---- -ROOT@0..32 - PREAMBLE@0..32 - ACRONYM_REFERENCE@0..32 - COMMAND_NAME@0..9 "\\acrshort" - BRACK_GROUP_KEY_VALUE@9..22 - L_BRACK@9..10 "[" - KEY_VALUE_BODY@10..21 - KEY_VALUE_PAIR@10..17 - KEY@10..13 - WORD@10..13 "foo" - EQUALITY_SIGN@13..14 "=" - VALUE@14..17 - TEXT@14..17 - WORD@14..17 "bar" - COMMA@17..18 "," - KEY_VALUE_PAIR@18..21 - KEY@18..21 - WORD@18..21 "baz" - R_BRACK@21..22 "]" - CURLY_GROUP_WORD@22..32 - L_CURLY@22..23 "{" - KEY@23..31 - WORD@23..31 "fpsLabel" - R_CURLY@31..32 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_simple.txt.snap deleted file mode 100644 index 5b83135522..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__acronym_reference_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt ---- -ROOT@0..19 - PREAMBLE@0..19 - ACRONYM_REFERENCE@0..19 - COMMAND_NAME@0..9 "\\acrshort" - CURLY_GROUP_WORD@9..19 - L_CURLY@9..10 "{" - KEY@10..18 - WORD@10..18 "fpsLabel" - R_CURLY@18..19 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_definition_simple.txt.snap deleted file mode 100644 index 52037c6bbf..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_definition_simple.txt.snap +++ /dev/null @@ -1,34 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt ---- -ROOT@0..39 - PREAMBLE@0..39 - GLOSSARY_ENTRY_DEFINITION@0..39 - COMMAND_NAME@0..17 "\\newglossaryentry" - CURLY_GROUP_WORD@17..22 - L_CURLY@17..18 "{" - KEY@18..21 - WORD@18..21 "foo" - R_CURLY@21..22 "}" - CURLY_GROUP_KEY_VALUE@22..39 - L_CURLY@22..23 "{" - KEY_VALUE_BODY@23..38 - KEY_VALUE_PAIR@23..32 - KEY@23..27 - WORD@23..26 "bar" - WHITESPACE@26..27 " " - EQUALITY_SIGN@27..28 "=" - WHITESPACE@28..29 " " - VALUE@29..32 - TEXT@29..32 - WORD@29..32 "baz" - COMMA@32..33 "," - WHITESPACE@33..34 " " - KEY_VALUE_PAIR@34..37 - KEY@34..37 - WORD@34..37 "qux" - COMMA@37..38 "," - R_CURLY@38..39 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_options.txt.snap deleted file mode 100644 index 07d1d8cdfa..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_options.txt.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt ---- -ROOT@0..25 - PREAMBLE@0..25 - GLOSSARY_ENTRY_REFERENCE@0..25 - COMMAND_NAME@0..4 "\\gls" - BRACK_GROUP_KEY_VALUE@4..20 - L_BRACK@4..5 "[" - KEY_VALUE_BODY@5..19 - KEY_VALUE_PAIR@5..14 - KEY@5..9 - WORD@5..8 "foo" - WHITESPACE@8..9 " " - EQUALITY_SIGN@9..10 "=" - WHITESPACE@10..11 " " - VALUE@11..14 - TEXT@11..14 - WORD@11..14 "bar" - COMMA@14..15 "," - WHITESPACE@15..16 " " - KEY_VALUE_PAIR@16..19 - KEY@16..19 - WORD@16..19 "qux" - R_BRACK@19..20 "]" - CURLY_GROUP_WORD@20..25 - L_CURLY@20..21 "{" - KEY@21..24 - WORD@21..24 "baz" - R_CURLY@24..25 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_simple.txt.snap deleted file mode 100644 index db50fc3298..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@glossary__glossary_entry_reference_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt ---- -ROOT@0..9 - PREAMBLE@0..9 - GLOSSARY_ENTRY_REFERENCE@0..9 - COMMAND_NAME@0..4 "\\gls" - CURLY_GROUP_WORD@4..9 - L_CURLY@4..5 "{" - KEY@5..8 - WORD@5..8 "foo" - R_CURLY@8..9 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path.txt.snap deleted file mode 100644 index 80bf58d783..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path.txt.snap +++ /dev/null @@ -1,18 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/graphics_path.txt ---- -ROOT@0..28 - PREAMBLE@0..28 - GRAPHICS_PATH@0..28 - COMMAND_NAME@0..13 "\\graphicspath" - CURLY_GROUP@13..28 - L_CURLY@13..14 "{" - CURLY_GROUP_WORD@14..27 - L_CURLY@14..15 "{" - KEY@15..26 - WORD@15..26 "../figures/" - R_CURLY@26..27 "}" - R_CURLY@27..28 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_command.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_command.txt.snap deleted file mode 100644 index c8521d2de7..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_command.txt.snap +++ /dev/null @@ -1,23 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/graphics_path_command.txt ---- -ROOT@0..32 - PREAMBLE@0..32 - GRAPHICS_PATH@0..32 - COMMAND_NAME@0..13 "\\graphicspath" - CURLY_GROUP@13..32 - L_CURLY@13..14 "{" - CURLY_GROUP_WORD@14..31 - L_CURLY@14..15 "{" - KEY@15..30 - COMMAND_NAME@15..22 "\\subfix" - CURLY_GROUP_WORD@22..30 - L_CURLY@22..23 "{" - KEY@23..29 - WORD@23..29 "./img/" - R_CURLY@29..30 "}" - R_CURLY@30..31 "}" - R_CURLY@31..32 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_options.txt.snap deleted file mode 100644 index 4ca53d2fe2..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@graphics_path_options.txt.snap +++ /dev/null @@ -1,23 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/graphics_path_options.txt ---- -ROOT@0..33 - PREAMBLE@0..33 - GRAPHICS_PATH@0..13 - COMMAND_NAME@0..13 "\\graphicspath" - MIXED_GROUP@13..18 - L_BRACK@13..14 "[" - TEXT@14..17 - WORD@14..17 "foo" - R_BRACK@17..18 "]" - CURLY_GROUP@18..33 - L_CURLY@18..19 "{" - CURLY_GROUP@19..32 - L_CURLY@19..20 "{" - TEXT@20..31 - WORD@20..31 "../figures/" - R_CURLY@31..32 "}" - R_CURLY@32..33 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_missing_end.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_missing_end.txt.snap deleted file mode 100644 index 902cacfdd5..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_missing_end.txt.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/group/curly_group_missing_end.txt ---- -ROOT@0..12 - PREAMBLE@0..12 - CURLY_GROUP@0..12 - L_CURLY@0..1 "{" - TEXT@1..12 - WORD@1..6 "hello" - WHITESPACE@6..7 " " - WORD@7..12 "world" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_simple.txt.snap deleted file mode 100644 index 4f1b8473be..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__curly_group_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/group/curly_group_simple.txt ---- -ROOT@0..13 - PREAMBLE@0..13 - CURLY_GROUP@0..13 - L_CURLY@0..1 "{" - TEXT@1..12 - WORD@1..6 "hello" - WHITESPACE@6..7 " " - WORD@7..12 "world" - R_CURLY@12..13 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__equation_missing_end.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__equation_missing_end.txt.snap deleted file mode 100644 index dfddb20f85..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__equation_missing_end.txt.snap +++ /dev/null @@ -1,32 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/group/equation_missing_end.txt ---- -ROOT@0..28 - PREAMBLE@0..28 - ENVIRONMENT@0..28 - BEGIN@0..10 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..10 - L_CURLY@6..7 "{" - KEY@7..8 - WORD@7..8 "a" - R_CURLY@8..9 "}" - WHITESPACE@9..10 " " - EQUATION@10..21 - COMMAND_NAME@10..12 "\\[" - WHITESPACE@12..13 " " - TEXT@13..21 - WORD@13..16 "foo" - WHITESPACE@16..17 " " - WORD@17..20 "bar" - WHITESPACE@20..21 " " - END@21..28 - COMMAND_NAME@21..25 "\\end" - CURLY_GROUP_WORD@25..28 - L_CURLY@25..26 "{" - KEY@26..27 - WORD@26..27 "b" - R_CURLY@27..28 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__escaped_brackets.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__escaped_brackets.txt.snap deleted file mode 100644 index d9e1636cf8..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__escaped_brackets.txt.snap +++ /dev/null @@ -1,18 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/group/escaped_brackets.txt ---- -ROOT@0..6 - PREAMBLE@0..6 - CURLY_GROUP@0..3 - L_CURLY@0..1 "{" - MIXED_GROUP@1..2 - L_BRACK@1..2 "[" - R_CURLY@2..3 "}" - CURLY_GROUP@3..6 - L_CURLY@3..4 "{" - ERROR@4..5 - R_BRACK@4..5 "]" - R_CURLY@5..6 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_braces.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_braces.txt.snap deleted file mode 100644 index 922776c8c5..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_braces.txt.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/group/unmatched_braces.txt ---- -ROOT@0..2 - PREAMBLE@0..2 - ERROR@0..1 - R_CURLY@0..1 "}" - CURLY_GROUP@1..2 - L_CURLY@1..2 "{" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets.txt.snap deleted file mode 100644 index 12e455b505..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets.txt.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/group/unmatched_brackets.txt ---- -ROOT@0..2 - PREAMBLE@0..2 - ERROR@0..1 - R_BRACK@0..1 "]" - MIXED_GROUP@1..2 - L_BRACK@1..2 "[" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets_with_group.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets_with_group.txt.snap deleted file mode 100644 index 765c7e4a8d..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@group__unmatched_brackets_with_group.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt ---- -ROOT@0..4 - PREAMBLE@0..4 - CURLY_GROUP@0..4 - L_CURLY@0..1 "{" - ERROR@1..2 - R_BRACK@1..2 "]" - MIXED_GROUP@2..3 - L_BRACK@2..3 "[" - R_CURLY@3..4 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@hello_world.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@hello_world.txt.snap deleted file mode 100644 index 27bca69893..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@hello_world.txt.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/hello_world.txt ---- -ROOT@0..12 - PREAMBLE@0..12 - TEXT@0..12 - WORD@0..5 "Hello" - WHITESPACE@5..6 " " - WORD@6..12 "World!" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_options.txt.snap deleted file mode 100644 index e3e34a68f6..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_options.txt.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/biblatex_include_options.txt ---- -ROOT@0..42 - PREAMBLE@0..42 - BIBLATEX_INCLUDE@0..42 - COMMAND_NAME@0..15 "\\addbibresource" - BRACK_GROUP_KEY_VALUE@15..29 - L_BRACK@15..16 "[" - KEY_VALUE_BODY@16..28 - KEY_VALUE_PAIR@16..23 - KEY@16..19 - WORD@16..19 "foo" - EQUALITY_SIGN@19..20 "=" - VALUE@20..23 - TEXT@20..23 - WORD@20..23 "bar" - COMMA@23..24 "," - WHITESPACE@24..25 " " - KEY_VALUE_PAIR@25..28 - KEY@25..28 - WORD@25..28 "baz" - R_BRACK@28..29 "]" - CURLY_GROUP_WORD_LIST@29..42 - L_CURLY@29..30 "{" - KEY@30..41 - WORD@30..41 "foo/bar.bib" - R_CURLY@41..42 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_simple.txt.snap deleted file mode 100644 index b4b4193dba..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__biblatex_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/biblatex_include_simple.txt ---- -ROOT@0..28 - PREAMBLE@0..28 - BIBLATEX_INCLUDE@0..28 - COMMAND_NAME@0..15 "\\addbibresource" - CURLY_GROUP_WORD_LIST@15..28 - L_CURLY@15..16 "{" - KEY@16..27 - WORD@16..27 "foo/bar.bib" - R_CURLY@27..28 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__bibtex_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__bibtex_include_simple.txt.snap deleted file mode 100644 index c39c9e2c68..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__bibtex_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/bibtex_include_simple.txt ---- -ROOT@0..22 - PREAMBLE@0..22 - BIBTEX_INCLUDE@0..22 - COMMAND_NAME@0..13 "\\bibliography" - CURLY_GROUP_WORD_LIST@13..22 - L_CURLY@13..14 "{" - KEY@14..21 - WORD@14..21 "foo/bar" - R_CURLY@21..22 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_empty.txt.snap deleted file mode 100644 index a8d5a7077f..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_empty.txt.snap +++ /dev/null @@ -1,13 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/class_include_empty.txt ---- -ROOT@0..16 - PREAMBLE@0..16 - CLASS_INCLUDE@0..16 - COMMAND_NAME@0..14 "\\documentclass" - CURLY_GROUP_WORD_LIST@14..16 - L_CURLY@14..15 "{" - R_CURLY@15..16 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_options.txt.snap deleted file mode 100644 index 4cf4473cfa..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_options.txt.snap +++ /dev/null @@ -1,38 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/class_include_options.txt ---- -ROOT@0..44 - PREAMBLE@0..44 - CLASS_INCLUDE@0..44 - COMMAND_NAME@0..14 "\\documentclass" - BRACK_GROUP_KEY_VALUE@14..35 - L_BRACK@14..15 "[" - KEY_VALUE_BODY@15..34 - KEY_VALUE_PAIR@15..24 - KEY@15..19 - WORD@15..18 "foo" - WHITESPACE@18..19 " " - EQUALITY_SIGN@19..20 "=" - WHITESPACE@20..21 " " - VALUE@21..24 - TEXT@21..24 - WORD@21..24 "bar" - COMMA@24..25 "," - WHITESPACE@25..26 " " - KEY_VALUE_PAIR@26..29 - KEY@26..29 - WORD@26..29 "baz" - COMMA@29..30 "," - WHITESPACE@30..31 " " - KEY_VALUE_PAIR@31..34 - KEY@31..34 - WORD@31..34 "qux" - R_BRACK@34..35 "]" - CURLY_GROUP_WORD_LIST@35..44 - L_CURLY@35..36 "{" - KEY@36..43 - WORD@36..43 "article" - R_CURLY@43..44 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_simple.txt.snap deleted file mode 100644 index a6be2ec496..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__class_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/class_include_simple.txt ---- -ROOT@0..23 - PREAMBLE@0..23 - CLASS_INCLUDE@0..23 - COMMAND_NAME@0..14 "\\documentclass" - CURLY_GROUP_WORD_LIST@14..23 - L_CURLY@14..15 "{" - KEY@15..22 - WORD@15..22 "article" - R_CURLY@22..23 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_command.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_command.txt.snap deleted file mode 100644 index 6f9f736d1f..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_command.txt.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/graphics_include_command.txt ---- -ROOT@0..52 - PREAMBLE@0..52 - GRAPHICS_INCLUDE@0..52 - COMMAND_NAME@0..16 "\\includegraphics" - BRACK_GROUP_KEY_VALUE@16..37 - L_BRACK@16..17 "[" - KEY_VALUE_BODY@17..36 - KEY_VALUE_PAIR@17..36 - KEY@17..22 - WORD@17..22 "width" - EQUALITY_SIGN@22..23 "=" - VALUE@23..36 - TEXT@23..26 - WORD@23..26 "0.5" - GENERIC_COMMAND@26..36 - COMMAND_NAME@26..36 "\\textwidth" - R_BRACK@36..37 "]" - CURLY_GROUP_WORD_LIST@37..52 - L_CURLY@37..38 "{" - KEY@38..51 - COMMAND_NAME@38..42 "\\foo" - WORD@42..43 "." - COMMAND_NAME@43..47 "\\bar" - WORD@47..51 ".pdf" - R_CURLY@51..52 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_complicated_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_complicated_options.txt.snap deleted file mode 100644 index 4b422dcd64..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_complicated_options.txt.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt ---- -ROOT@0..39 - PREAMBLE@0..39 - GRAPHICS_INCLUDE@0..39 - COMMAND_NAME@0..16 "\\includegraphics" - BRACK_GROUP_KEY_VALUE@16..37 - L_BRACK@16..17 "[" - KEY_VALUE_BODY@17..36 - KEY_VALUE_PAIR@17..36 - KEY@17..22 - WORD@17..22 "width" - EQUALITY_SIGN@22..23 "=" - VALUE@23..36 - TEXT@23..26 - WORD@23..26 "0.5" - GENERIC_COMMAND@26..36 - COMMAND_NAME@26..36 "\\textwidth" - R_BRACK@36..37 "]" - CURLY_GROUP_WORD_LIST@37..39 - L_CURLY@37..38 "{" - R_CURLY@38..39 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_options.txt.snap deleted file mode 100644 index 656d68c1ef..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_options.txt.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/graphics_include_options.txt ---- -ROOT@0..39 - PREAMBLE@0..39 - GRAPHICS_INCLUDE@0..39 - COMMAND_NAME@0..16 "\\includegraphics" - BRACK_GROUP_KEY_VALUE@16..26 - L_BRACK@16..17 "[" - KEY_VALUE_BODY@17..25 - KEY_VALUE_PAIR@17..25 - KEY@17..22 - WORD@17..22 "scale" - EQUALITY_SIGN@22..23 "=" - VALUE@23..25 - TEXT@23..25 - WORD@23..25 ".5" - R_BRACK@25..26 "]" - CURLY_GROUP_WORD_LIST@26..39 - L_CURLY@26..27 "{" - KEY@27..38 - WORD@27..38 "foo/bar.pdf" - R_CURLY@38..39 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_simple.txt.snap deleted file mode 100644 index 39cb634ec2..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__graphics_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/graphics_include_simple.txt ---- -ROOT@0..29 - PREAMBLE@0..29 - GRAPHICS_INCLUDE@0..29 - COMMAND_NAME@0..16 "\\includegraphics" - CURLY_GROUP_WORD_LIST@16..29 - L_CURLY@16..17 "{" - KEY@17..28 - WORD@17..28 "foo/bar.pdf" - R_CURLY@28..29 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_incomplete.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_incomplete.txt.snap deleted file mode 100644 index 645133e65c..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_incomplete.txt.snap +++ /dev/null @@ -1,14 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/import_incomplete.txt ---- -ROOT@0..11 - PREAMBLE@0..11 - IMPORT@0..11 - COMMAND_NAME@0..7 "\\import" - CURLY_GROUP_WORD@7..11 - L_CURLY@7..8 "{" - KEY@8..11 - WORD@8..11 "foo" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_simple.txt.snap deleted file mode 100644 index b383dc435e..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__import_simple.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/import_simple.txt ---- -ROOT@0..17 - PREAMBLE@0..17 - IMPORT@0..17 - COMMAND_NAME@0..7 "\\import" - CURLY_GROUP_WORD@7..12 - L_CURLY@7..8 "{" - KEY@8..11 - WORD@8..11 "foo" - R_CURLY@11..12 "}" - CURLY_GROUP_WORD@12..17 - L_CURLY@12..13 "{" - KEY@13..16 - WORD@13..16 "bar" - R_CURLY@16..17 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_options.txt.snap deleted file mode 100644 index 2c2c176fdb..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_options.txt.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/inkscape_include_options.txt ---- -ROOT@0..30 - PREAMBLE@0..30 - SVG_INCLUDE@0..30 - COMMAND_NAME@0..11 "\\includesvg" - BRACK_GROUP_KEY_VALUE@11..21 - L_BRACK@11..12 "[" - KEY_VALUE_BODY@12..20 - KEY_VALUE_PAIR@12..20 - KEY@12..17 - WORD@12..17 "scale" - EQUALITY_SIGN@17..18 "=" - VALUE@18..20 - TEXT@18..20 - WORD@18..20 ".5" - R_BRACK@20..21 "]" - CURLY_GROUP_WORD_LIST@21..30 - L_CURLY@21..22 "{" - KEY@22..29 - WORD@22..29 "foo/bar" - R_CURLY@29..30 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_simple.txt.snap deleted file mode 100644 index 62cb7486db..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__inkscape_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/inkscape_include_simple.txt ---- -ROOT@0..20 - PREAMBLE@0..20 - SVG_INCLUDE@0..20 - COMMAND_NAME@0..11 "\\includesvg" - CURLY_GROUP_WORD_LIST@11..20 - L_CURLY@11..12 "{" - KEY@12..19 - WORD@12..19 "foo/bar" - R_CURLY@19..20 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_equality_sign.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_equality_sign.txt.snap deleted file mode 100644 index 2fff7b1e8f..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_equality_sign.txt.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt ---- -ROOT@0..17 - PREAMBLE@0..17 - LATEX_INCLUDE@0..17 - COMMAND_NAME@0..8 "\\include" - CURLY_GROUP_WORD_LIST@8..17 - L_CURLY@8..9 "{" - KEY@9..16 - WORD@9..12 "foo" - EQUALITY_SIGN@12..13 "=" - WORD@13..16 "bar" - R_CURLY@16..17 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_simple.txt.snap deleted file mode 100644 index 4841296f02..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/latex_include_simple.txt ---- -ROOT@0..17 - PREAMBLE@0..17 - LATEX_INCLUDE@0..17 - COMMAND_NAME@0..8 "\\include" - CURLY_GROUP_WORD_LIST@8..17 - L_CURLY@8..9 "{" - KEY@9..16 - WORD@9..16 "foo/bar" - R_CURLY@16..17 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_input_path_brackets.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_input_path_brackets.txt.snap deleted file mode 100644 index 7f13f6b247..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__latex_input_path_brackets.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt ---- -ROOT@0..20 - PREAMBLE@0..20 - LATEX_INCLUDE@0..20 - COMMAND_NAME@0..6 "\\input" - CURLY_GROUP_WORD_LIST@6..20 - L_CURLY@6..7 "{" - KEY@7..19 - WORD@7..10 "foo" - L_BRACK@10..11 "[" - WORD@11..14 "bar" - R_BRACK@14..15 "]" - WORD@15..19 ".tex" - R_CURLY@19..20 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_empty.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_empty.txt.snap deleted file mode 100644 index 086f2b0c75..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_empty.txt.snap +++ /dev/null @@ -1,13 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/package_include_empty.txt ---- -ROOT@0..13 - PREAMBLE@0..13 - PACKAGE_INCLUDE@0..13 - COMMAND_NAME@0..11 "\\usepackage" - CURLY_GROUP_WORD_LIST@11..13 - L_CURLY@11..12 "{" - R_CURLY@12..13 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_multiple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_multiple.txt.snap deleted file mode 100644 index d42a4a76fe..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_multiple.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/package_include_multiple.txt ---- -ROOT@0..28 - PREAMBLE@0..28 - PACKAGE_INCLUDE@0..28 - COMMAND_NAME@0..11 "\\usepackage" - CURLY_GROUP_WORD_LIST@11..28 - L_CURLY@11..12 "{" - KEY@12..19 - WORD@12..19 "amsmath" - COMMA@19..20 "," - WHITESPACE@20..21 " " - KEY@21..27 - WORD@21..27 "lipsum" - R_CURLY@27..28 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_options.txt.snap deleted file mode 100644 index 8ecffa39d5..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_options.txt.snap +++ /dev/null @@ -1,38 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/package_include_options.txt ---- -ROOT@0..41 - PREAMBLE@0..41 - PACKAGE_INCLUDE@0..41 - COMMAND_NAME@0..11 "\\usepackage" - BRACK_GROUP_KEY_VALUE@11..32 - L_BRACK@11..12 "[" - KEY_VALUE_BODY@12..31 - KEY_VALUE_PAIR@12..21 - KEY@12..16 - WORD@12..15 "foo" - WHITESPACE@15..16 " " - EQUALITY_SIGN@16..17 "=" - WHITESPACE@17..18 " " - VALUE@18..21 - TEXT@18..21 - WORD@18..21 "bar" - COMMA@21..22 "," - WHITESPACE@22..23 " " - KEY_VALUE_PAIR@23..26 - KEY@23..26 - WORD@23..26 "baz" - COMMA@26..27 "," - WHITESPACE@27..28 " " - KEY_VALUE_PAIR@28..31 - KEY@28..31 - WORD@28..31 "qux" - R_BRACK@31..32 "]" - CURLY_GROUP_WORD_LIST@32..41 - L_CURLY@32..33 "{" - KEY@33..40 - WORD@33..40 "amsmath" - R_CURLY@40..41 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_simple.txt.snap deleted file mode 100644 index 99304a8108..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__package_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/package_include_simple.txt ---- -ROOT@0..20 - PREAMBLE@0..20 - PACKAGE_INCLUDE@0..20 - COMMAND_NAME@0..11 "\\usepackage" - CURLY_GROUP_WORD_LIST@11..20 - L_CURLY@11..12 "{" - KEY@12..19 - WORD@12..19 "amsmath" - R_CURLY@19..20 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__pgf_library_import_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__pgf_library_import_simple.txt.snap deleted file mode 100644 index c55ce16744..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__pgf_library_import_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt ---- -ROOT@0..19 - PREAMBLE@0..19 - TIKZ_LIBRARY_IMPORT@0..19 - COMMAND_NAME@0..14 "\\usepgflibrary" - CURLY_GROUP_WORD_LIST@14..19 - L_CURLY@14..15 "{" - KEY@15..18 - WORD@15..18 "foo" - R_CURLY@18..19 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_options.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_options.txt.snap deleted file mode 100644 index 7e67683606..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_options.txt.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/svg_include_options.txt ---- -ROOT@0..34 - PREAMBLE@0..34 - SVG_INCLUDE@0..34 - COMMAND_NAME@0..11 "\\includesvg" - BRACK_GROUP_KEY_VALUE@11..21 - L_BRACK@11..12 "[" - KEY_VALUE_BODY@12..20 - KEY_VALUE_PAIR@12..20 - KEY@12..17 - WORD@12..17 "scale" - EQUALITY_SIGN@17..18 "=" - VALUE@18..20 - TEXT@18..20 - WORD@18..20 ".5" - R_BRACK@20..21 "]" - CURLY_GROUP_WORD_LIST@21..34 - L_CURLY@21..22 "{" - KEY@22..33 - WORD@22..33 "foo/bar.svg" - R_CURLY@33..34 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_simple.txt.snap deleted file mode 100644 index f776f9c2bc..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__svg_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/svg_include_simple.txt ---- -ROOT@0..24 - PREAMBLE@0..24 - SVG_INCLUDE@0..24 - COMMAND_NAME@0..11 "\\includesvg" - CURLY_GROUP_WORD_LIST@11..24 - L_CURLY@11..12 "{" - KEY@12..23 - WORD@12..23 "foo/bar.svg" - R_CURLY@23..24 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__tikz_library_import_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__tikz_library_import_simple.txt.snap deleted file mode 100644 index fff99d5ad1..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__tikz_library_import_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt ---- -ROOT@0..20 - PREAMBLE@0..20 - TIKZ_LIBRARY_IMPORT@0..20 - COMMAND_NAME@0..15 "\\usetikzlibrary" - CURLY_GROUP_WORD_LIST@15..20 - L_CURLY@15..16 "{" - KEY@16..19 - WORD@16..19 "foo" - R_CURLY@19..20 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__verbatim_include_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__verbatim_include_simple.txt.snap deleted file mode 100644 index 28eda149c4..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@include__verbatim_include_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/include/verbatim_include_simple.txt ---- -ROOT@0..27 - PREAMBLE@0..27 - VERBATIM_INCLUDE@0..27 - COMMAND_NAME@0..14 "\\verbatiminput" - CURLY_GROUP_WORD_LIST@14..27 - L_CURLY@14..15 "{" - KEY@15..26 - WORD@15..26 "foo/bar.txt" - R_CURLY@26..27 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline.txt.snap deleted file mode 100644 index b5696044a5..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline.txt.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/inline.txt ---- -ROOT@0..19 - PREAMBLE@0..19 - FORMULA@0..19 - DOLLAR@0..1 "$" - TEXT@1..3 - WORD@1..2 "x" - WHITESPACE@2..3 " " - GENERIC_COMMAND@3..18 - COMMAND_NAME@3..6 "\\in" - WHITESPACE@6..7 " " - MIXED_GROUP@7..18 - L_BRACK@7..8 "[" - TEXT@8..11 - WORD@8..9 "0" - COMMA@9..10 "," - WHITESPACE@10..11 " " - GENERIC_COMMAND@11..17 - COMMAND_NAME@11..17 "\\infty" - R_PAREN@17..18 ")" - DOLLAR@18..19 "$" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline_double_dollar.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline_double_dollar.txt.snap deleted file mode 100644 index 6d614db919..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@inline_double_dollar.txt.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/inline_double_dollar.txt ---- -ROOT@0..21 - PREAMBLE@0..21 - FORMULA@0..21 - DOLLAR@0..2 "$$" - TEXT@2..4 - WORD@2..3 "x" - WHITESPACE@3..4 " " - GENERIC_COMMAND@4..19 - COMMAND_NAME@4..7 "\\in" - WHITESPACE@7..8 " " - MIXED_GROUP@8..19 - L_BRACK@8..9 "[" - TEXT@9..12 - WORD@9..10 "0" - COMMA@10..11 "," - WHITESPACE@11..12 " " - GENERIC_COMMAND@12..18 - COMMAND_NAME@12..18 "\\infty" - R_PAREN@18..19 ")" - DOLLAR@19..21 "$$" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_568.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_568.txt.snap deleted file mode 100644 index f71507c2ac..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_568.txt.snap +++ /dev/null @@ -1,28 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_568.txt ---- -ROOT@0..51 - PREAMBLE@0..51 - LATEX_INCLUDE@0..36 - COMMAND_NAME@0..6 "\\input" - CURLY_GROUP_WORD_LIST@6..36 - L_CURLY@6..7 "{" - WORD@7..8 "|" - KEY@8..34 - WORD@8..15 "ipython" - WHITESPACE@15..16 " " - WORD@16..34 "scripts/test.ipynb" - R_CURLY@34..35 "}" - LINE_BREAK@35..36 "\n" - LABEL_DEFINITION@36..51 - COMMAND_NAME@36..42 "\\label" - CURLY_GROUP_WORD@42..51 - L_CURLY@42..43 "{" - KEY@43..50 - WORD@43..48 "fig:x" - EQUALITY_SIGN@48..49 "=" - WORD@49..50 "2" - R_CURLY@50..51 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_745.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_745.txt.snap deleted file mode 100644 index 4165481528..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_745.txt.snap +++ /dev/null @@ -1,131 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_745.txt ---- -ROOT@0..271 - PREAMBLE@0..271 - CLASS_INCLUDE@0..24 - COMMAND_NAME@0..14 "\\documentclass" - CURLY_GROUP_WORD_LIST@14..24 - L_CURLY@14..15 "{" - KEY@15..22 - WORD@15..22 "article" - R_CURLY@22..23 "}" - LINE_BREAK@23..24 "\n" - PACKAGE_INCLUDE@24..50 - COMMAND_NAME@24..35 "\\usepackage" - CURLY_GROUP_WORD_LIST@35..50 - L_CURLY@35..36 "{" - KEY@36..46 - WORD@36..46 "tabularray" - R_CURLY@46..47 "}" - WHITESPACE@47..48 " " - LINE_BREAK@48..50 "\n\n" - GENERIC_COMMAND@50..64 - COMMAND_NAME@50..63 "\\ExplSyntaxOn" - LINE_BREAK@63..64 "\n" - GENERIC_COMMAND@64..223 - COMMAND_NAME@64..87 "\\NewDocumentEnvironment" - CURLY_GROUP@87..96 - L_CURLY@87..88 "{" - TEXT@88..95 - WORD@88..95 "exptblr" - R_CURLY@95..96 "}" - CURLY_GROUP@96..107 - L_CURLY@96..97 "{" - TEXT@97..98 - WORD@97..98 "O" - CURLY_GROUP@98..100 - L_CURLY@98..99 "{" - R_CURLY@99..100 "}" - TEXT@100..101 - WORD@100..101 "m" - R_CURLY@101..102 "}" - LINE_BREAK@102..103 "\n" - WHITESPACE@103..107 " " - CURLY_GROUP@107..200 - L_CURLY@107..108 "{" - LINE_BREAK@108..109 "\n" - WHITESPACE@109..113 " " - GENERIC_COMMAND@113..194 - COMMAND_NAME@113..119 "\\use:x" - LINE_BREAK@119..120 "\n" - WHITESPACE@120..124 " " - CURLY_GROUP@124..194 - L_CURLY@124..125 "{" - LINE_BREAK@125..126 "\n" - WHITESPACE@126..130 " " - GENERIC_COMMAND@130..141 - COMMAND_NAME@130..140 "\\exp_not:N" - WHITESPACE@140..141 " " - ENVIRONMENT@141..188 - BEGIN@141..179 - COMMAND_NAME@141..147 "\\begin" - CURLY_GROUP_WORD@147..158 - L_CURLY@147..148 "{" - KEY@148..152 - WORD@148..152 "tblr" - R_CURLY@152..153 "}" - LINE_BREAK@153..154 "\n" - WHITESPACE@154..158 " " - BRACK_GROUP@158..179 - L_BRACK@158..159 "[" - GENERIC_COMMAND@159..173 - COMMAND_NAME@159..169 "\\exp_not:n" - CURLY_GROUP@169..173 - L_CURLY@169..170 "{" - TEXT@170..172 - WORD@170..172 "#1" - R_CURLY@172..173 "}" - R_BRACK@173..174 "]" - LINE_BREAK@174..175 "\n" - WHITESPACE@175..179 " " - CURLY_GROUP@179..188 - L_CURLY@179..180 "{" - TEXT@180..182 - WORD@180..182 "#2" - R_CURLY@182..183 "}" - LINE_BREAK@183..184 "\n" - WHITESPACE@184..188 " " - R_CURLY@188..189 "}" - LINE_BREAK@189..190 "\n" - WHITESPACE@190..194 " " - R_CURLY@194..195 "}" - LINE_BREAK@195..196 "\n" - WHITESPACE@196..200 " " - CURLY_GROUP@200..223 - L_CURLY@200..201 "{" - LINE_BREAK@201..202 "\n" - WHITESPACE@202..206 " " - GENERIC_COMMAND@206..221 - COMMAND_NAME@206..210 "\\end" - CURLY_GROUP@210..221 - L_CURLY@210..211 "{" - TEXT@211..215 - WORD@211..215 "tblr" - R_CURLY@215..216 "}" - LINE_BREAK@216..217 "\n" - WHITESPACE@217..221 " " - R_CURLY@221..222 "}" - LINE_BREAK@222..223 "\n" - GENERIC_COMMAND@223..239 - COMMAND_NAME@223..237 "\\ExplSyntaxOff" - LINE_BREAK@237..239 "\n\n" - ENVIRONMENT@239..271 - BEGIN@239..257 - COMMAND_NAME@239..245 "\\begin" - CURLY_GROUP_WORD@245..257 - L_CURLY@245..246 "{" - KEY@246..254 - WORD@246..254 "document" - R_CURLY@254..255 "}" - LINE_BREAK@255..257 "\n\n" - END@257..271 - COMMAND_NAME@257..261 "\\end" - CURLY_GROUP_WORD@261..271 - L_CURLY@261..262 "{" - KEY@262..270 - WORD@262..270 "document" - R_CURLY@270..271 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_789.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_789.txt.snap deleted file mode 100644 index 9899e3c9ab..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_789.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_789.txt ---- -ROOT@0..19 - PREAMBLE@0..19 - GRAPHICS_PATH@0..19 - COMMAND_NAME@0..13 "\\graphicspath" - CURLY_GROUP_WORD@13..19 - L_CURLY@13..14 "{" - KEY@14..18 - WORD@14..18 "test" - R_CURLY@18..19 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_828.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_828.txt.snap deleted file mode 100644 index 059b957241..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_828.txt.snap +++ /dev/null @@ -1,22 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_828.txt ---- -ROOT@0..51 - PREAMBLE@0..51 - GENERIC_COMMAND@0..5 - COMMAND_NAME@0..5 "\\verb" - VERBATIM@5..6 "|" - VERBATIM@6..17 "<STATEMENT>" - VERBATIM@17..22 " " - VERBATIM@22..24 "if" - VERBATIM@24..25 "(" - VERBATIM@25..31 "<expr>" - VERBATIM@31..32 ")" - VERBATIM@32..33 "{" - VERBATIM@33..43 "<body>else" - VERBATIM@43..44 "{" - VERBATIM@44..50 "<body>" - VERBATIM@50..51 "|" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_853.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_853.txt.snap deleted file mode 100644 index dc8c3a3d2b..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_853.txt.snap +++ /dev/null @@ -1,62 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_853.txt ---- -ROOT@0..135 - PREAMBLE@0..135 - CLASS_INCLUDE@0..24 - COMMAND_NAME@0..14 "\\documentclass" - CURLY_GROUP_WORD_LIST@14..24 - L_CURLY@14..15 "{" - KEY@15..22 - WORD@15..22 "minimal" - R_CURLY@22..23 "}" - LINE_BREAK@23..24 "\n" - ENVIRONMENT@24..135 - BEGIN@24..41 - COMMAND_NAME@24..30 "\\begin" - CURLY_GROUP_WORD@30..41 - L_CURLY@30..31 "{" - KEY@31..39 - WORD@31..39 "document" - R_CURLY@39..40 "}" - LINE_BREAK@40..41 "\n" - TEXT@41..75 - WORD@41..45 "This" - WHITESPACE@45..46 " " - WORD@46..48 "is" - WHITESPACE@48..49 " " - WORD@49..51 "an" - WHITESPACE@51..52 " " - WORD@52..56 "asdf" - WHITESPACE@56..57 " " - WORD@57..66 "undefined" - WHITESPACE@66..67 " " - WORD@67..74 "command" - LINE_BREAK@74..75 "\n" - BLOCK_COMMENT@75..120 - COMMAND_NAME@75..83 "\\iffalse" - LINE_BREAK@83..84 "\n" - WHITESPACE@84..86 " " - BLOCK_COMMENT@86..97 - COMMAND_NAME@86..94 "\\iffalse" - COMMAND_NAME@94..97 "\\fi" - LINE_BREAK@97..98 "\n" - WHITESPACE@98..100 " " - COMMAND_NAME@100..104 "\\end" - L_CURLY@104..105 "{" - WORD@105..114 "enumerate" - R_CURLY@114..115 "}" - WHITESPACE@115..116 " " - LINE_BREAK@116..117 "\n" - COMMAND_NAME@117..120 "\\fi" - LINE_BREAK@120..121 "\n" - END@121..135 - COMMAND_NAME@121..125 "\\end" - CURLY_GROUP_WORD@125..135 - L_CURLY@125..126 "{" - KEY@126..134 - WORD@126..134 "document" - R_CURLY@134..135 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_857.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_857.txt.snap deleted file mode 100644 index b0edef17a8..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_857.txt.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_857.txt ---- -ROOT@0..55 - PREAMBLE@0..55 - COMMAND_DEFINITION@0..11 - COMMAND_NAME@0..11 "\\newcommand" - GENERIC_COMMAND@11..17 - COMMAND_NAME@11..14 "\\ö" - CURLY_GROUP@14..17 - L_CURLY@14..15 "{" - R_CURLY@15..16 "}" - LINE_BREAK@16..17 "\n" - COMMAND_DEFINITION@17..38 - COMMAND_NAME@17..28 "\\newcommand" - CURLY_GROUP_COMMAND@28..35 - L_CURLY@28..29 "{" - COMMAND_NAME@29..34 "\\öö" - R_CURLY@34..35 "}" - CURLY_GROUP@35..38 - L_CURLY@35..36 "{" - R_CURLY@36..37 "}" - LINE_BREAK@37..38 "\n" - COMMAND_DEFINITION@38..49 - COMMAND_NAME@38..49 "\\newcommand" - GENERIC_COMMAND@49..55 - COMMAND_NAME@49..53 "\\123" - CURLY_GROUP@53..55 - L_CURLY@53..54 "{" - R_CURLY@54..55 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap deleted file mode 100644 index 8555f2bc48..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_874.txt.snap +++ /dev/null @@ -1,28 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_874.txt ---- -ROOT@0..37 - PREAMBLE@0..37 - GRAPHICS_INCLUDE@0..37 - COMMAND_NAME@0..16 "\\includegraphics" - BRACK_GROUP_KEY_VALUE@16..27 - L_BRACK@16..17 "[" - KEY_VALUE_BODY@17..26 - KEY_VALUE_PAIR@17..26 - KEY@17..22 - WORD@17..22 "scale" - EQUALITY_SIGN@22..23 "=" - VALUE@23..26 - TEXT@23..26 - WORD@23..26 "0.2" - R_BRACK@26..27 "]" - CURLY_GROUP_WORD_LIST@27..37 - L_CURLY@27..28 "{" - KEY@28..36 - WORD@28..31 "7.4" - R_PAREN@31..32 ")" - WORD@32..36 ".jpg" - R_CURLY@36..37 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_919.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_919.txt.snap deleted file mode 100644 index bf5d207fca..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_919.txt.snap +++ /dev/null @@ -1,61 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_919.txt ---- -ROOT@0..217 - PREAMBLE@0..217 - CLASS_INCLUDE@0..25 - COMMAND_NAME@0..14 "\\documentclass" - CURLY_GROUP_WORD_LIST@14..25 - L_CURLY@14..15 "{" - KEY@15..22 - WORD@15..22 "article" - R_CURLY@22..23 "}" - LINE_BREAK@23..25 "\n\n" - PACKAGE_INCLUDE@25..173 - COMMAND_NAME@25..36 "\\usepackage" - CURLY_GROUP_WORD_LIST@36..173 - L_CURLY@36..37 "{" - LINE_BREAK@37..38 "\n" - WHITESPACE@38..42 " " - KEY@42..48 - WORD@42..48 "lipsum" - COMMA@48..49 "," - WHITESPACE@49..50 " " - COMMENT@50..70 "% provides blindtext" - LINE_BREAK@70..71 "\n" - WHITESPACE@71..75 " " - KEY@75..83 - WORD@75..83 "booktabs" - COMMA@83..84 "," - WHITESPACE@84..85 " " - COMMENT@85..110 "% better rules for ta ..." - LINE_BREAK@110..111 "\n" - WHITESPACE@111..115 " " - COMMENT@115..169 "%xcolor % easily defi ..." - LINE_BREAK@169..170 "\n" - R_CURLY@170..171 "}" - LINE_BREAK@171..173 "\n\n" - ENVIRONMENT@173..217 - BEGIN@173..194 - COMMAND_NAME@173..179 "\\begin" - CURLY_GROUP_WORD@179..194 - L_CURLY@179..180 "{" - KEY@180..188 - WORD@180..188 "document" - R_CURLY@188..189 "}" - LINE_BREAK@189..190 "\n" - WHITESPACE@190..194 " " - GENERIC_COMMAND@194..202 - COMMAND_NAME@194..201 "\\lipsum" - LINE_BREAK@201..202 "\n" - END@202..217 - COMMAND_NAME@202..206 "\\end" - CURLY_GROUP_WORD@206..217 - L_CURLY@206..207 "{" - KEY@207..215 - WORD@207..215 "document" - R_CURLY@215..216 "}" - LINE_BREAK@216..217 "\n" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_931.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_931.txt.snap deleted file mode 100644 index 2fef140d95..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@issue_931.txt.snap +++ /dev/null @@ -1,16 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/issue_931.txt ---- -ROOT@0..31 - PREAMBLE@0..31 - BIBTEX_INCLUDE@0..31 - COMMAND_NAME@0..13 "\\bibliography" - CURLY_GROUP_WORD_LIST@13..31 - L_CURLY@13..14 "{" - KEY@14..30 - DOLLAR@14..15 "$" - WORD@15..30 "HOME/Literature" - R_CURLY@30..31 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_line_break.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_line_break.txt.snap deleted file mode 100644 index 5eaed87fee..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_line_break.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_definition_line_break.txt ---- -ROOT@0..19 - PREAMBLE@0..19 - LABEL_DEFINITION@0..13 - COMMAND_NAME@0..6 "\\label" - CURLY_GROUP_WORD@6..13 - L_CURLY@6..7 "{" - KEY@7..13 - WORD@7..12 "hello" - LINE_BREAK@12..13 "\n" - TEXT@13..18 - WORD@13..18 "world" - ERROR@18..19 - R_CURLY@18..19 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_simple.txt.snap deleted file mode 100644 index cb693002b5..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_definition_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_definition_simple.txt ---- -ROOT@0..11 - PREAMBLE@0..11 - LABEL_DEFINITION@0..11 - COMMAND_NAME@0..6 "\\label" - CURLY_GROUP_WORD@6..11 - L_CURLY@6..7 "{" - KEY@7..10 - WORD@7..10 "foo" - R_CURLY@10..11 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_number.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_number.txt.snap deleted file mode 100644 index 6e9613313a..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_number.txt.snap +++ /dev/null @@ -1,23 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_number.txt ---- -ROOT@0..21 - PREAMBLE@0..21 - LABEL_NUMBER@0..21 - COMMAND_NAME@0..9 "\\newlabel" - CURLY_GROUP_WORD@9..14 - L_CURLY@9..10 "{" - KEY@10..13 - WORD@10..13 "foo" - R_CURLY@13..14 "}" - CURLY_GROUP@14..21 - L_CURLY@14..15 "{" - CURLY_GROUP@15..20 - L_CURLY@15..16 "{" - TEXT@16..19 - WORD@16..19 "1.1" - R_CURLY@19..20 "}" - R_CURLY@20..21 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_equation.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_equation.txt.snap deleted file mode 100644 index b631f40b60..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_equation.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_reference_equation.txt ---- -ROOT@0..11 - PREAMBLE@0..11 - LABEL_REFERENCE@0..11 - COMMAND_NAME@0..6 "\\eqref" - CURLY_GROUP_WORD_LIST@6..11 - L_CURLY@6..7 "{" - KEY@7..10 - WORD@7..10 "foo" - R_CURLY@10..11 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_incomplete.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_incomplete.txt.snap deleted file mode 100644 index 054da6d258..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_incomplete.txt.snap +++ /dev/null @@ -1,32 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_reference_incomplete.txt ---- -ROOT@0..47 - PREAMBLE@0..47 - TEXT@0..9 - WORD@0..8 "Equation" - WHITESPACE@8..9 " " - LABEL_REFERENCE@9..24 - COMMAND_NAME@9..15 "\\eqref" - CURLY_GROUP_WORD_LIST@15..24 - L_CURLY@15..16 "{" - KEY@16..24 - WORD@16..18 "eq" - WHITESPACE@18..19 " " - WORD@19..21 "is" - WHITESPACE@21..22 " " - WORD@22..23 "a" - WHITESPACE@23..24 " " - GENERIC_COMMAND@24..38 - COMMAND_NAME@24..29 "\\emph" - CURLY_GROUP@29..38 - L_CURLY@29..30 "{" - TEXT@30..36 - WORD@30..36 "useful" - R_CURLY@36..37 "}" - WHITESPACE@37..38 " " - TEXT@38..47 - WORD@38..47 "identity." - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_multiple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_multiple.txt.snap deleted file mode 100644 index 5a228e8972..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_multiple.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_reference_multiple.txt ---- -ROOT@0..14 - PREAMBLE@0..14 - LABEL_REFERENCE@0..14 - COMMAND_NAME@0..4 "\\ref" - CURLY_GROUP_WORD_LIST@4..14 - L_CURLY@4..5 "{" - KEY@5..8 - WORD@5..8 "foo" - COMMA@8..9 "," - WHITESPACE@9..10 " " - KEY@10..13 - WORD@10..13 "bar" - R_CURLY@13..14 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_error.txt.snap deleted file mode 100644 index a4b25eeb09..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_error.txt.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_reference_range_error.txt ---- -ROOT@0..19 - PREAMBLE@0..19 - LABEL_REFERENCE_RANGE@0..19 - COMMAND_NAME@0..10 "\\crefrange" - CURLY_GROUP_WORD@10..14 - L_CURLY@10..11 "{" - KEY@11..14 - WORD@11..14 "foo" - CURLY_GROUP_WORD@14..19 - L_CURLY@14..15 "{" - KEY@15..18 - WORD@15..18 "bar" - R_CURLY@18..19 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_incomplete.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_incomplete.txt.snap deleted file mode 100644 index e18cd6ed97..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_incomplete.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt ---- -ROOT@0..15 - PREAMBLE@0..15 - LABEL_REFERENCE_RANGE@0..15 - COMMAND_NAME@0..10 "\\crefrange" - CURLY_GROUP_WORD@10..15 - L_CURLY@10..11 "{" - KEY@11..14 - WORD@11..14 "foo" - R_CURLY@14..15 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_simple.txt.snap deleted file mode 100644 index 335309607c..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_range_simple.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_reference_range_simple.txt ---- -ROOT@0..20 - PREAMBLE@0..20 - LABEL_REFERENCE_RANGE@0..20 - COMMAND_NAME@0..10 "\\crefrange" - CURLY_GROUP_WORD@10..15 - L_CURLY@10..11 "{" - KEY@11..14 - WORD@11..14 "foo" - R_CURLY@14..15 "}" - CURLY_GROUP_WORD@15..20 - L_CURLY@15..16 "{" - KEY@16..19 - WORD@16..19 "bar" - R_CURLY@19..20 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_simple.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_simple.txt.snap deleted file mode 100644 index ba3d08b472..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@label__label_reference_simple.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/label/label_reference_simple.txt ---- -ROOT@0..9 - PREAMBLE@0..9 - LABEL_REFERENCE@0..9 - COMMAND_NAME@0..4 "\\ref" - CURLY_GROUP_WORD_LIST@4..9 - L_CURLY@4..5 "{" - KEY@5..8 - WORD@5..8 "foo" - R_CURLY@8..9 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter.txt.snap deleted file mode 100644 index aa038efb86..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter.txt.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/parameter.txt ---- -ROOT@0..2 - PREAMBLE@0..2 - TEXT@0..2 - WORD@0..2 "#1" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter_error.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter_error.txt.snap deleted file mode 100644 index 7f9a744622..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@parameter_error.txt.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/parameter_error.txt ---- -ROOT@0..1 - PREAMBLE@0..1 - TEXT@0..1 - WORD@0..1 "#" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__paragraphs.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__paragraphs.txt.snap deleted file mode 100644 index 7c3e7fae57..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__paragraphs.txt.snap +++ /dev/null @@ -1,67 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/structure/paragraphs.txt ---- -ROOT@0..134 - PREAMBLE@0..134 - SECTION@0..105 - COMMAND_NAME@0..8 "\\section" - CURLY_GROUP@8..20 - L_CURLY@8..9 "{" - TEXT@9..18 - WORD@9..16 "Section" - WHITESPACE@16..17 " " - WORD@17..18 "1" - R_CURLY@18..19 "}" - LINE_BREAK@19..20 "\n" - TEXT@20..31 - WORD@20..27 "Section" - WHITESPACE@27..28 " " - WORD@28..29 "1" - LINE_BREAK@29..31 "\n\n" - PARAGRAPH@31..68 - COMMAND_NAME@31..41 "\\paragraph" - CURLY_GROUP@41..55 - L_CURLY@41..42 "{" - TEXT@42..53 - WORD@42..51 "Paragraph" - WHITESPACE@51..52 " " - WORD@52..53 "1" - R_CURLY@53..54 "}" - LINE_BREAK@54..55 "\n" - TEXT@55..68 - WORD@55..64 "Paragraph" - WHITESPACE@64..65 " " - WORD@65..66 "1" - LINE_BREAK@66..68 "\n\n" - PARAGRAPH@68..105 - COMMAND_NAME@68..78 "\\paragraph" - CURLY_GROUP@78..92 - L_CURLY@78..79 "{" - TEXT@79..90 - WORD@79..88 "Paragraph" - WHITESPACE@88..89 " " - WORD@89..90 "2" - R_CURLY@90..91 "}" - LINE_BREAK@91..92 "\n" - TEXT@92..105 - WORD@92..101 "Paragraph" - WHITESPACE@101..102 " " - WORD@102..103 "2" - LINE_BREAK@103..105 "\n\n" - SECTION@105..134 - COMMAND_NAME@105..113 "\\section" - CURLY_GROUP@113..125 - L_CURLY@113..114 "{" - TEXT@114..123 - WORD@114..121 "Section" - WHITESPACE@121..122 " " - WORD@122..123 "2" - R_CURLY@123..124 "}" - LINE_BREAK@124..125 "\n" - TEXT@125..134 - WORD@125..132 "Section" - WHITESPACE@132..133 " " - WORD@133..134 "2" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_enum_item.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_enum_item.txt.snap deleted file mode 100644 index 6045bdce2b..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_enum_item.txt.snap +++ /dev/null @@ -1,47 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/structure/structure_enum_item.txt ---- -ROOT@0..60 - PREAMBLE@0..60 - ENVIRONMENT@0..60 - BEGIN@0..18 - COMMAND_NAME@0..6 "\\begin" - CURLY_GROUP_WORD@6..18 - L_CURLY@6..7 "{" - KEY@7..16 - WORD@7..16 "enumerate" - R_CURLY@16..17 "}" - WHITESPACE@17..18 " " - ENUM_ITEM@18..26 - COMMAND_NAME@18..23 "\\item" - WHITESPACE@23..24 " " - TEXT@24..26 - WORD@24..25 "1" - WHITESPACE@25..26 " " - ENUM_ITEM@26..37 - COMMAND_NAME@26..31 "\\item" - BRACK_GROUP@31..35 - L_BRACK@31..32 "[" - TEXT@32..33 - WORD@32..33 "2" - R_BRACK@33..34 "]" - WHITESPACE@34..35 " " - TEXT@35..37 - WORD@35..36 "2" - WHITESPACE@36..37 " " - ENUM_ITEM@37..45 - COMMAND_NAME@37..42 "\\item" - WHITESPACE@42..43 " " - TEXT@43..45 - WORD@43..44 "3" - WHITESPACE@44..45 " " - END@45..60 - COMMAND_NAME@45..49 "\\end" - CURLY_GROUP_WORD@49..60 - L_CURLY@49..50 "{" - KEY@50..59 - WORD@50..59 "enumerate" - R_CURLY@59..60 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_invalid_nesting.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_invalid_nesting.txt.snap deleted file mode 100644 index df715917df..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_invalid_nesting.txt.snap +++ /dev/null @@ -1,23 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt ---- -ROOT@0..27 - PREAMBLE@0..27 - SECTION@0..14 - COMMAND_NAME@0..8 "\\section" - CURLY_GROUP@8..14 - L_CURLY@8..9 "{" - TEXT@9..12 - WORD@9..12 "Foo" - R_CURLY@12..13 "}" - WHITESPACE@13..14 " " - CHAPTER@14..27 - COMMAND_NAME@14..22 "\\chapter" - CURLY_GROUP@22..27 - L_CURLY@22..23 "{" - TEXT@23..26 - WORD@23..26 "Bar" - R_CURLY@26..27 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_nested.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_nested.txt.snap deleted file mode 100644 index d9dab436e7..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_nested.txt.snap +++ /dev/null @@ -1,57 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/structure/structure_nested.txt ---- -ROOT@0..90 - PREAMBLE@0..90 - PART@0..90 - COMMAND_NAME@0..5 "\\part" - CURLY_GROUP@5..8 - L_CURLY@5..6 "{" - TEXT@6..7 - WORD@6..7 "1" - R_CURLY@7..8 "}" - CHAPTER@8..90 - COMMAND_NAME@8..16 "\\chapter" - CURLY_GROUP@16..19 - L_CURLY@16..17 "{" - TEXT@17..18 - WORD@17..18 "2" - R_CURLY@18..19 "}" - SECTION@19..90 - COMMAND_NAME@19..27 "\\section" - CURLY_GROUP@27..30 - L_CURLY@27..28 "{" - TEXT@28..29 - WORD@28..29 "3" - R_CURLY@29..30 "}" - SUBSECTION@30..90 - COMMAND_NAME@30..41 "\\subsection" - CURLY_GROUP@41..44 - L_CURLY@41..42 "{" - TEXT@42..43 - WORD@42..43 "4" - R_CURLY@43..44 "}" - SUBSUBSECTION@44..90 - COMMAND_NAME@44..58 "\\subsubsection" - CURLY_GROUP@58..61 - L_CURLY@58..59 "{" - TEXT@59..60 - WORD@59..60 "5" - R_CURLY@60..61 "}" - PARAGRAPH@61..90 - COMMAND_NAME@61..71 "\\paragraph" - CURLY_GROUP@71..74 - L_CURLY@71..72 "{" - TEXT@72..73 - WORD@72..73 "6" - R_CURLY@73..74 "}" - SUBPARAGRAPH@74..90 - COMMAND_NAME@74..87 "\\subparagraph" - CURLY_GROUP@87..90 - L_CURLY@87..88 "{" - TEXT@88..89 - WORD@88..89 "7" - R_CURLY@89..90 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_siblings.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_siblings.txt.snap deleted file mode 100644 index 66040952f0..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@structure__structure_siblings.txt.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/structure/structure_siblings.txt ---- -ROOT@0..35 - PREAMBLE@0..35 - SECTION@0..18 - COMMAND_NAME@0..8 "\\section" - CURLY_GROUP@8..14 - L_CURLY@8..9 "{" - TEXT@9..12 - WORD@9..12 "Foo" - R_CURLY@12..13 "}" - WHITESPACE@13..14 " " - TEXT@14..18 - WORD@14..17 "Foo" - WHITESPACE@17..18 " " - SECTION@18..35 - COMMAND_NAME@18..26 "\\section" - CURLY_GROUP@26..32 - L_CURLY@26..27 "{" - TEXT@27..30 - WORD@27..30 "Bar" - R_CURLY@30..31 "}" - WHITESPACE@31..32 " " - TEXT@32..35 - WORD@32..35 "Bar" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_full.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_full.txt.snap deleted file mode 100644 index ce42bde1d3..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_full.txt.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt ---- -ROOT@0..31 - PREAMBLE@0..31 - THEOREM_DEFINITION_AMSTHM@0..31 - COMMAND_NAME@0..11 "\\newtheorem" - CURLY_GROUP_WORD@11..16 - L_CURLY@11..12 "{" - KEY@12..15 - WORD@12..15 "foo" - R_CURLY@15..16 "}" - BRACK_GROUP_WORD@16..21 - L_BRACK@16..17 "[" - KEY@17..20 - WORD@17..20 "bar" - R_BRACK@20..21 "]" - CURLY_GROUP@21..26 - L_CURLY@21..22 "{" - TEXT@22..25 - WORD@22..25 "Foo" - R_CURLY@25..26 "}" - BRACK_GROUP_WORD@26..31 - L_BRACK@26..27 "[" - KEY@27..30 - WORD@27..30 "baz" - R_BRACK@30..31 "]" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_counter.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_counter.txt.snap deleted file mode 100644 index c1e7ad5387..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_counter.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt ---- -ROOT@0..21 - PREAMBLE@0..21 - THEOREM_DEFINITION_AMSTHM@0..21 - COMMAND_NAME@0..11 "\\newtheorem" - CURLY_GROUP_WORD@11..16 - L_CURLY@11..12 "{" - KEY@12..15 - WORD@12..15 "foo" - R_CURLY@15..16 "}" - BRACK_GROUP_WORD@16..21 - L_BRACK@16..17 "[" - KEY@17..20 - WORD@17..20 "bar" - R_BRACK@20..21 "]" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description.txt.snap deleted file mode 100644 index 13c043c94f..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description.txt.snap +++ /dev/null @@ -1,20 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt ---- -ROOT@0..21 - PREAMBLE@0..21 - THEOREM_DEFINITION_AMSTHM@0..21 - COMMAND_NAME@0..11 "\\newtheorem" - CURLY_GROUP_WORD@11..16 - L_CURLY@11..12 "{" - KEY@12..15 - WORD@12..15 "foo" - R_CURLY@15..16 "}" - CURLY_GROUP@16..21 - L_CURLY@16..17 "{" - TEXT@17..20 - WORD@17..20 "Foo" - R_CURLY@20..21 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description_and_counter.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description_and_counter.txt.snap deleted file mode 100644 index 57f4f7ce1b..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_name_with_description_and_counter.txt.snap +++ /dev/null @@ -1,25 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt ---- -ROOT@0..26 - PREAMBLE@0..26 - THEOREM_DEFINITION_AMSTHM@0..26 - COMMAND_NAME@0..11 "\\newtheorem" - CURLY_GROUP_WORD@11..16 - L_CURLY@11..12 "{" - KEY@12..15 - WORD@12..15 "foo" - R_CURLY@15..16 "}" - BRACK_GROUP_WORD@16..21 - L_BRACK@16..17 "[" - KEY@17..20 - WORD@17..20 "bar" - R_BRACK@20..21 "]" - CURLY_GROUP@21..26 - L_CURLY@21..22 "{" - TEXT@22..25 - WORD@22..25 "Foo" - R_CURLY@25..26 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_only_name.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_only_name.txt.snap deleted file mode 100644 index 22674fbbba..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_only_name.txt.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt ---- -ROOT@0..16 - PREAMBLE@0..16 - THEOREM_DEFINITION_AMSTHM@0..16 - COMMAND_NAME@0..11 "\\newtheorem" - CURLY_GROUP_WORD@11..16 - L_CURLY@11..12 "{" - KEY@12..15 - WORD@12..15 "foo" - R_CURLY@15..16 "}" - diff --git a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_thmtools.txt.snap b/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_thmtools.txt.snap deleted file mode 100644 index 8b00bb4b59..0000000000 --- a/support/texlab/crates/parser/src/snapshots/parser__latex__tests__parse@theorem_definition__theorem_definition_thmtools.txt.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/parser/src/latex.rs -expression: root -input_file: crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt ---- -ROOT@0..41 - PREAMBLE@0..41 - THEOREM_DEFINITION_THMTOOLS@0..41 - COMMAND_NAME@0..15 "\\declaretheorem" - BRACK_GROUP_KEY_VALUE@15..36 - L_BRACK@15..16 "[" - KEY_VALUE_BODY@16..35 - KEY_VALUE_PAIR@16..25 - KEY@16..21 - WORD@16..21 "style" - EQUALITY_SIGN@21..22 "=" - VALUE@22..25 - TEXT@22..25 - WORD@22..25 "foo" - COMMA@25..26 "," - WHITESPACE@26..27 " " - KEY_VALUE_PAIR@27..35 - KEY@27..31 - WORD@27..31 "name" - EQUALITY_SIGN@31..32 "=" - VALUE@32..35 - TEXT@32..35 - WORD@32..35 "bar" - R_BRACK@35..36 "]" - CURLY_GROUP_WORD@36..41 - L_CURLY@36..37 "{" - KEY@37..40 - WORD@37..40 "baz" - R_CURLY@40..41 "}" - diff --git a/support/texlab/crates/parser/src/test_data/bibtex/comment.txt b/support/texlab/crates/parser/src/test_data/bibtex/comment.txt deleted file mode 100644 index f2ff586ab7..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/comment.txt +++ /dev/null @@ -1,6 +0,0 @@ -Some junk here - -@comment{foo, - author = {Foo Bar}, - title = {Some Title}, -} diff --git a/support/texlab/crates/parser/src/test_data/bibtex/issue_809.txt b/support/texlab/crates/parser/src/test_data/bibtex/issue_809.txt deleted file mode 100644 index c94b808fd5..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/issue_809.txt +++ /dev/null @@ -1,3 +0,0 @@ -@article{issue_809, - title = {foo (" bar) baz}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/issue_945.txt b/support/texlab/crates/parser/src/test_data/bibtex/issue_945.txt deleted file mode 100644 index e50835d51f..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/issue_945.txt +++ /dev/null @@ -1 +0,0 @@ -@article{test, author = {\"{\i}}}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/preamble.txt b/support/texlab/crates/parser/src/test_data/bibtex/preamble.txt deleted file mode 100644 index 266b5ce228..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/preamble.txt +++ /dev/null @@ -1 +0,0 @@ -@preamble{"Hello World!"}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/aho_2006.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/aho_2006.txt deleted file mode 100644 index ff829b40d1..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/aho_2006.txt +++ /dev/null @@ -1,8 +0,0 @@ -@book{10.5555/1177220, - author = {Aho, Alfred V. and Lam, Monica S. and Sethi, Ravi and Ullman, Jeffrey D.}, - title = {Compilers: Principles, Techniques, and Tools (2nd Edition)}, - year = {2006}, - isbn = {0321486811}, - publisher = {Addison-Wesley Longman Publishing Co., Inc.}, - address = {USA} -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/aksin_2006.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/aksin_2006.txt deleted file mode 100644 index 88ea701c22..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/aksin_2006.txt +++ /dev/null @@ -1,16 +0,0 @@ -@string{jomch = {J.~Organomet. Chem.}} - -@article{aksin, - author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent - and {\c{C}}etinkaya, Bekir and Ni, Chaoying and - B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan}, - title = {Effect of immobilization on catalytic characteristics of - saturated {Pd-N}-heterocyclic carbenes in {Mizoroki-Heck} - reactions}, - journaltitle = jomch, - date = 2006, - volume = 691, - number = 13, - pages = {3027-3036}, - indextitle = {Effect of immobilization on catalytic characteristics}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/almendro_1998.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/almendro_1998.txt deleted file mode 100644 index ed16d33c67..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/almendro_1998.txt +++ /dev/null @@ -1,14 +0,0 @@ -@patent{almendro, - author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez, - Alberto and Nozal, Fernando}, - title = {Elektromagnetisches Signalhorn}, - number = {EU-29702195U}, - date = 1998, - location = {countryfr and countryuk and countryde}, - langid = {german}, - annotation = {This is a \texttt{patent} entry with a \texttt{location} - field. The number is given in the \texttt{number} field. Note - the format of the \texttt{location} field in the database - file. Compare \texttt{laufenberg}, \texttt{sorace}, and - \texttt{kowalik}}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/averroes_1998.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/averroes_1998.txt deleted file mode 100644 index 9f224353cc..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/averroes_1998.txt +++ /dev/null @@ -1,21 +0,0 @@ -@book{averroes/bland, - author = {Averroes}, - title = {The Epistle on the Possibility of Conjunction with the Active - Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}}, - date = 1982, - editor = {Bland, Kalman P.}, - translator = {Bland, Kalman P.}, - series = {Moreshet: Studies in {Jewish} History, Literature and Thought}, - number = 7, - publisher = {Jewish Theological Seminary of America}, - location = {New York}, - keywords = {primary}, - langid = {english}, - langidopts = {variant=american}, - indextitle = {Epistle on the Possibility of Conjunction, The}, - shorttitle = {Possibility of Conjunction}, - annotation = {A \texttt{book} entry with a \texttt{series} and a - \texttt{number}. Note the concatenation of the \texttt{editor} - and \texttt{translator} fields as well as the - \texttt{indextitle} field}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/betram_1996.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/betram_1996.txt deleted file mode 100644 index b2d77e216f..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/betram_1996.txt +++ /dev/null @@ -1,16 +0,0 @@ -@string{jams = {J.~Amer. Math. Soc.}} - -@article{bertram, - author = {Bertram, Aaron and Wentworth, Richard}, - title = {Gromov invariants for holomorphic maps on {Riemann} surfaces}, - journaltitle = jams, - date = 1996, - volume = 9, - number = 2, - pages = {529-571}, - langid = {english}, - langidopts = {variant=american}, - shorttitle = {Gromov invariants}, - annotation = {An \texttt{article} entry with a \texttt{volume} and a - \texttt{number} field}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/blom_2021.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/blom_2021.txt deleted file mode 100644 index a502e53e03..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/blom_2021.txt +++ /dev/null @@ -1,20 +0,0 @@ -@article{DBLP:journals/corr/abs-2107-11903, - author = {Michelle L. Blom and - Jurlind Budurushi and - Ronald L. Rivest and - Philip B. Stark and - Peter J. Stuckey and - Vanessa Teague and - Damjan Vukcevic}, - title = {Assertion-based Approaches to Auditing Complex Elections, with application - to party-list proportional elections}, - journal = {CoRR}, - volume = {abs/2107.11903}, - year = {2021}, - url = {https://arxiv.org/abs/2107.11903}, - eprinttype = {arXiv}, - eprint = {2107.11903}, - timestamp = {Thu, 29 Jul 2021 16:14:15 +0200}, - biburl = {https://dblp.org/rec/journals/corr/abs-2107-11903.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/combi_2004.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/combi_2004.txt deleted file mode 100644 index 7d8545577d..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/combi_2004.txt +++ /dev/null @@ -1,16 +0,0 @@ -@inproceedings{10.1145/967900.968040, - author = {Combi, Carlo and Pozzi, Giuseppe}, - title = {Architectures for a Temporal Workflow Management System}, - year = {2004}, - isbn = {1581138121}, - publisher = {Association for Computing Machinery}, - address = {New York, NY, USA}, - url = {https://doi.org/10.1145/967900.968040}, - doi = {10.1145/967900.968040}, - booktitle = {Proceedings of the 2004 ACM Symposium on Applied Computing}, - pages = {659-666}, - numpages = {8}, - keywords = {active DBMS, temporal DBMS, workflow management system - WfMS, temporal workflow management system}, - location = {Nicosia, Cyprus}, - series = {SAC '04} -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/erwin_2007.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/erwin_2007.txt deleted file mode 100644 index 116f5e7098..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/erwin_2007.txt +++ /dev/null @@ -1,14 +0,0 @@ -@inproceedings{10.5555/1386993.1386994, - author = {Erwin, Alva and Gopalan, Raj P. and Achuthan, N. R.}, - title = {A Bottom-up Projection Based Algorithm for Mining High Utility Itemsets}, - year = {2007}, - isbn = {9781920682651}, - publisher = {Australian Computer Society, Inc.}, - address = {AUS}, - booktitle = {Proceedings of the 2nd International Workshop on Integrating Artificial Intelligence and Data Mining - Volume 84}, - pages = {3-11}, - numpages = {9}, - keywords = {pattern growth, high utility itemset mining}, - location = {Gold Coast, Australia}, - series = {AIDM '07} -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/jain_1999.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/jain_1999.txt deleted file mode 100644 index c367ef12ee..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/jain_1999.txt +++ /dev/null @@ -1,18 +0,0 @@ -@article{10.1145/331499.331504, - author = {Jain, A. K. and Murty, M. N. and Flynn, P. J.}, - title = {Data Clustering: A Review}, - year = {1999}, - issue_date = {Sept. 1999}, - publisher = {Association for Computing Machinery}, - address = {New York, NY, USA}, - volume = {31}, - number = {3}, - issn = {0360-0300}, - url = {https://doi.org/10.1145/331499.331504}, - doi = {10.1145/331499.331504}, - journal = {ACM Comput. Surv.}, - month = {sep}, - pages = {264-323}, - numpages = {60}, - keywords = {incremental clustering, clustering applications, exploratory data analysis, cluster analysis, similarity indices, unsupervised learning} -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt deleted file mode 100644 index 457f871491..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/kastenholz_2006.txt +++ /dev/null @@ -1,20 +0,0 @@ -@string{jchph = {J.~Chem. Phys.}} - -@article{kastenholz, - author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, - title = {Computation of methodology\hyphen independent ionic solvation - free energies from molecular simulations}, - journaltitle = jchph, - date = 2006, - subtitle = {{I}. {The} electrostatic potential in molecular liquids}, - volume = 124, - eid = 124106, - doi = {10.1063/1.2172593}, - langid = {english}, - langidopts = {variant=american}, - indextitle = {Computation of ionic solvation free energies}, - annotation = {An \texttt{article} entry with an \texttt{eid} and a - \texttt{doi} field. Note that the \textsc{doi} is transformed - into a clickable link if \texttt{hyperref} support has been - enabled}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/knuth_1984.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/knuth_1984.txt deleted file mode 100644 index 98c595e35c..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/knuth_1984.txt +++ /dev/null @@ -1,22 +0,0 @@ -@book{knuth:ct:a, - author = {Knuth, Donald E.}, - title = {The {\TeX book}}, - date = 1984, - maintitle = {Computers \& Typesetting}, - volume = {A}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - langid = {english}, - langidopts = {variant=american}, - sorttitle = {Computers & Typesetting A}, - indexsorttitle= {The TeXbook}, - indextitle = {\protect\TeX book, The}, - shorttitle = {\TeX book}, - annotation = {The first volume of a five-volume book. Note the - \texttt{sorttitle} field. We want this - volume to be listed after the entry referring to the entire - five-volume set. Also note the \texttt{indextitle} and - \texttt{indexsorttitle} fields. Indexing packages that don't - generate robust index entries require some control sequences - to be protected from expansion}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/matuz_1990.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/matuz_1990.txt deleted file mode 100644 index cb803aab51..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/matuz_1990.txt +++ /dev/null @@ -1,14 +0,0 @@ -@collection{matuz:doody, - editor = {Matuz, Roger}, - title = {Contemporary Literary Criticism}, - year = 1990, - volume = 61, - publisher = {Gale}, - location = {Detroit}, - pages = {204-208}, - langid = {english}, - langidopts = {variant=american}, - annotation = {A \texttt{collection} entry providing the excerpt information - for the \texttt{doody} entry. Note the format of the - \texttt{pages} field}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt deleted file mode 100644 index e245be39bb..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/nietzsche_1998.txt +++ /dev/null @@ -1,24 +0,0 @@ -@string{dtv = {Deutscher Taschenbuch-Verlag}} - -@mvbook{nietzsche:ksa, - author = {Nietzsche, Friedrich}, - title = {S{\"a}mtliche Werke}, - date = 1988, - editor = {Colli, Giorgio and Montinari, Mazzino}, - edition = 2, - volumes = 15, - publisher = dtv # { and Walter de Gruyter}, - location = {M{\"u}nchen and Berlin and New York}, - langid = {german}, - sorttitle = {Werke-00-000}, - indexsorttitle= {Samtliche Werke}, - subtitle = {Kritische Studienausgabe}, - annotation = {The critical edition of Nietzsche's works. This is a - \texttt{mvbook} entry referring to a 15-volume work as a - whole. Note the \texttt{volumes} field and the format of the - \texttt{publisher} and \texttt{location} fields in the - database file. Also note the \texttt{sorttitle} and - field which is used to fine-tune the - sorting order of the bibliography. We want this item listed - first in the bibliography}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/bibtex/samples/rivest_1978.txt b/support/texlab/crates/parser/src/test_data/bibtex/samples/rivest_1978.txt deleted file mode 100644 index e1076145ea..0000000000 --- a/support/texlab/crates/parser/src/test_data/bibtex/samples/rivest_1978.txt +++ /dev/null @@ -1,17 +0,0 @@ -@article{10.1145/359340.359342, - author = {Rivest, R. L. and Shamir, A. and Adleman, L.}, - title = {A Method for Obtaining Digital Signatures and Public-Key Cryptosystems}, - year = {1978}, - issue_date = {Feb. 1978}, - publisher = {Association for Computing Machinery}, - address = {New York, NY, USA}, - volume = {21}, - number = {2}, - issn = {0001-0782}, - url = {https://doi.org/10.1145/359340.359342}, - doi = {10.1145/359340.359342}, - journal = {Commun. ACM}, - month = {feb}, - pages = {120-126}, - numpages = {7}, -}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/build_log/001.txt b/support/texlab/crates/parser/src/test_data/build_log/001.txt deleted file mode 100644 index fc9968af0f..0000000000 --- a/support/texlab/crates/parser/src/test_data/build_log/001.txt +++ /dev/null @@ -1,83 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:50 -entering extended mode -restricted \write18 enabled. -%&-line parsing enabled. -**./parent.tex -(./parent.tex -LaTeX2e <2017-04-15> -Babel <3.10> and hyphenation patterns for 84 language(s) loaded. -(/TexLive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/TexLive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/TexLive/texmf-dist/tex/latex/multirow/bigstrut.sty -Package: bigstrut 2016/11/25 v2.2 Provide larger struts in tabulars -\bigstrutjot=\dimen103 -) -(/TexLive/texmf-dist/tex/latex/multirow/multirow.sty -Package: multirow 2016/11/25 v2.2 Span multiple rows of a table -\multirow@colwidth=\skip43 -\multirow@cntb=\count87 -\multirow@dima=\skip44 -) (./parent.aux) -\openout1 = `parent.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. - -Overfull \hbox (200.00162pt too wide) in paragraph at lines 8--9 -[]\OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -[] - -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 11. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 11. - -Overfull \vbox (3.19998pt too high) detected at line 23 -[] - -[1 - -{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux) ) -Here is how much of TeX's memory you used: -265 strings out of 492995 -3121 string characters out of 6138727 -55074 words of memory out of 5000000 -3896 multiletter control sequences out of 15000+600000 -3640 words of font info for 14 fonts, out of 8000000 for 9000 -1141 hyphenation exceptions out of 8191 -23i,20n,20p,124b,282s stack positions out of 5000i,500n,10000p,200000b,80000s -</ -TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></TexLive/texmf-d -ist/fonts/type1/public/amsfonts/cm/cmr7.pfb> -Output written on parent.pdf (1 page, 17505 bytes). -PDF statistics: -16 PDF objects out of 1000 (max. 8388607) -10 compressed objects within 1 object stream -0 named destinations out of 1000 (max. 500000) -1 words of extra memory for PDF output out of 10000 (max. 10000000)
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/build_log/002.txt b/support/texlab/crates/parser/src/test_data/build_log/002.txt deleted file mode 100644 index 8d438d1f12..0000000000 --- a/support/texlab/crates/parser/src/test_data/build_log/002.txt +++ /dev/null @@ -1,64 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:52 -entering extended mode -restricted \write18 enabled. -%&-line parsing enabled. -**./parent.tex -(./parent.tex -LaTeX2e <2017-04-15> -Babel <3.10> and hyphenation patterns for 84 language(s) loaded. -(/TexLive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/TexLive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) (./parent.aux (./child.aux)) -\openout1 = `parent.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -(./child.tex -! Undefined control sequence. -l.1 \foo - -The control sequence at the end of the top line -of your error message was never \def'ed. If you have -misspelled it (e.g., `\hobx'), type `I' and the correct -spelling (e.g., `I\hbox'). Otherwise just continue, -and I'll forget about whatever was undefined. - -) (./parent.aux) ) -Here is how much of TeX's memory you used: -205 strings out of 492995 -2149 string characters out of 6138727 -54074 words of memory out of 5000000 -3841 multiletter control sequences out of 15000+600000 -3640 words of font info for 14 fonts, out of 8000000 for 9000 -1141 hyphenation exceptions out of 8191 -23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s - -No pages of output. -PDF statistics: -0 PDF objects out of 1000 (max. 8388607) -0 named destinations out of 1000 (max. 500000) -1 words of extra memory for PDF output out of 10000 (max. 10000000)
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/build_log/003.txt b/support/texlab/crates/parser/src/test_data/build_log/003.txt deleted file mode 100644 index 220614b91c..0000000000 --- a/support/texlab/crates/parser/src/test_data/build_log/003.txt +++ /dev/null @@ -1,65 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:51 -entering extended mode -restricted \write18 enabled. -%&-line parsing enabled. -**./parent.tex -(./parent.tex -LaTeX2e <2017-04-15> -Babel <3.10> and hyphenation patterns for 84 language(s) loaded. -(/TexLive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/TexLive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) (./parent.aux) -\openout1 = `parent.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 4. -LaTeX Font Info: ... okay on input line 4. - -LaTeX Warning: Citation `foo' on page 1 undefined on input line 6. - -[1 - -{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux) - -LaTeX Warning: There were undefined references. - -) -Here is how much of TeX's memory you used: -204 strings out of 492995 -2142 string characters out of 6138727 -54074 words of memory out of 5000000 -3842 multiletter control sequences out of 15000+600000 -3948 words of font info for 15 fonts, out of 8000000 for 9000 -1141 hyphenation exceptions out of 8191 -23i,4n,21p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s -</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></TexLive/ -texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb> -Output written on parent.pdf (1 page, 17339 bytes). -PDF statistics: -16 PDF objects out of 1000 (max. 8388607) -10 compressed objects within 1 object stream -0 named destinations out of 1000 (max. 500000) -1 words of extra memory for PDF output out of 10000 (max. 10000000)
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/build_log/004.txt b/support/texlab/crates/parser/src/test_data/build_log/004.txt deleted file mode 100644 index 4ab379cd53..0000000000 --- a/support/texlab/crates/parser/src/test_data/build_log/004.txt +++ /dev/null @@ -1,83 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:40 -entering extended mode -restricted \write18 enabled. -%&-line parsing enabled. -**./parent.tex -(./parent.tex -LaTeX2e <2017-04-15> -Babel <3.10> and hyphenation patterns for 84 language(s) loaded. -(/TexLive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/TexLive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/TexLive/texmf-dist/tex/generic/babel/babel.sty -Package: babel 2017/05/19 3.10 The Babel package - -! Package babel Error: Unknown option `foo'. Either you misspelled it -(babel) or the language definition file foo.ldf was not found. - -See the babel package documentation for explanation. -Type H <return> for immediate help. -... - -l.393 \ProcessOptions* - -Valid options are: shorthands=, KeepShorthandsActive, -activeacute, activegrave, noconfigs, safe=, main=, math= -headfoot=, strings=, config=, hyphenmap=, or a language name. - -! Package babel Error: You haven't specified a language option. - -See the babel package documentation for explanation. -Type H <return> for immediate help. -... - -l.426 ...ry to proceed from here, type x to quit.} - -You need to specify a language, either as a global option -or as an optional argument to the \usepackage command; -You shouldn't try to proceed from here, type x to quit. - -) (./parent.aux) -\openout1 = `parent.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5. -LaTeX Font Info: ... okay on input line 5. -(./parent.aux) ) -Here is how much of TeX's memory you used: -304 strings out of 492995 -3421 string characters out of 6138727 -56035 words of memory out of 5000000 -3938 multiletter control sequences out of 15000+600000 -3640 words of font info for 14 fonts, out of 8000000 for 9000 -1141 hyphenation exceptions out of 8191 -23i,1n,17p,116b,36s stack positions out of 5000i,500n,10000p,200000b,80000s - -No pages of output. -PDF statistics: -0 PDF objects out of 1000 (max. 8388607) -0 named destinations out of 1000 (max. 500000) -1 words of extra memory for PDF output out of 10000 (max. 10000000)
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/build_log/005.txt b/support/texlab/crates/parser/src/test_data/build_log/005.txt deleted file mode 100644 index 07c95bfc6b..0000000000 --- a/support/texlab/crates/parser/src/test_data/build_log/005.txt +++ /dev/null @@ -1,385 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:45 -entering extended mode -restricted \write18 enabled. -%&-line parsing enabled. -**./parent.tex -(./parent.tex -LaTeX2e <2017-04-15> -Babel <3.10> and hyphenation patterns for 84 language(s) loaded. -(/TexLive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/TexLive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/TexLive/texmf-dist/tex/generic/babel/babel.sty -Package: babel 2017/05/19 3.10 The Babel package - -(/TexLive/texmf-dist/tex/generic/babel-spanish/spanish.ldf -Language: spanish.ldf 2016/03/03 v5.0p Spanish support from the babel system - -(/TexLive/texmf-dist/tex/generic/babel/babel.def -File: babel.def 2017/05/19 3.10 Babel common definitions -\babel@savecnt=\count87 -\U@D=\dimen103 -) -\es@quottoks=\toks14 -\es@quotdepth=\count88 -Package babel Info: Making " an active character on input line 561. -Package babel Info: Making . an active character on input line 662. -Package babel Info: Making < an active character on input line 707. -Package babel Info: Making > an active character on input line 707. -)) -(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.sty -Package: biblatex 2016/12/05 v3.7 programmable bibliographies (PK/JW/AB) - -(/TexLive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO -) - -(/TexLive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/TexLive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -(/TexLive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) -) -(/TexLive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -(/TexLive/texmf-dist/tex/latex/etoolbox/etoolbox.sty -Package: etoolbox 2017/01/02 v2.4 e-TeX tools for LaTeX (JAW) -\etb@tempcnta=\count89 -) -(/TexLive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks15 -) -(/TexLive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/TexLive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/TexLive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -(/TexLive/texmf-dist/tex/latex/logreq/logreq.sty -Package: logreq 2010/08/04 v1.0 xml request logger -\lrq@indent=\count90 - -(/TexLive/texmf-dist/tex/latex/logreq/logreq.def -File: logreq.def 2010/08/04 v1.0 logreq spec v1.0 -)) -(/TexLive/texmf-dist/tex/latex/base/ifthen.sty -Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) -) -(/TexLive/texmf-dist/tex/latex/url/url.sty -\Urlmuskip=\muskip10 -Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. -) -(/TexLive/texmf-dist/tex/generic/xstring/xstring.sty -(/TexLive/texmf-dist/tex/generic/xstring/xstring.tex -\@xs@message=\write3 -\integerpart=\count91 -\decimalpart=\count92 -) -Package: xstring 2013/10/13 v1.7c String manipulations (C Tellechea) -) -\c@tabx@nest=\count93 -\c@listtotal=\count94 -\c@listcount=\count95 -\c@liststart=\count96 -\c@liststop=\count97 -\c@citecount=\count98 -\c@citetotal=\count99 -\c@multicitecount=\count100 -\c@multicitetotal=\count101 -\c@instcount=\count102 -\c@maxnames=\count103 -\c@minnames=\count104 -\c@maxitems=\count105 -\c@minitems=\count106 -\c@citecounter=\count107 -\c@savedcitecounter=\count108 -\c@uniquelist=\count109 -\c@uniquename=\count110 -\c@refsection=\count111 -\c@refsegment=\count112 -\c@maxextratitle=\count113 -\c@maxextratitleyear=\count114 -\c@maxextrayear=\count115 -\c@maxextraalpha=\count116 -\c@abbrvpenalty=\count117 -\c@highnamepenalty=\count118 -\c@lownamepenalty=\count119 -\c@maxparens=\count120 -\c@parenlevel=\count121 -\blx@tempcnta=\count122 -\blx@tempcntb=\count123 -\blx@tempcntc=\count124 -\blx@maxsection=\count125 -\blx@maxsegment@0=\count126 -\blx@notetype=\count127 -\blx@parenlevel@text=\count128 -\blx@parenlevel@foot=\count129 -\blx@sectionciteorder@0=\count130 -\labelnumberwidth=\skip43 -\labelalphawidth=\skip44 -\biblabelsep=\skip45 -\bibitemsep=\skip46 -\bibnamesep=\skip47 -\bibinitsep=\skip48 -\bibparsep=\skip49 -\bibhang=\skip50 -\blx@bcfin=\read1 -\blx@bcfout=\write4 -\c@mincomprange=\count131 -\c@maxcomprange=\count132 -\c@mincompwidth=\count133 -Package biblatex Info: Trying to load biblatex default data model... -Package biblatex Info: ... file 'blx-dm.def' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/blx-dm.def) -Package biblatex Info: Trying to load biblatex style data model... -Package biblatex Info: ... file 'ieee.dbx' not found. -Package biblatex Info: Trying to load biblatex custom data model... -Package biblatex Info: ... file 'biblatex-dm.cfg' not found. -\c@afterword=\count134 -\c@savedafterword=\count135 -\c@annotator=\count136 -\c@savedannotator=\count137 -\c@author=\count138 -\c@savedauthor=\count139 -\c@bookauthor=\count140 -\c@savedbookauthor=\count141 -\c@commentator=\count142 -\c@savedcommentator=\count143 -\c@editor=\count144 -\c@savededitor=\count145 -\c@editora=\count146 -\c@savededitora=\count147 -\c@editorb=\count148 -\c@savededitorb=\count149 -\c@editorc=\count150 -\c@savededitorc=\count151 -\c@foreword=\count152 -\c@savedforeword=\count153 -\c@holder=\count154 -\c@savedholder=\count155 -\c@introduction=\count156 -\c@savedintroduction=\count157 -\c@namea=\count158 -\c@savednamea=\count159 -\c@nameb=\count160 -\c@savednameb=\count161 -\c@namec=\count162 -\c@savednamec=\count163 -\c@translator=\count164 -\c@savedtranslator=\count165 -\c@shortauthor=\count166 -\c@savedshortauthor=\count167 -\c@shorteditor=\count168 -\c@savedshorteditor=\count169 -\c@labelname=\count170 -\c@savedlabelname=\count171 -\c@institution=\count172 -\c@savedinstitution=\count173 -\c@lista=\count174 -\c@savedlista=\count175 -\c@listb=\count176 -\c@savedlistb=\count177 -\c@listc=\count178 -\c@savedlistc=\count179 -\c@listd=\count180 -\c@savedlistd=\count181 -\c@liste=\count182 -\c@savedliste=\count183 -\c@listf=\count184 -\c@savedlistf=\count185 -\c@location=\count186 -\c@savedlocation=\count187 -\c@organization=\count188 -\c@savedorganization=\count189 -\c@origlocation=\count190 -\c@savedoriglocation=\count191 -\c@origpublisher=\count192 -\c@savedorigpublisher=\count193 -\c@publisher=\count194 -\c@savedpublisher=\count195 -\c@language=\count196 -\c@savedlanguage=\count197 -\c@pageref=\count198 -\c@savedpageref=\count199 -\shorthandwidth=\skip51 -\shortjournalwidth=\skip52 -\shortserieswidth=\skip53 -\shorttitlewidth=\skip54 -\shortauthorwidth=\skip55 -\shorteditorwidth=\skip56 -Package biblatex Info: Trying to load compatibility code... -Package biblatex Info: ... file 'blx-compat.def' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/blx-compat.def -File: blx-compat.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB) -) -Package biblatex Info: Trying to load generic definitions... -Package biblatex Info: ... file 'biblatex.def' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.def -File: biblatex.def 2016/12/05 v3.7 biblatex compatibility (PK/JW/AB) -\c@textcitecount=\count266 -\c@textcitetotal=\count267 -\c@textcitemaxnames=\count268 -\c@biburlnumpenalty=\count269 -\c@biburlucpenalty=\count270 -\c@biburllcpenalty=\count271 -\c@smartand=\count272 -) -Package biblatex Info: Trying to load bibliography style 'ieee'... -Package biblatex Info: ... file 'ieee.bbx' found. - -(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx -File: ieee.bbx 2017/03/27 v1.2d biblatex bibliography style -Package biblatex Info: Trying to load bibliography style 'numeric-comp'... -Package biblatex Info: ... file 'numeric-comp.bbx' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx -File: numeric-comp.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB) -Package biblatex Info: Trying to load bibliography style 'numeric'... -Package biblatex Info: ... file 'numeric.bbx' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx -File: numeric.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB) -Package biblatex Info: Trying to load bibliography style 'standard'... -Package biblatex Info: ... file 'standard.bbx' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/bbx/standard.bbx -File: standard.bbx 2016/12/05 v3.7 biblatex bibliography style (PK/JW/AB) -\c@bbx:relatedcount=\count273 -\c@bbx:relatedtotal=\count274 -)))) -Package biblatex Info: Trying to load citation style 'ieee'... -Package biblatex Info: ... file 'ieee.cbx' found. - -(/TexLive/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx -File: ieee.cbx 2017/03/27 v1.2d biblatex citation style -Package biblatex Info: Trying to load citation style 'numeric-comp'... -Package biblatex Info: ... file 'numeric-comp.cbx' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx -File: numeric-comp.cbx 2016/12/05 v3.7 biblatex citation style (PK/JW/AB) -\c@cbx@tempcnta=\count275 -\c@cbx@tempcntb=\count276 -Package biblatex Info: Redefining '\cite'. -Package biblatex Info: Redefining '\parencite'. -Package biblatex Info: Redefining '\footcite'. -Package biblatex Info: Redefining '\footcitetext'. -Package biblatex Info: Redefining '\smartcite'. -Package biblatex Info: Redefining '\supercite'. -Package biblatex Info: Redefining '\textcite'. -Package biblatex Info: Redefining '\textcites'. -Package biblatex Info: Redefining '\cites'. -Package biblatex Info: Redefining '\parencites'. -Package biblatex Info: Redefining '\smartcites'. -) -Package biblatex Info: Redefining '\cite'. -Package biblatex Info: Redefining '\cites'. -) -Package biblatex Info: Trying to load configuration file... -Package biblatex Info: ... file 'biblatex.cfg' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/biblatex.cfg -File: biblatex.cfg -)) -Package biblatex Info: Trying to load language 'spanish'... -Package biblatex Info: ... file 'spanish.lbx' found. - -(/TexLive/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx -File: spanish.lbx 2016/12/05 v3.7 biblatex localization (PK/JW/AB) -) - -Package biblatex Warning: 'babel/polyglossia' detected but 'csquotes' missing. -(biblatex) Loading 'csquotes' recommended. - -\@quotelevel=\count277 -\@quotereset=\count278 -(./parent.aux) -\openout1 = `parent.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. -LaTeX Font Info: ... okay on input line 6. -LaTeX Info: Redefining \sptext on input line 6. -LaTeX Info: Redefining \. on input line 6. -LaTeX Info: Redefining \% on input line 6. -Package biblatex Info: No input encoding detected. -(biblatex) Assuming 'ascii'. -Package biblatex Info: Automatic encoding selection. -(biblatex) Assuming data encoding 'ascii'. -\openout4 = `parent.bcf'. - -Package biblatex Info: Trying to load bibliographic data... -Package biblatex Info: ... file 'parent.bbl' not found. - -No file parent.bbl. -Package biblatex Info: Reference section=0 on input line 6. -Package biblatex Info: Reference segment=0 on input line 6. -(./parent.aux) - -LaTeX Warning: There were undefined references. - -Package biblatex Warning: Please (re)run Biber on the file: -(biblatex) parent -(biblatex) and rerun LaTeX afterwards. - -Package logreq Info: Writing requests to 'parent.run.xml'. -\openout1 = `parent.run.xml'. - -) -Here is how much of TeX's memory you used: -7717 strings out of 492995 -133301 string characters out of 6138727 -557258 words of memory out of 5000000 -11248 multiletter control sequences out of 15000+600000 -3640 words of font info for 14 fonts, out of 8000000 for 9000 -1141 hyphenation exceptions out of 8191 -35i,1n,30p,856b,700s stack positions out of 5000i,500n,10000p,200000b,80000s - -No pages of output. -PDF statistics: -0 PDF objects out of 1000 (max. 8388607) -0 named destinations out of 1000 (max. 500000) -1 words of extra memory for PDF output out of 10000 (max. 10000000)
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/build_log/006.txt b/support/texlab/crates/parser/src/test_data/build_log/006.txt deleted file mode 100644 index 3edb18b8c7..0000000000 --- a/support/texlab/crates/parser/src/test_data/build_log/006.txt +++ /dev/null @@ -1,122 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/W32TeX) (preloaded format=pdflatex 2018.3.30) 26 DEC 2018 16:33 -entering extended mode -restricted \write18 enabled. -%&-line parsing enabled. -**./parent.tex -(./parent.tex -LaTeX2e <2017-04-15> -Babel <3.10> and hyphenation patterns for 84 language(s) loaded. -(/TexLive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/TexLive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) (./parent.aux -(./child.tex.aux)) -\openout1 = `parent.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -\openout2 = `child.aux'. - -(./child.tex) -! Undefined control sequence. -l.7 \foo - -The control sequence at the end of the top line -of your error message was never \def'ed. If you have -misspelled it (e.g., `\hobx'), type `I' and the correct -spelling (e.g., `I\hbox'). Otherwise just continue, -and I'll forget about whatever was undefined. - -! Missing $ inserted. -<inserted text> - $ -l.8 \bar - -I've inserted a begin-math/end-math symbol since I think -you left one out. Proceed, with fingers crossed. - -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 8. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 8. -! Undefined control sequence. -l.9 \baz - -The control sequence at the end of the top line -of your error message was never \def'ed. If you have -misspelled it (e.g., `\hobx'), type `I' and the correct -spelling (e.g., `I\hbox'). Otherwise just continue, -and I'll forget about whatever was undefined. - -! Missing { inserted. -<to be read again> - \par -l.10 - -A left brace was mandatory here, so I've put one in. -You might want to delete and/or insert some corrections -so that I will find a matching right brace soon. -(If you're confused by all this, try typing `I}' now.) - -! Missing $ inserted. -<inserted text> - $ -l.10 - -I've inserted a begin-math/end-math symbol since I think -you left one out. Proceed, with fingers crossed. - -! Missing } inserted. -<inserted text> - } -l.10 - -I've inserted something that you may have forgotten. -(See the <inserted text> above.) -With luck, this will get me unwedged. But if you -really didn't forget anything, try typing `2' now; then -my insertion and my current dilemma will both disappear. - -[1 - -{/TexLive/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./parent.aux -(./child.aux)) ) -Here is how much of TeX's memory you used: -212 strings out of 492995 -2238 string characters out of 6138727 -54074 words of memory out of 5000000 -3843 multiletter control sequences out of 15000+600000 -3640 words of font info for 14 fonts, out of 8000000 for 9000 -1141 hyphenation exceptions out of 8191 -23i,4n,17p,116b,107s stack positions out of 5000i,500n,10000p,200000b,80000s -</TexLive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb -> -Output written on parent.pdf (1 page, 8329 bytes). -PDF statistics: -12 PDF objects out of 1000 (max. 8388607) -7 compressed objects within 1 object stream -0 named destinations out of 1000 (max. 500000) -1 words of extra memory for PDF output out of 10000 (max. 10000000)
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/build_log/007.txt b/support/texlab/crates/parser/src/test_data/build_log/007.txt deleted file mode 100644 index 4c86405c0d..0000000000 --- a/support/texlab/crates/parser/src/test_data/build_log/007.txt +++ /dev/null @@ -1,176 +0,0 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/W32TeX) (preloaded format=pdflatex 2021.6.19) 5 NOV 2021 19:10 -entering extended mode -restricted \write18 enabled. -%&-line parsing enabled. -**/some/folder/a.tex -(/some/folder/a.tex -LaTeX2e <2021-06-01> patch level 1 -L3 programming layer <2021-06-18> -(/texlive/2021/texmf-dist/tex/latex/koma-script/scrartcl.cls -Document Class: scrartcl 2021/03/17 v3.33 KOMA-Script document class (article) -(/texlive/2021/texmf-dist/tex/latex/koma-script/scrkbase.sty -Package: scrkbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-dependent b -asics and keyval usage) - -(/texlive/2021/texmf-dist/tex/latex/koma-script/scrbase.sty -Package: scrbase 2021/03/17 v3.33 KOMA-Script package (KOMA-Script-independent -basics and keyval usage) - -(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile.sty -Package: scrlfile 2021/03/17 v3.33 KOMA-Script package (file load hooks) - -(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty -Package: scrlfile-hook 2021/03/17 v3.33 KOMA-Script package (using LaTeX hooks) - - -(/texlive/2021/texmf-dist/tex/latex/koma-script/scrlogo.sty -Package: scrlogo 2021/03/17 v3.33 KOMA-Script package (logo) -))) -(/texlive/2021/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks16 -) -Applying: [2021/05/01] Usage of raw option list on input line 252. -Already applied: [0000/00/00] compatibility for LaTeX before 2021/05/01 on inpu -t line 337. -)) -==> First Aid for scrkbase.sty no longer applied! -(/texlive/2021/texmf-dist/tex/latex/koma-script/tocbasic.sty -Package: tocbasic 2021/03/17 v3.33 KOMA-Script package (handling toc-files) -\scr@dte@tocline@numberwidth=\skip47 -\scr@dte@tocline@numbox=\box50 -) -Package tocbasic Info: babel extension for `toc' omitted -(tocbasic) because of missing \bbl@set@language on input line 135. -Class scrartcl Info: File `scrsize11pt.clo' used instead of -(scrartcl) file `scrsize11.clo' to setup font sizes on input line 223 -9. - -(/texlive/2021/texmf-dist/tex/latex/koma-script/scrsize11pt.clo -File: scrsize11pt.clo 2021/03/17 v3.33 KOMA-Script font size class option (11pt -) -) -(/texlive/2021/texmf-dist/tex/latex/koma-script/typearea.sty -Package: typearea 2021/03/17 v3.33 KOMA-Script package (type area) -\ta@bcor=\skip48 -\ta@div=\count182 -\ta@hblk=\skip49 -\ta@vblk=\skip50 -\ta@temp=\skip51 -\footheight=\skip52 -Package typearea Info: These are the values describing the layout: -(typearea) DIV = 10 -(typearea) BCOR = 0.0pt -(typearea) \paperwidth = 597.50793pt -(typearea) \textwidth = 418.25555pt -(typearea) DIV departure = -6% -(typearea) \evensidemargin = 17.3562pt -(typearea) \oddsidemargin = 17.3562pt -(typearea) \paperheight = 845.04694pt -(typearea) \textheight = 595.80026pt -(typearea) \topmargin = -25.16531pt -(typearea) \headheight = 17.0pt -(typearea) \headsep = 20.40001pt -(typearea) \topskip = 11.0pt -(typearea) \footskip = 47.6pt -(typearea) \baselineskip = 13.6pt -(typearea) on input line 1741. -) -\c@part=\count183 -\c@section=\count184 -\c@subsection=\count185 -\c@subsubsection=\count186 -\c@paragraph=\count187 -\c@subparagraph=\count188 -\scr@dte@section@maxnumwidth=\skip53 -Class scrartcl Info: using compatibility default `runin=bysign' -(scrartcl) for `\section on input line 4846. -Class scrartcl Info: using compatibility default `afterindent=bysign' -(scrartcl) for `\section on input line 4846. -\scr@dte@part@maxnumwidth=\skip54 -Class scrartcl Info: using compatibility default `afterindent=false' -(scrartcl) for `\part on input line 4854. -\scr@dte@subsection@maxnumwidth=\skip55 -Class scrartcl Info: using compatibility default `runin=bysign' -(scrartcl) for `\subsection on input line 4864. -Class scrartcl Info: using compatibility default `afterindent=bysign' -(scrartcl) for `\subsection on input line 4864. -\scr@dte@subsubsection@maxnumwidth=\skip56 -Class scrartcl Info: using compatibility default `runin=bysign' -(scrartcl) for `\subsubsection on input line 4874. -Class scrartcl Info: using compatibility default `afterindent=bysign' -(scrartcl) for `\subsubsection on input line 4874. -\scr@dte@paragraph@maxnumwidth=\skip57 -Class scrartcl Info: using compatibility default `runin=bysign' -(scrartcl) for `\paragraph on input line 4885. -Class scrartcl Info: using compatibility default `afterindent=bysign' -(scrartcl) for `\paragraph on input line 4885. -\scr@dte@subparagraph@maxnumwidth=\skip58 -Class scrartcl Info: using compatibility default `runin=bysign' -(scrartcl) for `\subparagraph on input line 4895. -Class scrartcl Info: using compatibility default `afterindent=bysign' -(scrartcl) for `\subparagraph on input line 4895. -\abovecaptionskip=\skip59 -\belowcaptionskip=\skip60 -\c@pti@nb@sid@b@x=\box51 -Package tocbasic Info: babel extension for `lof' omitted -(tocbasic) because of missing \bbl@set@language on input line 6127. - -\scr@dte@figure@maxnumwidth=\skip61 -\c@figure=\count189 -Package tocbasic Info: babel extension for `lot' omitted -(tocbasic) because of missing \bbl@set@language on input line 6139. - -\scr@dte@table@maxnumwidth=\skip62 -\c@table=\count190 -Class scrartcl Info: Redefining `\numberline' on input line 6303. -\bibindent=\dimen138 -) -(/texlive/2021/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def -File: l3backend-pdftex.def 2021-05-07 L3 backend support: PDF output (pdfTeX) -\l__color_backend_stack_int=\count191 -\l__pdf_internal_box=\box52 -) (./a.aux) -\openout1 = `a.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 3. -LaTeX Font Info: ... okay on input line 3. -Package scrbase Info: activating english \contentsname on input line 3. -Package scrbase Info: activating english \listfigurename on input line 3. -Package scrbase Info: activating english \listtablename on input line 3. -! Undefined control sequence. -l.4 \lsdkfjlskdfj - -The control sequence at the end of the top line -of your error message was never \def'ed. If you have -misspelled it (e.g., `\hobx'), type `I' and the correct -spelling (e.g., `I\hbox'). Otherwise just continue, -and I'll forget about whatever was undefined. - -(./a.aux) ) -Here is how much of TeX's memory you used: -3199 strings out of 478510 -74549 string characters out of 5853586 -510929 words of memory out of 5000000 -21227 multiletter control sequences out of 15000+600000 -403730 words of font info for 28 fonts, out of 8000000 for 9000 -1141 hyphenation exceptions out of 8191 -108i,1n,108p,10625b,270s stack positions out of 5000i,500n,10000p,200000b,80000s - -No pages of output. -PDF statistics: -0 PDF objects out of 1000 (max. 8388607) -0 named destinations out of 1000 (max. 500000) -1 words of extra memory for PDF output out of 10000 (max. 10000000)
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/block_comments.txt b/support/texlab/crates/parser/src/test_data/latex/block_comments.txt deleted file mode 100644 index d4e63ab1c8..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/block_comments.txt +++ /dev/null @@ -1,9 +0,0 @@ -Foo -\iffalse -Test1 -\fi -Bar -\iffalse -\fii -\fi -Baz
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_default.txt deleted file mode 100644 index 9084f143bf..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default.txt +++ /dev/null @@ -1 +0,0 @@ -\caption[qux]{Foo \Bar Baz}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default_error.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_default_error.txt deleted file mode 100644 index 62e5962816..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_default_error.txt +++ /dev/null @@ -1 +0,0 @@ -\caption[qux]{Foo \Bar Baz
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_figure.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_figure.txt deleted file mode 100644 index 8a1d3067d8..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_figure.txt +++ /dev/null @@ -1 +0,0 @@ -\begin{figure}\caption{Foo}\end{figure}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal.txt deleted file mode 100644 index 07af0af8ca..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal.txt +++ /dev/null @@ -1 +0,0 @@ -\caption{Foo \Bar Baz}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal_error.txt b/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal_error.txt deleted file mode 100644 index 747db731c1..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/caption/caption_minimal_error.txt +++ /dev/null @@ -1 +0,0 @@ -\caption{Foo \Bar Baz
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_empty.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_empty.txt deleted file mode 100644 index 06704b89a4..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_empty.txt +++ /dev/null @@ -1 +0,0 @@ -\cite{}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_missing_brace.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_missing_brace.txt deleted file mode 100644 index 1f8e4c9310..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_missing_brace.txt +++ /dev/null @@ -1 +0,0 @@ -\cite{foo
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt deleted file mode 100644 index be5da02c62..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_multiple_keys.txt +++ /dev/null @@ -1 +0,0 @@ -\cite{foo, bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote.txt deleted file mode 100644 index 5ae28c28ec..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote.txt +++ /dev/null @@ -1 +0,0 @@ -\cite[foo]{bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt deleted file mode 100644 index 23103b2476..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_prenote_postnote.txt +++ /dev/null @@ -1 +0,0 @@ -\cite[foo][bar]{baz}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt deleted file mode 100644 index 68e3c2d36e..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_redundant_comma.txt +++ /dev/null @@ -1 +0,0 @@ -\cite{,foo,}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_simple.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_simple.txt deleted file mode 100644 index cd5809ef25..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\cite{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/citation/citation_star.txt b/support/texlab/crates/parser/src/test_data/latex/citation/citation_star.txt deleted file mode 100644 index d1a2677021..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/citation/citation_star.txt +++ /dev/null @@ -1 +0,0 @@ -\nocite{*}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_definition_simple.txt deleted file mode 100644 index e8b58c8162..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/color/color_definition_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\definecolor{foo}{rgb}{255,168,0}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_reference_simple.txt deleted file mode 100644 index 4fea2b24ec..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/color/color_reference_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\color{black}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error1.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error1.txt deleted file mode 100644 index f377ffcf2f..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error1.txt +++ /dev/null @@ -1 +0,0 @@ -\definecolorset[ty]{rgb,HTML}{foo}{bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error2.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error2.txt deleted file mode 100644 index 0b5fa35868..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error2.txt +++ /dev/null @@ -1 +0,0 @@ -\definecolorset{rgb,HTML}{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error3.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error3.txt deleted file mode 100644 index fb695b4530..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error3.txt +++ /dev/null @@ -1 +0,0 @@ -\definecolorset{rgb,HTML}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error4.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error4.txt deleted file mode 100644 index 7c494133bf..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_error4.txt +++ /dev/null @@ -1 +0,0 @@ -\definecolorset
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_simple.txt deleted file mode 100644 index c812e61041..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/color/color_set_definition_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\definecolorset[ty]{rgb,HTML}{foo}{bar}{baz}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt deleted file mode 100644 index ef63ef62cb..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_argc.txt +++ /dev/null @@ -1 +0,0 @@ -\newcommand{\foo}{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt deleted file mode 100644 index 5ffc7e97c2..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl.txt +++ /dev/null @@ -1 +0,0 @@ -\newcommand{\foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt deleted file mode 100644 index 9323f5a313..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_no_impl_error.txt +++ /dev/null @@ -1 +0,0 @@ -\newcommand{\foo
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt deleted file mode 100644 index c3fb7225f3..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_optional.txt +++ /dev/null @@ -1 +0,0 @@ -\newcommand{\foo}[1][def]{#1}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt deleted file mode 100644 index ffce86f21c..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\newcommand[1]{\id}{#1}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt deleted file mode 100644 index e7ce7984cb..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/command_definition_with_begin.txt +++ /dev/null @@ -1 +0,0 @@ -\newcommand{\CVSubHeadingListStart}{\begin{itemize}[leftmargin=0.5cm, label={}]}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt deleted file mode 100644 index 685be22ce6..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_no_impl.txt +++ /dev/null @@ -1 +0,0 @@ -\DeclareMathOperator{\foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt b/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt deleted file mode 100644 index ffbf671f74..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/command_definition/math_operator_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\DeclareMathOperator{\foo}{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_asymptote.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_asymptote.txt deleted file mode 100644 index 76646075ea..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_asymptote.txt +++ /dev/null @@ -1,3 +0,0 @@ -\begin{asy} - printf("Hello World\n"); -\end{asy}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition.txt deleted file mode 100644 index d3a5291dca..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition.txt +++ /dev/null @@ -1 +0,0 @@ -\newenvironment{bar}[1]{\begin{foo}}{\end{foo}}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt deleted file mode 100644 index bead3228a4..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_definition_optional_arg.txt +++ /dev/null @@ -1 +0,0 @@ -\newenvironment{foo}[1][default]{begin}{end}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested.txt deleted file mode 100644 index 8d84019ac7..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested.txt +++ /dev/null @@ -1 +0,0 @@ -\begin{foo} \begin{qux} \end{baz} \end{bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt deleted file mode 100644 index 35ce901a83..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_nested_missing_braces.txt +++ /dev/null @@ -1 +0,0 @@ -\begin{foo \begin{qux Hello World \end{baz} \end{bar
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/environment/environment_simple.txt b/support/texlab/crates/parser/src/test_data/latex/environment/environment_simple.txt deleted file mode 100644 index 309b559957..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/environment/environment_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\begin{foo} Hello World \end{bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/equation.txt b/support/texlab/crates/parser/src/test_data/latex/equation.txt deleted file mode 100644 index 7f85196961..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/equation.txt +++ /dev/null @@ -1 +0,0 @@ -\[ foo bar \]
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/equation_missing_begin.txt b/support/texlab/crates/parser/src/test_data/latex/equation_missing_begin.txt deleted file mode 100644 index 9e5707b196..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/equation_missing_begin.txt +++ /dev/null @@ -1 +0,0 @@ -\begin{a} foo bar \] \end{b}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/generic_command_args.txt b/support/texlab/crates/parser/src/test_data/latex/generic_command_args.txt deleted file mode 100644 index 2d62314c5c..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/generic_command_args.txt +++ /dev/null @@ -1 +0,0 @@ -\foo{bar}[qux]
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/generic_command_empty.txt b/support/texlab/crates/parser/src/test_data/latex/generic_command_empty.txt deleted file mode 100644 index eeb4a48255..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/generic_command_empty.txt +++ /dev/null @@ -1 +0,0 @@ -\foo
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/generic_command_escape.txt b/support/texlab/crates/parser/src/test_data/latex/generic_command_escape.txt deleted file mode 100644 index 133d674d1e..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/generic_command_escape.txt +++ /dev/null @@ -1 +0,0 @@ -\#
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_declaration.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_declaration.txt deleted file mode 100644 index abf12b6cae..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_declaration.txt +++ /dev/null @@ -1 +0,0 @@ -\DeclareAcronym{eg}{short = e.g,long = for example,tag = abbrev}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt deleted file mode 100644 index 47a69067ca..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_options.txt +++ /dev/null @@ -1 +0,0 @@ -\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt deleted file mode 100644 index 4fbf285927..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_definition_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\newacronym{fpsLabel}{FPS}{Frame per Second}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_package.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_package.txt deleted file mode 100644 index 86e60c4584..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_package.txt +++ /dev/null @@ -1 +0,0 @@ -\acro{fps}[FPS]{Frames per Second} diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt deleted file mode 100644 index 43fd03f12b..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_options.txt +++ /dev/null @@ -1 +0,0 @@ -\acrshort[foo=bar,baz]{fpsLabel}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt deleted file mode 100644 index d9fb5b9a25..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/acronym_reference_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\acrshort{fpsLabel}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt deleted file mode 100644 index fb1e12899a..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_definition_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\newglossaryentry{foo}{bar = baz, qux,}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt deleted file mode 100644 index fbae075e1d..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_options.txt +++ /dev/null @@ -1 +0,0 @@ -\gls[foo = bar, qux]{baz}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt deleted file mode 100644 index a603355f0f..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/glossary/glossary_entry_reference_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\gls{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/graphics_path.txt b/support/texlab/crates/parser/src/test_data/latex/graphics_path.txt deleted file mode 100644 index 0e9f431c36..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/graphics_path.txt +++ /dev/null @@ -1 +0,0 @@ -\graphicspath{{../figures/}}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/graphics_path_command.txt b/support/texlab/crates/parser/src/test_data/latex/graphics_path_command.txt deleted file mode 100644 index 729ee51690..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/graphics_path_command.txt +++ /dev/null @@ -1 +0,0 @@ -\graphicspath{{\subfix{./img/}}}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/graphics_path_options.txt b/support/texlab/crates/parser/src/test_data/latex/graphics_path_options.txt deleted file mode 100644 index ae8aa84d86..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/graphics_path_options.txt +++ /dev/null @@ -1 +0,0 @@ -\graphicspath[foo]{{../figures/}}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_missing_end.txt b/support/texlab/crates/parser/src/test_data/latex/group/curly_group_missing_end.txt deleted file mode 100644 index 6c7b76c0f8..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_missing_end.txt +++ /dev/null @@ -1 +0,0 @@ -{hello world
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_simple.txt b/support/texlab/crates/parser/src/test_data/latex/group/curly_group_simple.txt deleted file mode 100644 index 5084aae70a..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/group/curly_group_simple.txt +++ /dev/null @@ -1 +0,0 @@ -{hello world}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/group/equation_missing_end.txt b/support/texlab/crates/parser/src/test_data/latex/group/equation_missing_end.txt deleted file mode 100644 index fcb715926a..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/group/equation_missing_end.txt +++ /dev/null @@ -1 +0,0 @@ -\begin{a} \[ foo bar \end{b}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/group/escaped_brackets.txt b/support/texlab/crates/parser/src/test_data/latex/group/escaped_brackets.txt deleted file mode 100644 index 144a5fdd6d..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/group/escaped_brackets.txt +++ /dev/null @@ -1 +0,0 @@ -{[}{]}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_braces.txt b/support/texlab/crates/parser/src/test_data/latex/group/unmatched_braces.txt deleted file mode 100644 index 8f606b7dbe..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_braces.txt +++ /dev/null @@ -1 +0,0 @@ -}{
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets.txt b/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets.txt deleted file mode 100644 index 94ea4d5c96..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets.txt +++ /dev/null @@ -1 +0,0 @@ -][
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt b/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt deleted file mode 100644 index ebf6229429..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/group/unmatched_brackets_with_group.txt +++ /dev/null @@ -1 +0,0 @@ -{][}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/hello_world.txt b/support/texlab/crates/parser/src/test_data/latex/hello_world.txt deleted file mode 100644 index c57eff55eb..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/hello_world.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World!
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_options.txt deleted file mode 100644 index 216e7ea165..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_options.txt +++ /dev/null @@ -1 +0,0 @@ -\addbibresource[foo=bar, baz]{foo/bar.bib}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_simple.txt deleted file mode 100644 index fe10ce257d..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/biblatex_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\addbibresource{foo/bar.bib}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/bibtex_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/bibtex_include_simple.txt deleted file mode 100644 index 955353f690..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/bibtex_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\bibliography{foo/bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/class_include_empty.txt b/support/texlab/crates/parser/src/test_data/latex/include/class_include_empty.txt deleted file mode 100644 index 144b418175..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/class_include_empty.txt +++ /dev/null @@ -1 +0,0 @@ -\documentclass{}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/class_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/class_include_options.txt deleted file mode 100644 index 32dc4279d7..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/class_include_options.txt +++ /dev/null @@ -1 +0,0 @@ -\documentclass[foo = bar, baz, qux]{article}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/class_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/class_include_simple.txt deleted file mode 100644 index 15f3d6ea0a..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/class_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\documentclass{article}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_command.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_command.txt deleted file mode 100644 index 14a4a96216..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_command.txt +++ /dev/null @@ -1 +0,0 @@ -\includegraphics[width=0.5\textwidth]{\foo.\bar.pdf}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt deleted file mode 100644 index d6b6910c14..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_complicated_options.txt +++ /dev/null @@ -1 +0,0 @@ -\includegraphics[width=0.5\textwidth]{}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_options.txt deleted file mode 100644 index 8d3c45f2a5..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_options.txt +++ /dev/null @@ -1 +0,0 @@ -\includegraphics[scale=.5]{foo/bar.pdf}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_simple.txt deleted file mode 100644 index 629cf3e8a9..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/graphics_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\includegraphics{foo/bar.pdf}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/import_incomplete.txt b/support/texlab/crates/parser/src/test_data/latex/include/import_incomplete.txt deleted file mode 100644 index 3d6bc5f043..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/import_incomplete.txt +++ /dev/null @@ -1 +0,0 @@ -\import{foo
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/import_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/import_simple.txt deleted file mode 100644 index f38059d6c1..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/import_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\import{foo}{bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_options.txt deleted file mode 100644 index e6dd431c7c..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_options.txt +++ /dev/null @@ -1 +0,0 @@ -\includesvg[scale=.5]{foo/bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_simple.txt deleted file mode 100644 index 4e3a4ea9ba..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/inkscape_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\includesvg{foo/bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt b/support/texlab/crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt deleted file mode 100644 index 5a763b4e29..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_equality_sign.txt +++ /dev/null @@ -1 +0,0 @@ -\include{foo=bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/latex_include_simple.txt deleted file mode 100644 index c0d3d390df..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/latex_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\include{foo/bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt b/support/texlab/crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt deleted file mode 100644 index 6585f50d52..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/latex_input_path_brackets.txt +++ /dev/null @@ -1 +0,0 @@ -\input{foo[bar].tex}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_empty.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_empty.txt deleted file mode 100644 index 09e02cc1cc..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_empty.txt +++ /dev/null @@ -1 +0,0 @@ -\usepackage{}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_multiple.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_multiple.txt deleted file mode 100644 index c1080aaf66..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_multiple.txt +++ /dev/null @@ -1 +0,0 @@ -\usepackage{amsmath, lipsum}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_options.txt deleted file mode 100644 index 83a50c12cf..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_options.txt +++ /dev/null @@ -1 +0,0 @@ -\usepackage[foo = bar, baz, qux]{amsmath}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/package_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/package_include_simple.txt deleted file mode 100644 index 3cf1b4edc0..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/package_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\usepackage{amsmath}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt deleted file mode 100644 index 25a2b24720..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/pgf_library_import_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\usepgflibrary{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_options.txt b/support/texlab/crates/parser/src/test_data/latex/include/svg_include_options.txt deleted file mode 100644 index 3eb90568ab..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_options.txt +++ /dev/null @@ -1 +0,0 @@ -\includesvg[scale=.5]{foo/bar.svg}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/svg_include_simple.txt deleted file mode 100644 index 964a3adcd6..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/svg_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\includesvg{foo/bar.svg}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt deleted file mode 100644 index ff616ebd11..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/tikz_library_import_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\usetikzlibrary{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/include/verbatim_include_simple.txt b/support/texlab/crates/parser/src/test_data/latex/include/verbatim_include_simple.txt deleted file mode 100644 index a0b3fec843..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/include/verbatim_include_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\verbatiminput{foo/bar.txt}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/inline.txt b/support/texlab/crates/parser/src/test_data/latex/inline.txt deleted file mode 100644 index 81a429dc26..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/inline.txt +++ /dev/null @@ -1 +0,0 @@ -$x \in [0, \infty)$
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/inline_double_dollar.txt b/support/texlab/crates/parser/src/test_data/latex/inline_double_dollar.txt deleted file mode 100644 index c3a7fee9f6..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/inline_double_dollar.txt +++ /dev/null @@ -1 +0,0 @@ -$$x \in [0, \infty)$$
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_568.txt b/support/texlab/crates/parser/src/test_data/latex/issue_568.txt deleted file mode 100644 index a01a16854d..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_568.txt +++ /dev/null @@ -1,2 +0,0 @@ -\input{|ipython scripts/test.ipynb} -\label{fig:x=2}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_745.txt b/support/texlab/crates/parser/src/test_data/latex/issue_745.txt deleted file mode 100644 index 4cbebeb2d8..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_745.txt +++ /dev/null @@ -1,21 +0,0 @@ -\documentclass{article} -\usepackage{tabularray} - -\ExplSyntaxOn -\NewDocumentEnvironment{exptblr}{O{}m} - { - \use:x - { - \exp_not:N \begin{tblr} - [\exp_not:n{#1}] - {#2} - } - } - { - \end{tblr} - } -\ExplSyntaxOff - -\begin{document} - -\end{document}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_789.txt b/support/texlab/crates/parser/src/test_data/latex/issue_789.txt deleted file mode 100644 index 612c6de786..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_789.txt +++ /dev/null @@ -1 +0,0 @@ -\graphicspath{test}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_828.txt b/support/texlab/crates/parser/src/test_data/latex/issue_828.txt deleted file mode 100644 index 76f973bdbd..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_828.txt +++ /dev/null @@ -1 +0,0 @@ -\verb|<STATEMENT> if(<expr>){<body>else{<body>|
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_853.txt b/support/texlab/crates/parser/src/test_data/latex/issue_853.txt deleted file mode 100644 index 312889717c..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_853.txt +++ /dev/null @@ -1,8 +0,0 @@ -\documentclass{minimal} -\begin{document} -This is an asdf undefined command -\iffalse - \iffalse\fi - \end{enumerate} -\fi -\end{document}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_857.txt b/support/texlab/crates/parser/src/test_data/latex/issue_857.txt deleted file mode 100644 index 0640263c84..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_857.txt +++ /dev/null @@ -1,3 +0,0 @@ -\newcommand\ö{} -\newcommand{\öö}{} -\newcommand\123{}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_874.txt b/support/texlab/crates/parser/src/test_data/latex/issue_874.txt deleted file mode 100644 index adb3e438a2..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_874.txt +++ /dev/null @@ -1 +0,0 @@ -\includegraphics[scale=0.2]{7.4).jpg}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_919.txt b/support/texlab/crates/parser/src/test_data/latex/issue_919.txt deleted file mode 100644 index 40e1b16a03..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_919.txt +++ /dev/null @@ -1,11 +0,0 @@ -\documentclass{article} - -\usepackage{ - lipsum, % provides blindtext - booktabs, % better rules for tables - %xcolor % easily define colors with \definecolor{}{}{} -} - -\begin{document} - \lipsum -\end{document} diff --git a/support/texlab/crates/parser/src/test_data/latex/issue_931.txt b/support/texlab/crates/parser/src/test_data/latex/issue_931.txt deleted file mode 100644 index 8d75cecfae..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/issue_931.txt +++ /dev/null @@ -1 +0,0 @@ -\bibliography{$HOME/Literature}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_line_break.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_definition_line_break.txt deleted file mode 100644 index d567c6d25a..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_line_break.txt +++ /dev/null @@ -1,2 +0,0 @@ -\label{hello -world}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_simple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_definition_simple.txt deleted file mode 100644 index 43ebaf1cec..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_definition_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\label{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_number.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_number.txt deleted file mode 100644 index 6e994af500..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_number.txt +++ /dev/null @@ -1 +0,0 @@ -\newlabel{foo}{{1.1}}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_equation.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_equation.txt deleted file mode 100644 index ab386645df..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_equation.txt +++ /dev/null @@ -1 +0,0 @@ -\eqref{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_incomplete.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_incomplete.txt deleted file mode 100644 index 1d0f79ec8e..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_incomplete.txt +++ /dev/null @@ -1 +0,0 @@ -Equation \eqref{eq is a \emph{useful} identity.
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_multiple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_multiple.txt deleted file mode 100644 index e8bb38ee9e..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_multiple.txt +++ /dev/null @@ -1 +0,0 @@ -\ref{foo, bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_error.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_error.txt deleted file mode 100644 index 9213da0460..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_error.txt +++ /dev/null @@ -1 +0,0 @@ -\crefrange{foo{bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt deleted file mode 100644 index 841133d73a..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_incomplete.txt +++ /dev/null @@ -1 +0,0 @@ -\crefrange{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_simple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_simple.txt deleted file mode 100644 index a0e985ea88..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_range_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\crefrange{foo}{bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_simple.txt b/support/texlab/crates/parser/src/test_data/latex/label/label_reference_simple.txt deleted file mode 100644 index dde4f444f4..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/label/label_reference_simple.txt +++ /dev/null @@ -1 +0,0 @@ -\ref{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/parameter.txt b/support/texlab/crates/parser/src/test_data/latex/parameter.txt deleted file mode 100644 index d44ac7b947..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/parameter.txt +++ /dev/null @@ -1 +0,0 @@ -#1
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/parameter_error.txt b/support/texlab/crates/parser/src/test_data/latex/parameter_error.txt deleted file mode 100644 index 4287ca8617..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/parameter_error.txt +++ /dev/null @@ -1 +0,0 @@ -#
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/paragraphs.txt b/support/texlab/crates/parser/src/test_data/latex/structure/paragraphs.txt deleted file mode 100644 index a7e32353bb..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/structure/paragraphs.txt +++ /dev/null @@ -1,11 +0,0 @@ -\section{Section 1} -Section 1 - -\paragraph{Paragraph 1} -Paragraph 1 - -\paragraph{Paragraph 2} -Paragraph 2 - -\section{Section 2} -Section 2
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_enum_item.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_enum_item.txt deleted file mode 100644 index 3288ec259b..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_enum_item.txt +++ /dev/null @@ -1 +0,0 @@ -\begin{enumerate} \item 1 \item[2] 2 \item 3 \end{enumerate}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt deleted file mode 100644 index 7203dd2d24..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_invalid_nesting.txt +++ /dev/null @@ -1 +0,0 @@ -\section{Foo} \chapter{Bar}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_nested.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_nested.txt deleted file mode 100644 index 082f10765b..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_nested.txt +++ /dev/null @@ -1 +0,0 @@ -\part{1}\chapter{2}\section{3}\subsection{4}\subsubsection{5}\paragraph{6}\subparagraph{7}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/structure/structure_siblings.txt b/support/texlab/crates/parser/src/test_data/latex/structure/structure_siblings.txt deleted file mode 100644 index d8e347c429..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/structure/structure_siblings.txt +++ /dev/null @@ -1 +0,0 @@ -\section{Foo} Foo \section{Bar} Bar
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt deleted file mode 100644 index 286d111ad1..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_full.txt +++ /dev/null @@ -1 +0,0 @@ -\newtheorem{foo}[bar]{Foo}[baz]
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt deleted file mode 100644 index af1b6903a5..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_counter.txt +++ /dev/null @@ -1 +0,0 @@ -\newtheorem{foo}[bar]
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt deleted file mode 100644 index e5d6551666..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description.txt +++ /dev/null @@ -1 +0,0 @@ -\newtheorem{foo}{Foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt deleted file mode 100644 index 89c37d9497..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_name_with_description_and_counter.txt +++ /dev/null @@ -1 +0,0 @@ -\newtheorem{foo}[bar]{Foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt deleted file mode 100644 index 62adb2c4b9..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_only_name.txt +++ /dev/null @@ -1 +0,0 @@ -\newtheorem{foo}
\ No newline at end of file diff --git a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt b/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt deleted file mode 100644 index 2662a5ca8c..0000000000 --- a/support/texlab/crates/parser/src/test_data/latex/theorem_definition/theorem_definition_thmtools.txt +++ /dev/null @@ -1 +0,0 @@ -\declaretheorem[style=foo, name=bar]{baz}
\ No newline at end of file diff --git a/support/texlab/crates/references/Cargo.toml b/support/texlab/crates/references/Cargo.toml index 7aa810487d..49827f8d12 100644 --- a/support/texlab/crates/references/Cargo.toml +++ b/support/texlab/crates/references/Cargo.toml @@ -8,7 +8,7 @@ rust-version.workspace = true [dependencies] base-db = { path = "../base-db" } -rowan = "0.15.11" +rowan = "0.15.13" syntax = { path = "../syntax" } [dev-dependencies] diff --git a/support/texlab/crates/references/src/entry.rs b/support/texlab/crates/references/src/entry.rs index 617ff86304..c3926058e6 100644 --- a/support/texlab/crates/references/src/entry.rs +++ b/support/texlab/crates/references/src/entry.rs @@ -1,7 +1,7 @@ use base_db::{ semantics::{bib, tex}, util::queries::{self, Object}, - DocumentData, + DocumentData, DocumentLocation, }; use crate::{Reference, ReferenceContext, ReferenceKind}; @@ -9,7 +9,7 @@ use crate::{Reference, ReferenceContext, ReferenceKind}; pub(super) fn find_all(context: &mut ReferenceContext) -> Option<()> { let offset = context.params.offset; - let name = match &context.params.document.data { + let name = match &context.params.feature.document.data { DocumentData::Tex(data) => { let result = queries::object_at_cursor( &data.semantics.citations, @@ -29,18 +29,17 @@ pub(super) fn find_all(context: &mut ReferenceContext) -> Option<()> { _ => return None, }; - for (document, obj) in queries::objects_with_name::<tex::Citation>(&context.project, name) { + let project = &context.params.feature.project; + for (document, obj) in queries::objects_with_name::<tex::Citation>(&project, name) { context.results.push(Reference { - document, - range: obj.name.range, + location: DocumentLocation::new(document, obj.name.range), kind: ReferenceKind::Reference, }); } - for (document, obj) in queries::objects_with_name::<bib::Entry>(&context.project, name) { + for (document, obj) in queries::objects_with_name::<bib::Entry>(&project, name) { context.results.push(Reference { - document, - range: obj.name.range, + location: DocumentLocation::new(document, obj.name.range), kind: ReferenceKind::Definition, }); } diff --git a/support/texlab/crates/references/src/label.rs b/support/texlab/crates/references/src/label.rs index 5ed8096c5c..872ef2dd14 100644 --- a/support/texlab/crates/references/src/label.rs +++ b/support/texlab/crates/references/src/label.rs @@ -1,26 +1,27 @@ use base_db::{ semantics::tex, util::queries::{self, Object}, + DocumentLocation, }; use crate::{Reference, ReferenceContext, ReferenceKind}; pub(super) fn find_all(context: &mut ReferenceContext) -> Option<()> { - let data = context.params.document.data.as_tex()?; + let data = context.params.feature.document.data.as_tex()?; let mode = queries::SearchMode::Full; let name = queries::object_at_cursor(&data.semantics.labels, context.params.offset, mode)? .object .name_text(); - for (document, label) in queries::objects_with_name::<tex::Label>(&context.project, name) { + let project = &context.params.feature.project; + for (document, label) in queries::objects_with_name::<tex::Label>(&project, name) { let kind = match label.kind { tex::LabelKind::Definition => ReferenceKind::Definition, tex::LabelKind::Reference | tex::LabelKind::ReferenceRange => ReferenceKind::Reference, }; context.results.push(Reference { - document, - range: label.name.range, + location: DocumentLocation::new(document, label.name.range), kind, }); } diff --git a/support/texlab/crates/references/src/lib.rs b/support/texlab/crates/references/src/lib.rs index 76cd8ce53c..c223ad8eba 100644 --- a/support/texlab/crates/references/src/lib.rs +++ b/support/texlab/crates/references/src/lib.rs @@ -2,13 +2,12 @@ mod entry; mod label; mod string_def; -use base_db::{Document, Project, Workspace}; -use rowan::{TextRange, TextSize}; +use base_db::{DocumentLocation, FeatureParams}; +use rowan::TextSize; #[derive(Debug)] -pub struct Reference<'db> { - pub document: &'db Document, - pub range: TextRange, +pub struct Reference<'a> { + pub location: DocumentLocation<'a>, pub kind: ReferenceKind, } @@ -19,24 +18,20 @@ pub enum ReferenceKind { } #[derive(Debug)] -pub struct ReferenceParams<'db> { - pub workspace: &'db Workspace, - pub document: &'db Document, +pub struct ReferenceParams<'a> { + pub feature: FeatureParams<'a>, pub offset: TextSize, } #[derive(Debug)] -struct ReferenceContext<'db> { - params: ReferenceParams<'db>, - project: Project<'db>, - results: Vec<Reference<'db>>, +struct ReferenceContext<'a> { + params: ReferenceParams<'a>, + results: Vec<Reference<'a>>, } pub fn find_all(params: ReferenceParams) -> Vec<Reference<'_>> { - let project = params.workspace.project(params.document); let mut context = ReferenceContext { params, - project, results: Vec::new(), }; diff --git a/support/texlab/crates/references/src/string_def.rs b/support/texlab/crates/references/src/string_def.rs index 9657686079..18b28d49e2 100644 --- a/support/texlab/crates/references/src/string_def.rs +++ b/support/texlab/crates/references/src/string_def.rs @@ -1,10 +1,11 @@ +use base_db::DocumentLocation; use rowan::ast::AstNode; use syntax::bibtex; use crate::{Reference, ReferenceContext, ReferenceKind}; pub(super) fn find_all(context: &mut ReferenceContext) -> Option<()> { - let document = context.params.document; + let document = context.params.feature.document; let data = document.data.as_bib()?; let root = data.root_node(); let name = root @@ -18,8 +19,7 @@ pub(super) fn find_all(context: &mut ReferenceContext) -> Option<()> { for string in &data.semantics.strings { if string.name.text == name.text() { context.results.push(Reference { - document, - range: string.name.range, + location: DocumentLocation::new(document, string.name.range), kind: ReferenceKind::Definition, }); } @@ -32,8 +32,7 @@ pub(super) fn find_all(context: &mut ReferenceContext) -> Option<()> { .filter(|token| token.text() == name.text()) { context.results.push(Reference { - document, - range: token.text_range(), + location: DocumentLocation::new(document, token.text_range()), kind: ReferenceKind::Reference, }); } diff --git a/support/texlab/crates/references/src/tests.rs b/support/texlab/crates/references/src/tests.rs index 03a83c5f14..3a3e7008a0 100644 --- a/support/texlab/crates/references/src/tests.rs +++ b/support/texlab/crates/references/src/tests.rs @@ -4,30 +4,13 @@ use crate::{ReferenceKind, ReferenceParams}; fn check(fixture: &str, include_def: bool) { let fixture = test_utils::fixture::Fixture::parse(fixture); - let workspace = &fixture.workspace; + let (feature, offset) = fixture.make_params().unwrap(); - let expected = fixture - .documents - .iter() - .flat_map(|document| document.ranges.iter().map(|&range| (&document.uri, range))) - .collect::<HashSet<_>>(); - - let (document, offset) = fixture - .documents - .iter() - .find_map(|document| Some((workspace.lookup(&document.uri)?, document.cursor?))) - .unwrap(); - - let params = ReferenceParams { - workspace, - document, - offset, - }; - - let actual = crate::find_all(params) + let expected = fixture.locations().collect::<HashSet<_>>(); + let actual = crate::find_all(ReferenceParams { feature, offset }) .into_iter() .filter(|reference| reference.kind == ReferenceKind::Reference || include_def) - .map(|reference| (&reference.document.uri, reference.range)) + .map(|reference| reference.location) .collect::<HashSet<_>>(); assert_eq!(actual, expected); diff --git a/support/texlab/crates/rename/Cargo.toml b/support/texlab/crates/rename/Cargo.toml index 90cf4f4197..127b3316d7 100644 --- a/support/texlab/crates/rename/Cargo.toml +++ b/support/texlab/crates/rename/Cargo.toml @@ -8,7 +8,7 @@ rust-version.workspace = true [dependencies] base-db = { path = "../base-db" } -rowan = "0.15.11" +rowan = "0.15.13" rustc-hash = "1.1.0" syntax = { path = "../syntax" } diff --git a/support/texlab/crates/rename/src/command.rs b/support/texlab/crates/rename/src/command.rs index eacf411710..edcf7db61e 100644 --- a/support/texlab/crates/rename/src/command.rs +++ b/support/texlab/crates/rename/src/command.rs @@ -5,7 +5,7 @@ use syntax::latex; use crate::{RenameBuilder, RenameParams}; pub(super) fn prepare_rename(params: &RenameParams) -> Option<Span> { - let data = params.inner.document.data.as_tex()?; + let data = params.feature.document.data.as_tex()?; let token = data .root_node() .token_at_offset(params.offset) @@ -22,7 +22,7 @@ pub(super) fn prepare_rename(params: &RenameParams) -> Option<Span> { pub(super) fn rename<'a>(builder: &mut RenameBuilder) -> Option<()> { let name = prepare_rename(&builder.params)?; - for document in &builder.params.inner.project.documents { + for document in &builder.params.feature.project.documents { let DocumentData::Tex(data) = &document.data else { continue; }; diff --git a/support/texlab/crates/rename/src/entry.rs b/support/texlab/crates/rename/src/entry.rs index 11800f1371..c0b508a506 100644 --- a/support/texlab/crates/rename/src/entry.rs +++ b/support/texlab/crates/rename/src/entry.rs @@ -7,7 +7,7 @@ use base_db::{ use crate::{RenameBuilder, RenameParams}; pub(super) fn prepare_rename(params: &RenameParams) -> Option<Span> { - match ¶ms.inner.document.data { + match ¶ms.feature.document.data { DocumentData::Tex(data) => { let result = queries::object_at_cursor( &data.semantics.citations, @@ -33,7 +33,7 @@ pub(super) fn prepare_rename(params: &RenameParams) -> Option<Span> { pub(super) fn rename<'a>(builder: &mut RenameBuilder) -> Option<()> { let name = prepare_rename(&builder.params)?; - let project = &builder.params.inner.project; + let project = &builder.params.feature.project; let citations = queries::objects_with_name::<tex::Citation>(project, &name.text) .map(|(doc, obj)| (doc, obj.name.range)); diff --git a/support/texlab/crates/rename/src/label.rs b/support/texlab/crates/rename/src/label.rs index 983cc4f912..b21e1b795e 100644 --- a/support/texlab/crates/rename/src/label.rs +++ b/support/texlab/crates/rename/src/label.rs @@ -6,7 +6,7 @@ use base_db::{ use crate::{RenameBuilder, RenameParams}; pub(super) fn prepare_rename(params: &RenameParams) -> Option<Span> { - let data = params.inner.document.data.as_tex()?; + let data = params.feature.document.data.as_tex()?; let labels = &data.semantics.labels; let label = queries::object_at_cursor(labels, params.offset, queries::SearchMode::Name)?; Some(Span::new(label.object.name.text.clone(), label.range)) @@ -15,7 +15,7 @@ pub(super) fn prepare_rename(params: &RenameParams) -> Option<Span> { pub(super) fn rename(builder: &mut RenameBuilder) -> Option<()> { let name = prepare_rename(&builder.params)?; - let project = &builder.params.inner.project; + let project = &builder.params.feature.project; for (document, label) in queries::objects_with_name::<tex::Label>(project, &name.text) { let entry = builder.result.changes.entry(document); entry.or_default().push(label.name_range()); diff --git a/support/texlab/crates/rename/src/lib.rs b/support/texlab/crates/rename/src/lib.rs index d9b28c3586..b7dd197ce0 100644 --- a/support/texlab/crates/rename/src/lib.rs +++ b/support/texlab/crates/rename/src/lib.rs @@ -7,19 +7,19 @@ use rowan::{TextRange, TextSize}; use rustc_hash::FxHashMap; #[derive(Debug)] -pub struct RenameParams<'db> { - pub inner: FeatureParams<'db>, +pub struct RenameParams<'a> { + pub feature: FeatureParams<'a>, pub offset: TextSize, } #[derive(Debug, Default)] -pub struct RenameResult<'db> { - pub changes: FxHashMap<&'db Document, Vec<TextRange>>, +pub struct RenameResult<'a> { + pub changes: FxHashMap<&'a Document, Vec<TextRange>>, } -struct RenameBuilder<'db> { - params: &'db RenameParams<'db>, - result: RenameResult<'db>, +struct RenameBuilder<'a> { + params: RenameParams<'a>, + result: RenameResult<'a>, } pub fn prepare_rename(params: &RenameParams) -> Option<TextRange> { @@ -29,7 +29,7 @@ pub fn prepare_rename(params: &RenameParams) -> Option<TextRange> { .map(|span| span.range) } -pub fn rename<'db>(params: &'db RenameParams<'db>) -> RenameResult<'db> { +pub fn rename<'a>(params: RenameParams<'a>) -> RenameResult<'a> { let result = RenameResult::default(); let mut builder = RenameBuilder { params, result }; diff --git a/support/texlab/crates/rename/src/tests.rs b/support/texlab/crates/rename/src/tests.rs index d931e92798..0f4263033e 100644 --- a/support/texlab/crates/rename/src/tests.rs +++ b/support/texlab/crates/rename/src/tests.rs @@ -1,4 +1,3 @@ -use base_db::FeatureParams; use rustc_hash::FxHashMap; use crate::RenameParams; @@ -14,20 +13,13 @@ fn check(input: &str) { } } - let (document, offset) = fixture - .documents - .iter() - .find_map(|spec| Some((fixture.workspace.lookup(&spec.uri)?, spec.cursor?))) - .unwrap(); - - let inner = FeatureParams::new(&fixture.workspace, document); - let params = RenameParams { inner, offset }; - let actual = crate::rename(¶ms); + let (feature, offset) = fixture.make_params().unwrap(); + let actual = crate::rename(RenameParams { feature, offset }); assert_eq!(actual.changes, expected); } #[test] -fn command() { +fn test_command() { check( r#" %! foo.tex @@ -44,7 +36,7 @@ fn command() { } #[test] -fn entry() { +fn test_entry() { check( r#" %! main.bib @@ -61,7 +53,7 @@ fn entry() { } #[test] -fn citation() { +fn test_citation() { check( r#" %! main.bib @@ -78,7 +70,7 @@ fn citation() { } #[test] -fn label() { +fn test_label() { check( r#" %! foo.tex diff --git a/support/texlab/crates/symbols/Cargo.toml b/support/texlab/crates/symbols/Cargo.toml index 19a9c44964..5386efdcf9 100644 --- a/support/texlab/crates/symbols/Cargo.toml +++ b/support/texlab/crates/symbols/Cargo.toml @@ -12,13 +12,14 @@ doctest = false [dependencies] base-db = { path = "../base-db" } distro = { path = "../distro" } -itertools = "0.11.0" -rowan = "0.15.11" +itertools = "0.12.0" +line-index = { path = "../line-index" } +rowan = "0.15.13" syntax = { path = "../syntax" } titlecase = "2.2.1" -url = "=2.3.1" +url = "2.5.0" [dev-dependencies] -regex = "1.9.1" +regex = "1.10.2" test-utils = { path = "../test-utils" } expect-test = "1.4.1" diff --git a/support/texlab/crates/symbols/src/document.rs b/support/texlab/crates/symbols/src/document.rs index b34974e019..e8f1087051 100644 --- a/support/texlab/crates/symbols/src/document.rs +++ b/support/texlab/crates/symbols/src/document.rs @@ -22,6 +22,7 @@ pub fn document_symbols(workspace: &Workspace, document: &Document) -> Vec<Symbo DocumentData::Aux(_) | DocumentData::Log(_) | DocumentData::Root + | DocumentData::Latexmkrc(_) | DocumentData::Tectonic => Vec::new(), }; diff --git a/support/texlab/crates/symbols/src/workspace/sort.rs b/support/texlab/crates/symbols/src/workspace/sort.rs index 0e24c25ac9..75d80a02eb 100644 --- a/support/texlab/crates/symbols/src/workspace/sort.rs +++ b/support/texlab/crates/symbols/src/workspace/sort.rs @@ -38,8 +38,9 @@ impl<'a> From<&'a Workspace> for ProjectOrdering<'a> { #[cfg(test)] mod tests { - use base_db::{util::LineCol, Owner}; + use base_db::Owner; use distro::Language; + use line_index::LineCol; use super::{ProjectOrdering, Url, Workspace}; diff --git a/support/texlab/crates/symbols/src/workspace/tests.rs b/support/texlab/crates/symbols/src/workspace/tests.rs index 26bdefa6b6..3fecd58a57 100644 --- a/support/texlab/crates/symbols/src/workspace/tests.rs +++ b/support/texlab/crates/symbols/src/workspace/tests.rs @@ -75,7 +75,7 @@ fn check(query: &str, expect: Expect) { } #[test] -fn filter_type_section() { +fn test_filter_type_section() { check( "section", expect![[r#" @@ -158,7 +158,7 @@ fn filter_type_section() { } #[test] -fn filter_type_figure() { +fn test_filter_type_figure() { check( "figure", expect![[r#" @@ -187,7 +187,7 @@ fn filter_type_figure() { } #[test] -fn filter_type_item() { +fn test_filter_type_item() { check( "item", expect![[r#" @@ -252,7 +252,7 @@ fn filter_type_item() { } #[test] -fn filter_type_math() { +fn test_filter_type_math() { check( "math", expect![[r#" @@ -299,7 +299,7 @@ fn filter_type_math() { } #[test] -fn filter_bibtex() { +fn test_filter_bibtex() { check( "bibtex", expect![[r#" diff --git a/support/texlab/crates/syntax/Cargo.toml b/support/texlab/crates/syntax/Cargo.toml index 8477e01e0d..5e6c69409a 100644 --- a/support/texlab/crates/syntax/Cargo.toml +++ b/support/texlab/crates/syntax/Cargo.toml @@ -7,8 +7,8 @@ edition.workspace = true rust-version.workspace = true [dependencies] -itertools = "0.11.0" -rowan = "0.15.11" +itertools = "0.12.0" +rowan = "0.15.13" [lib] doctest = false diff --git a/support/texlab/crates/syntax/src/latexmkrc.rs b/support/texlab/crates/syntax/src/latexmkrc.rs new file mode 100644 index 0000000000..41cc5b9bbf --- /dev/null +++ b/support/texlab/crates/syntax/src/latexmkrc.rs @@ -0,0 +1,5 @@ +#[derive(Debug, Clone, Default)] +pub struct LatexmkrcData { + pub aux_dir: Option<String>, + pub out_dir: Option<String>, +} diff --git a/support/texlab/crates/syntax/src/lib.rs b/support/texlab/crates/syntax/src/lib.rs index dc8761b73d..35f1bb8c52 100644 --- a/support/texlab/crates/syntax/src/lib.rs +++ b/support/texlab/crates/syntax/src/lib.rs @@ -1,5 +1,6 @@ pub mod bibtex; pub mod latex; +pub mod latexmkrc; #[derive(Debug, PartialEq, Eq, Clone, Copy, PartialOrd, Ord, Hash)] pub enum BuildErrorLevel { diff --git a/support/texlab/crates/test-utils/Cargo.toml b/support/texlab/crates/test-utils/Cargo.toml index 6426dad920..16a0099b04 100644 --- a/support/texlab/crates/test-utils/Cargo.toml +++ b/support/texlab/crates/test-utils/Cargo.toml @@ -9,8 +9,9 @@ rust-version.workspace = true [dependencies] base-db = { path = "../base-db" } distro = { path = "../distro" } -rowan = "0.15.11" -url = "=2.3.1" +line-index = { path = "../line-index" } +rowan = "0.15.13" +url = "2.5.0" [lib] doctest = false diff --git a/support/texlab/crates/test-utils/src/fixture.rs b/support/texlab/crates/test-utils/src/fixture.rs index 55ab162d28..9a768035c8 100644 --- a/support/texlab/crates/test-utils/src/fixture.rs +++ b/support/texlab/crates/test-utils/src/fixture.rs @@ -1,9 +1,7 @@ use std::path::PathBuf; -use base_db::{ - util::{LineCol, LineIndex}, - Owner, Workspace, -}; +use base_db::{DocumentLocation, FeatureParams, Owner, Workspace}; +use line_index::{LineCol, LineIndex}; use rowan::{TextRange, TextSize}; use url::Url; @@ -47,6 +45,28 @@ impl Fixture { documents, } } + + pub fn make_params(&self) -> Option<(FeatureParams, TextSize)> { + let spec = self + .documents + .iter() + .find(|spec| spec.cursor.is_some()) + .or_else(|| self.documents.first())?; + + let document = self.workspace.lookup(&spec.uri)?; + let params = FeatureParams::new(&self.workspace, document); + let cursor = spec.cursor.unwrap_or_default(); + Some((params, cursor)) + } + + pub fn locations(&self) -> impl Iterator<Item = DocumentLocation> { + self.documents.iter().flat_map(|spec| { + let document = self.workspace.lookup(&spec.uri).unwrap(); + spec.ranges + .iter() + .map(|range| DocumentLocation::new(document, *range)) + }) + } } #[derive(Debug)] @@ -99,10 +119,10 @@ impl DocumentSpec { let line_index = LineIndex::new(&text); - let cursor = cursor.map(|cursor| cursor.to_offset(&text, &line_index)); + let cursor = cursor.and_then(|cursor| cursor.to_offset(&text, &line_index)); let ranges = ranges .into_iter() - .map(|range| range.to_offset(&text, &line_index)) + .filter_map(|range| range.to_offset(&text, &line_index)) .collect(); Self { @@ -125,11 +145,11 @@ impl CharacterPosition { Self { line, col } } - fn to_offset(self, text: &str, line_index: &LineIndex) -> TextSize { + fn to_offset(self, text: &str, line_index: &LineIndex) -> Option<TextSize> { let start = line_index.offset(LineCol { line: (self.line - 1) as u32, col: 0, - }); + })?; let slice = &text[start.into()..]; let len = slice @@ -137,7 +157,7 @@ impl CharacterPosition { .nth(self.col) .map_or_else(|| slice.len(), |(i, _)| i); - start + TextSize::try_from(len).unwrap() + Some(start + TextSize::try_from(len).ok()?) } } @@ -152,9 +172,9 @@ impl CharacterRange { Self { start, end } } - fn to_offset(self, text: &str, line_index: &LineIndex) -> TextRange { - let start = self.start.to_offset(text, line_index); - let end = self.end.to_offset(text, line_index); - TextRange::new(start, end) + fn to_offset(self, text: &str, line_index: &LineIndex) -> Option<TextRange> { + let start = self.start.to_offset(text, line_index)?; + let end = self.end.to_offset(text, line_index)?; + Some(TextRange::new(start, end)) } } diff --git a/support/texlab/crates/texlab/Cargo.toml b/support/texlab/crates/texlab/Cargo.toml index 9b120d7884..099e0cc8c7 100644 --- a/support/texlab/crates/texlab/Cargo.toml +++ b/support/texlab/crates/texlab/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "texlab" description = "LaTeX Language Server" -version = "5.11.0" +version = "5.12.0" license.workspace = true readme = "README.md" authors.workspace = true @@ -12,7 +12,7 @@ repository = "https://github.com/latex-lsp/texlab" documentation = "https://github.com/latex-lsp/texlab" keywords = ["lsp", "server", "latex", "bibtex"] categories = ["development-tools"] -exclude = ["tests/it/**", "*.snap"] +exclude = ["*.snap"] [[bin]] name = "texlab" @@ -24,8 +24,9 @@ doctest = false [dependencies] anyhow = "1.0.75" base-db = { path = "../base-db" } +bibfmt = { path = "../bibfmt" } citeproc = { path = "../citeproc" } -clap = { version = "4.4.4", features = ["derive"] } +clap = { version = "4.4.10", features = ["derive"] } commands = { path = "../commands" } completion = { path = "../completion" } completion-data = { path = "../completion-data" } @@ -37,10 +38,11 @@ encoding_rs = "0.8.33" encoding_rs_io = "0.1.7" fern = "0.6.2" folding = { path = "../folding" } -fuzzy-matcher = { version = "0.3.7", features = ["compact"] } +highlights = { path = "../highlights" } hover = { path = "../hover" } inlay-hints = { path = "../inlay-hints" } -itertools = "0.11.0" +line-index = { path = "../line-index" } +links = { path = "../links" } log = "0.4.19" lsp-server = "0.7.4" lsp-types = "0.94.1" @@ -49,25 +51,22 @@ notify-debouncer-full = "0.3.1" once_cell = "1.18.0" parking_lot = "0.12.1" parser = { path = "../parser" } -rayon = "1.8.0" references = { path = "../references" } -regex = "1.9.5" +regex = "1.10.2" rename = { path = "../rename" } -rowan = "0.15.11" +rowan = "0.15.13" rustc-hash = "1.1.0" -serde = "1.0.188" -serde_json = "1.0.107" +serde = "1.0.193" +serde_json = "1.0.108" serde_regex = "1.1.0" -serde_repr = "0.1.16" +serde_repr = "0.1.17" symbols = { path = "../symbols" } syntax = { path = "../syntax" } tempfile = "3.8.0" threadpool = "1.8.1" [dev-dependencies] -assert_unordered = "0.3.5" criterion = { version = "0.5.1" } -insta = { version = "1.32.0", features = ["glob", "redactions", "json"] } [[bench]] name = "bench_main" diff --git a/support/texlab/crates/texlab/benches/bench_main.rs b/support/texlab/crates/texlab/benches/bench_main.rs index da98e63bfb..0f54a2c2d1 100644 --- a/support/texlab/crates/texlab/benches/bench_main.rs +++ b/support/texlab/crates/texlab/benches/bench_main.rs @@ -1,6 +1,7 @@ -use base_db::{util::LineCol, Owner, Workspace}; +use base_db::{Owner, Workspace}; use criterion::{black_box, criterion_group, criterion_main, Criterion}; use distro::Language; +use line_index::LineCol; use lsp_types::{ClientCapabilities, CompletionParams, Position, TextDocumentPositionParams, Url}; use parser::{parse_latex, SyntaxConfig}; @@ -12,7 +13,7 @@ fn criterion_benchmark(c: &mut Criterion) { b.iter(|| parse_latex(black_box(CODE), &config)); }); - c.bench_function("LaTeX/Completion/Command_v2", |b| { + c.bench_function("LaTeX/Completion/Command", |b| { let uri = Url::parse("http://example.com/texlab.tex").unwrap(); let text = CODE.to_string(); let mut workspace = Workspace::default(); diff --git a/support/texlab/crates/texlab/src/features/completion.rs b/support/texlab/crates/texlab/src/features/completion.rs index e02b39c2c6..8e5fa2adbb 100644 --- a/support/texlab/crates/texlab/src/features/completion.rs +++ b/support/texlab/crates/texlab/src/features/completion.rs @@ -1,11 +1,9 @@ -use base_db::{ - util::{LineIndex, RenderedObject}, - Document, FeatureParams, Workspace, -}; +use base_db::{util::RenderedObject, Document, FeatureParams, Workspace}; use completion::{ ArgumentData, CompletionItem, CompletionItemData, CompletionParams, EntryTypeData, FieldTypeData, }; +use line_index::LineIndex; use lsp_types::{ClientCapabilities, ClientInfo, CompletionList}; use serde::{Deserialize, Serialize}; @@ -23,7 +21,7 @@ pub fn complete( let feature = FeatureParams::new(workspace, document); let offset = document .line_index - .offset_lsp(params.text_document_position.position); + .offset_lsp(params.text_document_position.position)?; let params = CompletionParams { feature, offset }; let result = completion::complete(¶ms); @@ -36,7 +34,7 @@ pub fn complete( .items .into_iter() .enumerate() - .map(|(i, item)| item_builder.convert(item, i)) + .filter_map(|(i, item)| item_builder.convert(item, i)) .collect(); Some(list) @@ -70,9 +68,9 @@ impl<'a> ItemBuilder<'a> { } } - pub fn convert(&self, item: CompletionItem, index: usize) -> lsp_types::CompletionItem { + pub fn convert(&self, item: CompletionItem, index: usize) -> Option<lsp_types::CompletionItem> { let mut result = lsp_types::CompletionItem::default(); - let range = self.line_index.line_col_lsp_range(item.range); + let range = self.line_index.line_col_lsp_range(item.range)?; match item.data { CompletionItemData::Command(data) => { @@ -134,7 +132,7 @@ impl<'a> ItemBuilder<'a> { result.sort_text = Some(format!("{:0>2}", index)); result.preselect = Some(item.preselect); - result + Some(result) } fn convert_command( @@ -171,7 +169,7 @@ impl<'a> ItemBuilder<'a> { if self.supports_snippets { result.kind = Some(Structure::Snippet.completion_kind()); result.text_edit = - Some(lsp_types::TextEdit::new(range, "begin{$1}\n\t\n\\end{$1}".into()).into()); + Some(lsp_types::TextEdit::new(range, "begin{$1}\n\t$0\n\\end{$1}".into()).into()); result.insert_text_format = Some(lsp_types::InsertTextFormat::SNIPPET); } else { diff --git a/support/texlab/crates/texlab/src/features/definition.rs b/support/texlab/crates/texlab/src/features/definition.rs index d450831e1f..ec7f08c296 100644 --- a/support/texlab/crates/texlab/src/features/definition.rs +++ b/support/texlab/crates/texlab/src/features/definition.rs @@ -1,4 +1,4 @@ -use base_db::Workspace; +use base_db::{FeatureParams, Workspace}; use definition::DefinitionParams; use lsp_types::{GotoDefinitionResponse, LocationLink, Position, Url}; @@ -10,35 +10,40 @@ pub fn goto_definition( position: Position, ) -> Option<GotoDefinitionResponse> { let document = workspace.lookup(uri)?; - let offset = document.line_index.offset_lsp(position); - let params = DefinitionParams { - workspace, - document, - offset, - }; + let offset = document.line_index.offset_lsp(position)?; + let feature = FeatureParams::new(workspace, document); + let params = DefinitionParams { feature, offset }; let mut links = Vec::new(); for result in definition::goto_definition(params) { - let origin_selection_range = Some( - document - .line_index - .line_col_lsp_range(result.origin_selection_range), - ); - - let target_line_index = &result.target.line_index; - let target_uri = result.target.uri.clone(); - let target_range = target_line_index.line_col_lsp_range(result.target_range); - - let target_selection_range = - target_line_index.line_col_lsp_range(result.target_selection_range); - - links.push(LocationLink { - origin_selection_range, - target_uri, - target_range, - target_selection_range, - }); + if let Some(link) = convert_link(document, result) { + links.push(link); + } } Some(GotoDefinitionResponse::Link(links)) } + +fn convert_link( + document: &base_db::Document, + result: definition::DefinitionResult<'_>, +) -> Option<LocationLink> { + let origin_selection_range = Some( + document + .line_index + .line_col_lsp_range(result.origin_selection_range)?, + ); + + let target_line_index = &result.target.line_index; + let target_uri = result.target.uri.clone(); + let target_range = target_line_index.line_col_lsp_range(result.target_range)?; + let target_selection_range = + target_line_index.line_col_lsp_range(result.target_selection_range)?; + let value = LocationLink { + origin_selection_range, + target_uri, + target_range, + target_selection_range, + }; + Some(value) +} diff --git a/support/texlab/crates/texlab/src/features/folding.rs b/support/texlab/crates/texlab/src/features/folding.rs index 6de4ef0d22..6bdfc3a309 100644 --- a/support/texlab/crates/texlab/src/features/folding.rs +++ b/support/texlab/crates/texlab/src/features/folding.rs @@ -18,27 +18,29 @@ pub fn find_all( .is_some(); let document = workspace.lookup(uri)?; - let foldings = folding::find_all(document).into_iter().map(|folding| { - let range = document.line_index.line_col_lsp_range(folding.range); + let foldings = folding::find_all(document) + .into_iter() + .filter_map(|folding| { + let range = document.line_index.line_col_lsp_range(folding.range)?; - let kind = if custom_kinds { - Some(match folding.kind { - FoldingRangeKind::Section => "section", - FoldingRangeKind::Environment => "environment", - FoldingRangeKind::Entry => "entry", - }) - } else { - None - }; + let kind = if custom_kinds { + Some(match folding.kind { + FoldingRangeKind::Section => "section", + FoldingRangeKind::Environment => "environment", + FoldingRangeKind::Entry => "entry", + }) + } else { + None + }; - serde_json::json!({ - "startLine": range.start.line, - "startCharacter": range.start.character, - "endLine": range.end.line, - "endCharacter": range.end.character, - "kind": kind, - }) - }); + Some(serde_json::json!({ + "startLine": range.start.line, + "startCharacter": range.start.character, + "endLine": range.end.line, + "endCharacter": range.end.character, + "kind": kind, + })) + }); Some(foldings.collect()) } diff --git a/support/texlab/crates/texlab/src/features/formatting.rs b/support/texlab/crates/texlab/src/features/formatting.rs index f16ee8e243..9073b04aa3 100644 --- a/support/texlab/crates/texlab/src/features/formatting.rs +++ b/support/texlab/crates/texlab/src/features/formatting.rs @@ -24,6 +24,10 @@ pub fn format_source_code( Formatter::Server => format_bibtex_internal(workspace, document, options), Formatter::LatexIndent => format_with_latexindent(workspace, document), }, - Language::Aux | Language::Log | Language::Root | Language::Tectonic => None, + Language::Aux + | Language::Log + | Language::Root + | Language::Latexmkrc + | Language::Tectonic => None, } } diff --git a/support/texlab/crates/texlab/src/features/formatting/bibtex_internal.rs b/support/texlab/crates/texlab/src/features/formatting/bibtex_internal.rs index 2b16939f43..0070765b4b 100644 --- a/support/texlab/crates/texlab/src/features/formatting/bibtex_internal.rs +++ b/support/texlab/crates/texlab/src/features/formatting/bibtex_internal.rs @@ -1,7 +1,6 @@ -use base_db::{util::LineIndex, Document, Workspace}; +use base_db::{Document, Workspace}; use lsp_types::{FormattingOptions, TextEdit}; -use rowan::{ast::AstNode, NodeOrToken}; -use syntax::bibtex::{self, HasName, HasType, HasValue}; +use rowan::{TextLen, TextRange}; use crate::util::line_index_ext::LineIndexExt; @@ -10,189 +9,15 @@ pub fn format_bibtex_internal( document: &Document, options: &FormattingOptions, ) -> Option<Vec<TextEdit>> { - let mut indent = String::new(); - - if options.insert_spaces { - for _ in 0..options.tab_size { - indent.push(' '); - } - } else { - indent.push('\t'); - } - - let line_length = workspace.config().formatting.line_length; - - let line_index = &document.line_index; - let data = document.data.as_bib()?; - let mut edits = Vec::new(); - - for node in data.root_node().children().filter(|node| { - matches!( - node.kind(), - bibtex::PREAMBLE | bibtex::STRING | bibtex::ENTRY - ) - }) { - let range = node.text_range(); - - let mut formatter = - Formatter::new(indent.clone(), options.tab_size, line_length, line_index); - - formatter.visit_node(node); - edits.push(TextEdit { - range: line_index.line_col_lsp_range(range), - new_text: formatter.output, - }); - } - - Some(edits) -} - -struct Formatter<'a> { - indent: String, - tab_size: u32, - line_length: usize, - output: String, - align: Vec<usize>, - line_index: &'a LineIndex, -} - -impl<'a> Formatter<'a> { - fn new(indent: String, tab_size: u32, line_length: usize, line_index: &'a LineIndex) -> Self { - Self { - indent, - tab_size, - line_length, - output: String::new(), - align: Vec::new(), - line_index, - } - } - - fn visit_token_lowercase(&mut self, token: &bibtex::SyntaxToken) { - self.output.push_str(&token.text().to_lowercase()); - } - - fn should_insert_space( - &self, - previous: &bibtex::SyntaxToken, - current: &bibtex::SyntaxToken, - ) -> bool { - let previous_range = self.line_index.line_col_lsp_range(previous.text_range()); - let current_range = self.line_index.line_col_lsp_range(current.text_range()); - previous_range.start.line != current_range.start.line - || previous_range.end.character < current_range.start.character - } - - fn base_align(&self) -> usize { - self.output[self.output.rfind('\n').unwrap_or(0)..] - .chars() - .count() - } - - fn visit_node(&mut self, parent: bibtex::SyntaxNode) { - match parent.kind() { - bibtex::PREAMBLE => { - let preamble = bibtex::Preamble::cast(parent).unwrap(); - self.visit_token_lowercase(&preamble.type_token().unwrap()); - self.output.push('{'); - if preamble.syntax().children().next().is_some() { - self.align.push(self.base_align()); - for node in preamble.syntax().children() { - self.visit_node(node); - } - self.output.push('}'); - } - } - bibtex::STRING => { - let string = bibtex::StringDef::cast(parent).unwrap(); - self.visit_token_lowercase(&string.type_token().unwrap()); - self.output.push('{'); - if let Some(name) = string.name_token() { - self.output.push_str(name.text()); - self.output.push_str(" = "); - if let Some(value) = string.value() { - self.align.push(self.base_align()); - self.visit_node(value.syntax().clone()); - self.output.push('}'); - } - } - } - bibtex::ENTRY => { - let entry = bibtex::Entry::cast(parent).unwrap(); - self.visit_token_lowercase(&entry.type_token().unwrap()); - self.output.push('{'); - if let Some(key) = entry.name_token() { - self.output.push_str(&key.to_string()); - self.output.push(','); - self.output.push('\n'); - for field in entry.fields() { - self.visit_node(field.syntax().clone()); - } - self.output.push('}'); - } - } - bibtex::FIELD => { - let field = bibtex::Field::cast(parent).unwrap(); - self.output.push_str(&self.indent); - let name = field.name_token().unwrap(); - self.output.push_str(name.text()); - self.output.push_str(" = "); - if let Some(value) = field.value() { - let count = name.text().chars().count(); - self.align.push(self.tab_size as usize + count + 3); - self.visit_node(value.syntax().clone()); - self.output.push(','); - self.output.push('\n'); - } - } - kind if bibtex::Value::can_cast(kind) => { - let tokens: Vec<_> = parent - .descendants_with_tokens() - .filter_map(|element| element.into_token()) - .filter(|token| token.kind() != bibtex::WHITESPACE) - .collect(); - - self.output.push_str(tokens[0].text()); - - let align = self.align.pop().unwrap_or_default(); - let mut length = align + tokens[0].text().chars().count(); - for i in 1..tokens.len() { - let previous = &tokens[i - 1]; - let current = &tokens[i]; - let current_length = current.text().chars().count(); - - let insert_space = self.should_insert_space(previous, current); - let space_length = if insert_space { 1 } else { 0 }; - - if length + current_length + space_length > self.line_length { - self.output.push('\n'); - self.output.push_str(self.indent.as_ref()); - for _ in 0..=align - self.tab_size as usize { - self.output.push(' '); - } - length = align; - } else if insert_space { - self.output.push(' '); - length += 1; - } - self.output.push_str(current.text()); - length += current_length; - } - } - bibtex::ROOT | bibtex::JUNK => { - for element in parent.children_with_tokens() { - match element { - NodeOrToken::Token(token) => { - self.output.push_str(token.text()); - } - NodeOrToken::Node(node) => { - self.visit_node(node); - } - } - } - } - _ => unreachable!(), - } - } + let options = bibfmt::Options { + insert_spaces: options.insert_spaces, + line_length: workspace.config().formatting.line_length, + tab_size: options.tab_size as usize, + }; + + let output = bibfmt::format(&data.root_node(), &document.line_index, &options); + let range = TextRange::new(0.into(), document.text.text_len()); + let range = document.line_index.line_col_lsp_range(range)?; + Some(vec![lsp_types::TextEdit::new(range, output)]) } diff --git a/support/texlab/crates/texlab/src/features/formatting/latexindent.rs b/support/texlab/crates/texlab/src/features/formatting/latexindent.rs index bf5385401b..510bd80207 100644 --- a/support/texlab/crates/texlab/src/features/formatting/latexindent.rs +++ b/support/texlab/crates/texlab/src/features/formatting/latexindent.rs @@ -52,7 +52,7 @@ pub fn format_with_latexindent( } else { let line_index = &document.line_index; let start = Position::new(0, 0); - let end = line_index.line_col_lsp(old_text.text_len()); + let end = line_index.line_col_lsp(old_text.text_len())?; Some(vec![TextEdit { range: lsp_types::Range::new(start, end), new_text, diff --git a/support/texlab/crates/texlab/src/features/highlight.rs b/support/texlab/crates/texlab/src/features/highlight.rs index 63fc8ef9e2..10c5d95fb1 100644 --- a/support/texlab/crates/texlab/src/features/highlight.rs +++ b/support/texlab/crates/texlab/src/features/highlight.rs @@ -1,17 +1,28 @@ -mod label; - -use base_db::Workspace; -use lsp_types::DocumentHighlight; +use base_db::{FeatureParams, Workspace}; +use highlights::{HighlightKind, HighlightParams}; use crate::util::line_index_ext::LineIndexExt; pub fn find_all( workspace: &Workspace, params: &lsp_types::DocumentHighlightParams, -) -> Option<Vec<DocumentHighlight>> { +) -> Option<Vec<lsp_types::DocumentHighlight>> { let uri = ¶ms.text_document_position_params.text_document.uri; let document = workspace.lookup(uri)?; let position = params.text_document_position_params.position; - let offset = document.line_index.offset_lsp(position); - label::find_highlights(document, offset) + let offset = document.line_index.offset_lsp(position)?; + let feature = FeatureParams::new(workspace, document); + let params = HighlightParams { feature, offset }; + let results = highlights::find_all(params); + let results = results.into_iter().filter_map(|result| { + let range = document.line_index.line_col_lsp_range(result.range)?; + let kind = Some(match result.kind { + HighlightKind::Write => lsp_types::DocumentHighlightKind::WRITE, + HighlightKind::Read => lsp_types::DocumentHighlightKind::READ, + }); + + Some(lsp_types::DocumentHighlight { range, kind }) + }); + + Some(results.collect()) } diff --git a/support/texlab/crates/texlab/src/features/highlight/label.rs b/support/texlab/crates/texlab/src/features/highlight/label.rs deleted file mode 100644 index dc0a60ab65..0000000000 --- a/support/texlab/crates/texlab/src/features/highlight/label.rs +++ /dev/null @@ -1,37 +0,0 @@ -use base_db::{semantics::tex::LabelKind, Document}; -use lsp_types::DocumentHighlight; -use rowan::TextSize; - -use crate::util::line_index_ext::LineIndexExt; - -pub fn find_highlights( - document: &Document, - offset: TextSize, -) -> Option<Vec<lsp_types::DocumentHighlight>> { - let data = document.data.as_tex()?; - let cursor = data - .semantics - .labels - .iter() - .find(|label| label.name.range.contains(offset))?; - - let mut highlights = Vec::new(); - let line_index = &document.line_index; - for label in data - .semantics - .labels - .iter() - .filter(|label| label.name.text == cursor.name.text) - { - let range = line_index.line_col_lsp_range(label.name.range); - let kind = Some(match label.kind { - LabelKind::Definition => lsp_types::DocumentHighlightKind::WRITE, - LabelKind::Reference => lsp_types::DocumentHighlightKind::READ, - LabelKind::ReferenceRange => lsp_types::DocumentHighlightKind::READ, - }); - - highlights.push(DocumentHighlight { range, kind }); - } - - Some(highlights) -} diff --git a/support/texlab/crates/texlab/src/features/hover.rs b/support/texlab/crates/texlab/src/features/hover.rs index bde71261c3..1aac645488 100644 --- a/support/texlab/crates/texlab/src/features/hover.rs +++ b/support/texlab/crates/texlab/src/features/hover.rs @@ -1,17 +1,14 @@ -use base_db::Workspace; +use base_db::{FeatureParams, Workspace}; use hover::{HoverData, HoverParams}; use crate::util::line_index_ext::LineIndexExt; -pub fn find( - workspace: &Workspace, - uri: &lsp_types::Url, - position: lsp_types::Position, -) -> Option<lsp_types::Hover> { - let document = workspace.lookup(uri)?; - let offset = document.line_index.offset_lsp(position); - let params = HoverParams::new(workspace, document, offset); - let hover = ::hover::find(¶ms)?; +pub fn find(workspace: &Workspace, params: lsp_types::HoverParams) -> Option<lsp_types::Hover> { + let uri_and_pos = ¶ms.text_document_position_params; + let document = workspace.lookup(&uri_and_pos.text_document.uri)?; + let feature = FeatureParams::new(workspace, document); + let offset = document.line_index.offset_lsp(uri_and_pos.position)?; + let hover = ::hover::find(HoverParams { feature, offset })?; let contents = match hover.data { HoverData::Citation(text) => lsp_types::MarkupContent { @@ -42,6 +39,6 @@ pub fn find( Some(lsp_types::Hover { contents: lsp_types::HoverContents::Markup(contents), - range: Some(document.line_index.line_col_lsp_range(hover.range)), + range: document.line_index.line_col_lsp_range(hover.range), }) } diff --git a/support/texlab/crates/texlab/src/features/inlay_hint.rs b/support/texlab/crates/texlab/src/features/inlay_hint.rs index cb4056f922..44ed0757a5 100644 --- a/support/texlab/crates/texlab/src/features/inlay_hint.rs +++ b/support/texlab/crates/texlab/src/features/inlay_hint.rs @@ -10,13 +10,13 @@ pub fn find_all( ) -> Option<Vec<lsp_types::InlayHint>> { let document = workspace.lookup(uri)?; let line_index = &document.line_index; - let range = line_index.offset_lsp_range(range); + let range = line_index.offset_lsp_range(range)?; let feature = FeatureParams::new(workspace, document); let params = InlayHintParams { range, feature }; let hints = inlay_hints::find_all(params)?; let hints = hints.into_iter().filter_map(|hint| { - let position = line_index.line_col_lsp(hint.offset); + let position = line_index.line_col_lsp(hint.offset)?; Some(match hint.data { InlayHintData::LabelDefinition(label) => { let number = label.number?; diff --git a/support/texlab/crates/texlab/src/features/inlay_hint/label.rs b/support/texlab/crates/texlab/src/features/inlay_hint/label.rs deleted file mode 100644 index f73d3fd9ae..0000000000 --- a/support/texlab/crates/texlab/src/features/inlay_hint/label.rs +++ /dev/null @@ -1,41 +0,0 @@ -use base_db::{ - semantics::tex::LabelKind, - util::{render_label, RenderedObject}, - DocumentData, -}; - -use super::InlayHintBuilder; - -pub(super) fn find_hints(builder: &mut InlayHintBuilder) -> Option<()> { - let DocumentData::Tex(data) = &builder.document.data else { return None }; - - let range = builder.range; - for label in data - .semantics - .labels - .iter() - .filter(|label| label.kind == LabelKind::Definition) - .filter(|label| label.name.range.intersect(range).is_some()) - { - let Some(rendered) = render_label(builder.workspace, &builder.project, label) else { continue }; - let Some(number) = &rendered.number else { continue }; - - let text = match &rendered.object { - RenderedObject::Section { prefix, .. } => { - format!("{} {}", prefix, number) - } - RenderedObject::Float { kind, .. } => { - format!("{} {}", kind.as_str(), number) - } - RenderedObject::Theorem { kind, .. } => { - format!("{} {}", kind, number) - } - RenderedObject::Equation => format!("Equation ({})", number), - RenderedObject::EnumItem => format!("Item {}", number), - }; - - builder.push(label.full_range.end(), text); - } - - Some(()) -} diff --git a/support/texlab/crates/texlab/src/features/link.rs b/support/texlab/crates/texlab/src/features/link.rs index 9fb70d8b65..b821dcf6e1 100644 --- a/support/texlab/crates/texlab/src/features/link.rs +++ b/support/texlab/crates/texlab/src/features/link.rs @@ -1,38 +1,20 @@ -mod include; - -use base_db::{Document, Workspace}; +use base_db::{FeatureParams, Workspace}; use lsp_types::{DocumentLink, Url}; -use rowan::TextRange; use crate::util::line_index_ext::LineIndexExt; pub fn find_all(workspace: &Workspace, uri: &Url) -> Option<Vec<DocumentLink>> { let document = workspace.lookup(uri)?; - let mut builder = LinkBuilder { - workspace, - document, - links: Vec::new(), - }; - - include::find_links(&mut builder); - Some(builder.links) -} - -struct LinkBuilder<'a> { - workspace: &'a Workspace, - document: &'a Document, - links: Vec<DocumentLink>, -} -impl<'a> LinkBuilder<'a> { - pub fn push(&mut self, range: TextRange, target: &Document) { - let range = self.document.line_index.line_col_lsp_range(range); - let target = Some(target.uri.clone()); - self.links.push(DocumentLink { - range, - target, - tooltip: None, + let links = links::find_links(FeatureParams::new(workspace, document)).into_iter(); + let links = links.filter_map(|link| { + Some(lsp_types::DocumentLink { data: None, - }); - } + tooltip: None, + target: Some(link.document.uri.clone()), + range: document.line_index.line_col_lsp_range(link.range)?, + }) + }); + + Some(links.collect()) } diff --git a/support/texlab/crates/texlab/src/features/link/include.rs b/support/texlab/crates/texlab/src/features/link/include.rs deleted file mode 100644 index eef47514af..0000000000 --- a/support/texlab/crates/texlab/src/features/link/include.rs +++ /dev/null @@ -1,22 +0,0 @@ -use super::LinkBuilder; - -pub(super) fn find_links(builder: &mut LinkBuilder) -> Option<()> { - let parent = *builder - .workspace - .parents(builder.document) - .iter() - .next() - .unwrap_or(&builder.document); - - let graph = base_db::graph::Graph::new(builder.workspace, parent); - - for edge in &graph.edges { - if edge.source == builder.document { - if let Some(weight) = &edge.weight { - builder.push(weight.link.path.range, edge.target); - } - } - } - - Some(()) -} diff --git a/support/texlab/crates/texlab/src/features/reference.rs b/support/texlab/crates/texlab/src/features/reference.rs index eb0807c7fc..380471e6cf 100644 --- a/support/texlab/crates/texlab/src/features/reference.rs +++ b/support/texlab/crates/texlab/src/features/reference.rs @@ -1,32 +1,33 @@ -use base_db::Workspace; +use base_db::{FeatureParams, Workspace}; use references::{ReferenceKind, ReferenceParams}; use crate::util::line_index_ext::LineIndexExt; pub fn find_all( workspace: &Workspace, - uri: &lsp_types::Url, - position: lsp_types::Position, - context: &lsp_types::ReferenceContext, + params: lsp_types::ReferenceParams, ) -> Option<Vec<lsp_types::Location>> { - let document = workspace.lookup(uri)?; - let offset = document.line_index.offset_lsp(position); - let params = ReferenceParams { - workspace, - document, - offset, - }; + let uri_and_pos = params.text_document_position; + let include_declaration = params.context.include_declaration; + let document = workspace.lookup(&uri_and_pos.text_document.uri)?; + let offset = document.line_index.offset_lsp(uri_and_pos.position)?; + + let feature = FeatureParams::new(workspace, document); let mut results = Vec::new(); - for result in references::find_all(params) + for result in references::find_all(ReferenceParams { feature, offset }) .into_iter() - .filter(|result| result.kind == ReferenceKind::Reference || context.include_declaration) + .filter(|result| result.kind == ReferenceKind::Reference || include_declaration) { - let document = result.document; + let document = result.location.document; let uri = document.uri.clone(); - let range = document.line_index.line_col_lsp_range(result.range); - let location = lsp_types::Location::new(uri, range); - results.push(location); + if let Some(range) = document + .line_index + .line_col_lsp_range(result.location.range) + { + let location = lsp_types::Location::new(uri, range); + results.push(location); + } } Some(results) diff --git a/support/texlab/crates/texlab/src/features/rename.rs b/support/texlab/crates/texlab/src/features/rename.rs index 1f48a449c0..297547e7e5 100644 --- a/support/texlab/crates/texlab/src/features/rename.rs +++ b/support/texlab/crates/texlab/src/features/rename.rs @@ -11,7 +11,7 @@ pub fn prepare_rename_all( ) -> Option<lsp_types::Range> { let params = create_params(workspace, params)?; let range = rename::prepare_rename(¶ms)?; - Some(params.inner.document.line_index.line_col_lsp_range(range)) + params.feature.document.line_index.line_col_lsp_range(range) } pub fn rename_all( @@ -20,15 +20,15 @@ pub fn rename_all( ) -> Option<lsp_types::WorkspaceEdit> { let new_name = ¶ms.new_name; let params = create_params(workspace, ¶ms.text_document_position)?; - let result = rename::rename(¶ms); + let result = rename::rename(params); let mut changes = HashMap::default(); for (document, ranges) in result.changes { let mut edits = Vec::new(); - for range in ranges { - let range = document.line_index.line_col_lsp_range(range); - edits.push(lsp_types::TextEdit::new(range, new_name.clone())); - } + ranges + .into_iter() + .filter_map(|range| document.line_index.line_col_lsp_range(range)) + .for_each(|range| edits.push(lsp_types::TextEdit::new(range, new_name.clone()))); changes.insert(document.uri.clone(), edits); } @@ -42,6 +42,9 @@ fn create_params<'db>( ) -> Option<RenameParams<'db>> { let document = workspace.lookup(¶ms.text_document.uri)?; let inner = FeatureParams::new(workspace, document); - let offset = document.line_index.offset_lsp(params.position); - Some(RenameParams { inner, offset }) + let offset = document.line_index.offset_lsp(params.position)?; + Some(RenameParams { + feature: inner, + offset, + }) } diff --git a/support/texlab/crates/texlab/src/features/symbols.rs b/support/texlab/crates/texlab/src/features/symbols.rs index 170705e05c..65e92a5b17 100644 --- a/support/texlab/crates/texlab/src/features/symbols.rs +++ b/support/texlab/crates/texlab/src/features/symbols.rs @@ -14,7 +14,7 @@ pub fn document_symbols( if capabilities.has_hierarchical_document_symbol_support() { let results = symbols .into_iter() - .map(|symbol| convert_to_nested_symbol(symbol, document)) + .filter_map(|symbol| convert_to_nested_symbol(symbol, document)) .collect(); DocumentSymbolResponse::Nested(results) @@ -38,26 +38,29 @@ pub fn workspace_symbols(workspace: &Workspace, query: &str) -> WorkspaceSymbolR WorkspaceSymbolResponse::Flat(results) } -fn convert_to_nested_symbol(symbol: symbols::Symbol, document: &Document) -> DocumentSymbol { +fn convert_to_nested_symbol( + symbol: symbols::Symbol, + document: &Document, +) -> Option<DocumentSymbol> { let children = symbol .children .into_iter() - .map(|child| convert_to_nested_symbol(child, document)) + .filter_map(|child| convert_to_nested_symbol(child, document)) .collect(); #[allow(deprecated)] - DocumentSymbol { + Some(DocumentSymbol { name: symbol.name, detail: symbol.label.map(|label| label.text), kind: convert_symbol_kind(symbol.kind), deprecated: Some(false), - range: document.line_index.line_col_lsp_range(symbol.full_range), + range: document.line_index.line_col_lsp_range(symbol.full_range)?, selection_range: document .line_index - .line_col_lsp_range(symbol.selection_range), + .line_col_lsp_range(symbol.selection_range)?, children: Some(children), tags: None, - } + }) } fn convert_to_flat_symbols( @@ -65,7 +68,9 @@ fn convert_to_flat_symbols( document: &Document, results: &mut Vec<lsp_types::SymbolInformation>, ) { - let range = document.line_index.line_col_lsp_range(symbol.full_range); + let Some(range) = document.line_index.line_col_lsp_range(symbol.full_range) else { + return; + }; #[allow(deprecated)] results.push(lsp_types::SymbolInformation { diff --git a/support/texlab/crates/texlab/src/server.rs b/support/texlab/crates/texlab/src/server.rs index 7757bbb460..f06984d596 100644 --- a/support/texlab/crates/texlab/src/server.rs +++ b/support/texlab/crates/texlab/src/server.rs @@ -11,11 +11,12 @@ use std::{ }; use anyhow::Result; -use base_db::{util::LineCol, Config, Owner, Workspace}; +use base_db::{Config, Owner, Workspace}; use commands::{BuildCommand, CleanCommand, CleanTarget, ForwardSearch}; use crossbeam_channel::{Receiver, Sender}; use diagnostics::{DiagnosticManager, DiagnosticSource}; use distro::{Distro, Language}; +use line_index::LineCol; use lsp_server::{Connection, ErrorCode, Message, RequestId}; use lsp_types::{notification::*, request::*, *}; use notify::event::ModifyKind; @@ -413,7 +414,7 @@ impl Server { }; match change.range { Some(range) => { - let range = document.line_index.offset_lsp_range(range); + let range = document.line_index.offset_lsp_range(range).unwrap(); workspace.edit(&uri, range, &change.text); } None => { @@ -605,25 +606,20 @@ impl Server { Ok(()) } - fn references(&self, id: RequestId, params: ReferenceParams) -> Result<()> { - let mut uri = params.text_document_position.text_document.uri; - normalize_uri(&mut uri); - let position = params.text_document_position.position; + fn references(&self, id: RequestId, mut params: ReferenceParams) -> Result<()> { + normalize_uri(&mut params.text_document_position.text_document.uri); self.run_query(id, move |db| { - reference::find_all(db, &uri, position, ¶ms.context).unwrap_or_default() + reference::find_all(db, params).unwrap_or_default() }); Ok(()) } - fn hover(&mut self, id: RequestId, params: HoverParams) -> Result<()> { - let mut uri = params.text_document_position_params.text_document.uri; - normalize_uri(&mut uri); - - let position = params.text_document_position_params.position; - self.update_cursor(&uri, position); - - self.run_query(id, move |db| hover::find(db, &uri, position)); + fn hover(&mut self, id: RequestId, mut params: HoverParams) -> Result<()> { + normalize_uri(&mut params.text_document_position_params.text_document.uri); + let uri_and_pos = ¶ms.text_document_position_params; + self.update_cursor(&uri_and_pos.text_document.uri, uri_and_pos.position); + self.run_query(id, move |db| hover::find(db, params)); Ok(()) } @@ -941,15 +937,17 @@ impl Server { }; let line_index = &document.line_index; - let position = line_index.offset_lsp(params.text_document_position.position); + let Some(position) = line_index.offset_lsp(params.text_document_position.position) else { + anyhow::bail!("Invalid position for document {uri}!") + }; let Some(result) = commands::change_environment(document, position, ¶ms.new_name) else { anyhow::bail!("No environment found at the current position"); }; - let range1 = line_index.line_col_lsp_range(result.begin); - let range2 = line_index.line_col_lsp_range(result.end); + let range1 = line_index.line_col_lsp_range(result.begin).unwrap(); + let range2 = line_index.line_col_lsp_range(result.end).unwrap(); let mut changes = HashMap::new(); changes.insert( @@ -985,15 +983,18 @@ impl Server { }; let line_index = &document.line_index; - let offset = line_index.offset_lsp(params.position); + let Some(offset) = line_index.offset_lsp(params.position) else { + anyhow::bail!("Invalid position for document {uri}!") + }; + let results = commands::find_environments(document, offset) .into_iter() .map(|result| EnvironmentLocation { name: TextWithRange { - range: line_index.line_col_lsp_range(result.name.range), + range: line_index.line_col_lsp_range(result.name.range).unwrap(), text: result.name.text, }, - full_range: line_index.line_col_lsp_range(result.full_range), + full_range: line_index.line_col_lsp_range(result.full_range).unwrap(), }) .collect(); diff --git a/support/texlab/crates/texlab/src/util/diagnostics.rs b/support/texlab/crates/texlab/src/util/diagnostics.rs index 89d33060a1..0ef24d065b 100644 --- a/support/texlab/crates/texlab/src/util/diagnostics.rs +++ b/support/texlab/crates/texlab/src/util/diagnostics.rs @@ -21,7 +21,7 @@ pub fn collect<'db>( .map(|(document, diags)| { let diags = diags .into_iter() - .map(|diag| create_diagnostic(workspace, document, diag)) + .filter_map(|diag| create_diagnostic(workspace, document, diag)) .collect::<Vec<_>>(); (document, diags) @@ -33,8 +33,8 @@ fn create_diagnostic( workspace: &Workspace, document: &Document, diagnostic: &Diagnostic, -) -> lsp_types::Diagnostic { - let range = document.line_index.line_col_lsp_range(diagnostic.range); +) -> Option<lsp_types::Diagnostic> { + let range = document.line_index.line_col_lsp_range(diagnostic.range)?; let severity = match &diagnostic.data { DiagnosticData::Tex(error) => match error { @@ -154,14 +154,14 @@ fn create_diagnostic( DiagnosticData::Build(_) => None, }; - lsp_types::Diagnostic { + Some(lsp_types::Diagnostic { severity: Some(severity), code: code.map(lsp_types::NumberOrString::Number), source: Some(String::from(source)), tags, related_information, ..lsp_types::Diagnostic::new_simple(range, message) - } + }) } fn make_conflict_info( @@ -172,10 +172,9 @@ fn make_conflict_info( let mut items = Vec::new(); for (uri, range) in locations { let range = workspace - .lookup(uri) - .unwrap() + .lookup(uri)? .line_index - .line_col_lsp_range(*range); + .line_col_lsp_range(*range)?; let message = format!("conflicting {object} defined here"); let location = lsp_types::Location::new(uri.clone(), range); diff --git a/support/texlab/crates/texlab/src/util/line_index_ext.rs b/support/texlab/crates/texlab/src/util/line_index_ext.rs index a7b0fa8953..8e6bb6da03 100644 --- a/support/texlab/crates/texlab/src/util/line_index_ext.rs +++ b/support/texlab/crates/texlab/src/util/line_index_ext.rs @@ -1,51 +1,53 @@ -use base_db::util::{LineCol, LineColUtf16, LineIndex}; +use line_index::{LineCol, LineColUtf16, LineIndex}; use lsp_types::{Position, Range}; use rowan::{TextRange, TextSize}; pub trait LineIndexExt { - fn offset_lsp(&self, line_col: Position) -> TextSize; + fn offset_lsp(&self, line_col: Position) -> Option<TextSize>; - fn offset_lsp_range(&self, line_col: Range) -> TextRange; + fn offset_lsp_range(&self, line_col: Range) -> Option<TextRange>; - fn line_col_lsp(&self, offset: TextSize) -> Position; + fn line_col_lsp(&self, offset: TextSize) -> Option<Position>; - fn line_col_lsp_range(&self, offset: TextRange) -> Range; + fn line_col_lsp_range(&self, offset: TextRange) -> Option<Range>; } impl LineIndexExt for LineIndex { - fn offset_lsp(&self, line_col: Position) -> TextSize { + fn offset_lsp(&self, line_col: Position) -> Option<TextSize> { let line_col = LineColUtf16 { line: line_col.line, col: line_col.character, }; - self.offset(self.to_utf8(line_col)) + + let line_col = self.to_utf8(line_col)?; + self.offset(line_col) } - fn offset_lsp_range(&self, line_col: Range) -> TextRange { - let start = self.offset_lsp(line_col.start); - let end = self.offset_lsp(line_col.end); - TextRange::new(start, end) + fn offset_lsp_range(&self, line_col: Range) -> Option<TextRange> { + let start = self.offset_lsp(line_col.start)?; + let end = self.offset_lsp(line_col.end)?; + Some(TextRange::new(start, end)) } - fn line_col_lsp(&self, offset: TextSize) -> Position { - let position = self.line_col(offset); - let LineColUtf16 { line, col } = self.to_utf16(position); - Position::new(line, col) + fn line_col_lsp(&self, offset: TextSize) -> Option<Position> { + let line_col = self.line_col(offset); + let line_col = self.to_utf16(line_col)?; + Some(Position::new(line_col.line, line_col.col)) } - fn line_col_lsp_range(&self, offset: TextRange) -> Range { - let start = self.line_col_lsp(offset.start()); - let mut end = self.line_col_lsp(offset.end()); + fn line_col_lsp_range(&self, offset: TextRange) -> Option<Range> { + let start = self.line_col_lsp(offset.start())?; + let mut end = self.line_col_lsp(offset.end())?; if end.line != start.line && end.character == 0 { // Prefer keeping multi-line ranges on the same line let line_end = self.offset(LineCol { line: end.line, col: 0, - }); + })?; - end = self.line_col_lsp(line_end - TextSize::from(1)); + end = self.line_col_lsp(line_end - TextSize::from(1))?; } - Range::new(start, end) + Some(Range::new(start, end)) } } diff --git a/support/texlab/crates/texlab/tests/lsp/fixture.rs b/support/texlab/crates/texlab/tests/lsp/fixture.rs deleted file mode 100644 index a10105eb7f..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/fixture.rs +++ /dev/null @@ -1,271 +0,0 @@ -use std::{ - path::{Path, PathBuf}, - sync::Once, - thread::JoinHandle, -}; - -use anyhow::Result; -use distro::Language; -use lsp_server::Connection; -use lsp_types::{ - notification::{DidOpenTextDocument, Exit, Initialized}, - request::{Initialize, Shutdown}, - ClientCapabilities, DidOpenTextDocumentParams, InitializeParams, InitializedParams, Location, - Position, Range, TextDocumentIdentifier, TextDocumentItem, TextDocumentPositionParams, Url, -}; -use tempfile::{tempdir, TempDir}; -use texlab::{LspClient, Server}; - -#[derive(Debug)] -pub struct Fixture { - pub documents: Vec<Document>, -} - -impl Fixture { - pub fn parse(input: &str) -> Fixture { - let mut documents = Vec::new(); - - let mut start = 0; - if !input.is_empty() { - for end in input - .match_indices("%!") - .skip(1) - .map(|(i, _)| i) - .chain(std::iter::once(input.len())) - { - documents.push(Document::parse(&input[start..end])); - start = end; - } - } - - Self { documents } - } - - pub fn setup(&self, client: &LspClient, dir: &Path) -> Result<()> { - for document in &self.documents { - let text = String::from(&document.text); - let path = dir.join(&document.path); - std::fs::create_dir_all(path.parent().unwrap())?; - std::fs::write(&path, &text)?; - - let uri = Url::from_file_path(&path).unwrap(); - let language = Language::from_path(&path).unwrap_or(Language::Tex); - let language_id = String::from(match language { - Language::Tex => "latex", - Language::Bib => "bibtex", - Language::Aux | Language::Log | Language::Root | Language::Tectonic => continue, - }); - - client.send_notification::<DidOpenTextDocument>(DidOpenTextDocumentParams { - text_document: TextDocumentItem::new(uri, language_id, 0, text), - })?; - } - - Ok(()) - } -} - -#[derive(Debug)] -pub struct Document { - pub path: PathBuf, - pub text: String, - pub cursor: Option<Position>, - pub ranges: Vec<Range>, -} - -impl Document { - pub fn parse(input: &str) -> Self { - let mut lines = Vec::new(); - - let (path, input) = input - .trim() - .strip_prefix("%! ") - .map(|input| input.split_once('\n').unwrap_or((input, ""))) - .unwrap(); - - let mut ranges = Vec::new(); - let mut cursor = None; - - for line in input.lines().map(|line| line.trim_end()) { - if line.chars().all(|c| matches!(c, ' ' | '^' | '|' | '!')) && !line.is_empty() { - let index = (lines.len() - 1) as u32; - - cursor = cursor.or_else(|| { - let character = line.find('|')?; - Some(Position::new(index, character as u32)) - }); - - if let Some(start) = line.find('!') { - let position = Position::new(index, start as u32); - ranges.push(Range::new(position, position)); - } - - if let Some(start) = line.find('^') { - let end = line.rfind('^').unwrap() + 1; - ranges.push(Range::new( - Position::new(index, start as u32), - Position::new(index, end as u32), - )); - } - } else { - lines.push(line); - } - } - - Self { - path: PathBuf::from(path), - text: lines.join("\n"), - cursor, - ranges, - } - } -} - -static LOGGER: Once = Once::new(); - -#[derive(Debug)] -pub struct TestBed { - fixture: Fixture, - locations: Vec<Location>, - _temp_dir: TempDir, - temp_dir_path: PathBuf, - client: LspClient, - client_thread: Option<JoinHandle<()>>, - server_thread: Option<JoinHandle<()>>, -} - -impl Drop for TestBed { - fn drop(&mut self) { - let _ = self.client.send_request::<Shutdown>(()); - let _ = self.client.send_notification::<Exit>(()); - self.client_thread.take().unwrap().join().unwrap(); - self.server_thread.take().unwrap().join().unwrap(); - } -} - -impl TestBed { - pub fn new(fixture: &str) -> Result<Self> { - LOGGER.call_once(|| { - if option_env!("TEST_LOG") == Some("1") { - fern::Dispatch::new() - .filter(|metadata| { - metadata.target().contains("texlab") - || metadata.target().contains("lsp_server") - }) - .level(log::LevelFilter::Trace) - .chain(std::io::stderr()) - .apply() - .unwrap() - } - }); - - let fixture = Fixture::parse(fixture); - let (server_conn, client_conn) = Connection::memory(); - - let client = LspClient::new(client_conn.sender); - - let server_thread = std::thread::spawn(move || Server::new(server_conn).run().unwrap()); - let client_thread = { - let client = client.clone(); - std::thread::spawn(move || { - for message in &client_conn.receiver { - match message { - lsp_server::Message::Request(request) => { - client - .send_error( - request.id, - lsp_server::ErrorCode::MethodNotFound.into(), - "Method not found".into(), - ) - .unwrap(); - } - lsp_server::Message::Response(response) => { - client.recv_response(response).unwrap(); - } - lsp_server::Message::Notification(_) => {} - } - } - }) - }; - - let temp_dir = tempdir()?; - let temp_dir_path = temp_dir.path().canonicalize()?; - - let locations = fixture - .documents - .iter() - .flat_map(|document| { - let uri = Url::from_file_path(temp_dir_path.join(&document.path)).unwrap(); - document - .ranges - .iter() - .map(move |range| Location::new(uri.clone(), *range)) - }) - .collect(); - - Ok(TestBed { - fixture, - locations, - _temp_dir: temp_dir, - temp_dir_path, - client, - client_thread: Some(client_thread), - server_thread: Some(server_thread), - }) - } - - pub fn initialize(&self, capabilities: ClientCapabilities) -> Result<()> { - self.client.send_request::<Initialize>(InitializeParams { - capabilities, - initialization_options: Some(serde_json::json!({ "skipDistro": true })), - ..Default::default() - })?; - - self.client - .send_notification::<Initialized>(InitializedParams {})?; - - self.fixture.setup(&self.client, self.directory())?; - Ok(()) - } - - pub fn client(&self) -> &LspClient { - &self.client - } - - pub fn cursor(&self) -> Option<TextDocumentPositionParams> { - let (document, cursor) = self - .fixture - .documents - .iter() - .find_map(|document| document.cursor.map(|cursor| (document, cursor)))?; - - let uri = Url::from_file_path(self.temp_dir_path.join(&document.path)).unwrap(); - let id = TextDocumentIdentifier::new(uri); - Some(TextDocumentPositionParams::new(id, cursor)) - } - - pub fn locations(&self) -> &[Location] { - &self.locations - } - - pub fn directory(&self) -> &Path { - &self.temp_dir_path - } - - pub fn documents(&self) -> &[Document] { - &self.fixture.documents - } - - pub fn redact(&self, uri: &Url) -> Url { - if uri.scheme() != "file" { - return uri.clone(); - } - - let path = uri.to_file_path().unwrap().canonicalize().unwrap(); - let path = path.strip_prefix(self.directory()).unwrap(); - let path = path.to_str().unwrap(); - - let text = format!("redacted://{}", path.replace('\\', "/")); - Url::parse(&text).unwrap() - } -} diff --git a/support/texlab/crates/texlab/tests/lsp/main.rs b/support/texlab/crates/texlab/tests/lsp/main.rs deleted file mode 100644 index aeb4f8993c..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod fixture; -mod text_document; -mod workspace; diff --git a/support/texlab/crates/texlab/tests/lsp/text_document.rs b/support/texlab/crates/texlab/tests/lsp/text_document.rs deleted file mode 100644 index 8276c43815..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod document_highlight; -mod document_link; -mod document_symbol; -mod formatting; -mod inlay_hint; diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/document_highlight.rs b/support/texlab/crates/texlab/tests/lsp/text_document/document_highlight.rs deleted file mode 100644 index 5cfb8fbee8..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/document_highlight.rs +++ /dev/null @@ -1,51 +0,0 @@ -use assert_unordered::assert_eq_unordered; -use lsp_types::{ - request::DocumentHighlightRequest, ClientCapabilities, DocumentHighlight, - DocumentHighlightKind, DocumentHighlightParams, -}; - -use crate::fixture::TestBed; - -fn check(fixture: &str, highlight_kinds: &[DocumentHighlightKind]) { - let test_bed = TestBed::new(fixture).unwrap(); - test_bed.initialize(ClientCapabilities::default()).unwrap(); - - let expected: Vec<_> = test_bed - .locations() - .iter() - .zip(highlight_kinds) - .map(|(location, kind)| DocumentHighlight { - range: location.range, - kind: Some(*kind), - }) - .collect(); - - let text_document_position_params = test_bed.cursor().unwrap(); - let actual = test_bed - .client() - .send_request::<DocumentHighlightRequest>(DocumentHighlightParams { - text_document_position_params, - partial_result_params: Default::default(), - work_done_progress_params: Default::default(), - }) - .unwrap() - .unwrap_or_default(); - - assert_eq_unordered!(actual, expected); -} - -#[test] -fn test_label() { - check( - r#" -%! main.tex -\label{foo} - | - ^^^ -\ref{foo} - ^^^ -\label{bar} -"#, - &[DocumentHighlightKind::WRITE, DocumentHighlightKind::READ], - ) -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/document_link.rs b/support/texlab/crates/texlab/tests/lsp/text_document/document_link.rs deleted file mode 100644 index 6aab6105de..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/document_link.rs +++ /dev/null @@ -1,52 +0,0 @@ -use insta::assert_json_snapshot; -use lsp_types::{ - request::DocumentLinkRequest, ClientCapabilities, DocumentLink, DocumentLinkParams, -}; - -use crate::fixture::TestBed; - -fn find_links(fixture: &str) -> Vec<DocumentLink> { - let test_bed = TestBed::new(fixture).unwrap(); - test_bed.initialize(ClientCapabilities::default()).unwrap(); - - let text_document_position = test_bed.cursor().unwrap(); - let mut links = test_bed - .client() - .send_request::<DocumentLinkRequest>(DocumentLinkParams { - text_document: text_document_position.text_document, - work_done_progress_params: Default::default(), - partial_result_params: Default::default(), - }) - .unwrap() - .unwrap_or_default(); - - for link in &mut links { - link.target = Some(test_bed.redact(link.target.as_ref().unwrap())); - } - - links -} - -#[test] -fn document_include() { - assert_json_snapshot!(find_links( - r#" -%! foo.tex -\input{bar.tex} -| - -%! bar.tex"#, - )) -} - -#[test] -fn document_import() { - assert_json_snapshot!(find_links( - r#" -%! foo.tex -\import{.}{bar/baz} -| - -%! bar/baz.tex"#, - )) -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/document_symbol.rs b/support/texlab/crates/texlab/tests/lsp/text_document/document_symbol.rs deleted file mode 100644 index e22c9374ad..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/document_symbol.rs +++ /dev/null @@ -1,45 +0,0 @@ -use insta::assert_debug_snapshot; -use lsp_types::{notification::DidOpenTextDocument, request::DocumentSymbolRequest, *}; - -use crate::fixture::TestBed; - -#[test] -fn test_smoke() { - let test_bed = TestBed::new("").unwrap(); - test_bed - .initialize(ClientCapabilities { - text_document: Some(TextDocumentClientCapabilities { - document_symbol: Some(DocumentSymbolClientCapabilities { - hierarchical_document_symbol_support: Some(true), - ..Default::default() - }), - ..Default::default() - }), - ..Default::default() - }) - .unwrap(); - - let uri = Url::parse("file:///texlab/main.tex").unwrap(); - test_bed - .client() - .send_notification::<DidOpenTextDocument>(DidOpenTextDocumentParams { - text_document: TextDocumentItem::new( - uri.clone(), - "latex".into(), - 0, - r#"\section{Foo} \subsection{Bar} \section{Baz}"#.into(), - ), - }) - .unwrap(); - - let Some(DocumentSymbolResponse::Nested(symbols)) = test_bed - .client() - .send_request::<DocumentSymbolRequest>(DocumentSymbolParams { - text_document: TextDocumentIdentifier { uri }, - partial_result_params: Default::default(), - work_done_progress_params: Default::default(), - }) - .unwrap() else { unreachable!() }; - - assert_debug_snapshot!(symbols); -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/formatting.rs b/support/texlab/crates/texlab/tests/lsp/text_document/formatting.rs deleted file mode 100644 index 05f8f768de..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/formatting.rs +++ /dev/null @@ -1,135 +0,0 @@ -use base_db::util::LineIndex; -use insta::assert_snapshot; -use lsp_types::{ - request::Formatting, ClientCapabilities, DocumentFormattingParams, FormattingOptions, -}; -use texlab::util::line_index_ext::LineIndexExt; - -use crate::fixture::TestBed; - -fn format(fixture: &str) -> String { - let test_bed = TestBed::new(fixture).unwrap(); - test_bed.initialize(ClientCapabilities::default()).unwrap(); - - let text_document = test_bed.cursor().unwrap().text_document; - let edits = test_bed - .client() - .send_request::<Formatting>(DocumentFormattingParams { - text_document, - work_done_progress_params: Default::default(), - options: FormattingOptions { - insert_spaces: true, - tab_size: 4, - ..Default::default() - }, - }) - .unwrap() - .unwrap_or_default(); - - let old_text = &test_bed.documents()[0].text; - let line_index = LineIndex::new(old_text); - let mut new_text = String::from(old_text); - for edit in edits.into_iter().rev() { - let range = line_index.offset_lsp_range(edit.range); - new_text.replace_range::<std::ops::Range<usize>>(range.into(), &edit.new_text); - } - - new_text -} - -#[test] -fn bibtex_internal_wrap_long_lines() { - assert_snapshot!(format( - r#" -%! main.bib -@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Lorem ipsum dolor sit amet, -consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},} -|"#, - )); -} - -#[test] -fn bibtex_internal_multiple_entries() { - assert_snapshot!(format( - r#" -%! main.bib -@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, -consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},} - -@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, -consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},}" -|"#, - )); -} - -#[test] -fn bibtex_internal_trailing_comma() { - assert_snapshot!(format( - r#" -%! main.bib -@article{foo, bar = baz} -|"#, - )); -} - -#[test] -fn bibtex_internal_insert_braces() { - assert_snapshot!(format( - r#" -%! main.bib -@article{foo, bar = baz, -|"#, - )); -} - -#[test] -fn bibtex_internal_command() { - assert_snapshot!(format( - r#" -%! main.bib -@article{foo, bar = "\baz",} -|"#, - )); -} - -#[test] -fn bibtex_internal_join_strings() { - assert_snapshot!(format( - r#" -%! main.bib -@article{foo, bar = "baz" # "qux"} -|"#, - )); -} - -#[test] -fn bibtex_internal_parens() { - assert_snapshot!(format( - r#" -%! main.bib -@article(foo,) -|"#, - )); -} - -#[test] -fn bibtex_internal_string() { - assert_snapshot!(format( - r#" -%! main.bib -@string{foo="bar"} -|"#, - )); -} - -#[test] -fn bibtex_internal_preamble() { - assert_snapshot!(format( - r#" -%! main.bib -@preamble{ - "foo bar baz" } -|"#, - )); -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/inlay_hint.rs b/support/texlab/crates/texlab/tests/lsp/text_document/inlay_hint.rs deleted file mode 100644 index d8ae8e304a..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/inlay_hint.rs +++ /dev/null @@ -1,57 +0,0 @@ -use insta::assert_json_snapshot; -use lsp_types::{ - request::InlayHintRequest, ClientCapabilities, InlayHint, InlayHintParams, Position, Range, -}; - -use crate::fixture::TestBed; - -fn find_hints(fixture: &str) -> Vec<InlayHint> { - let test_bed = TestBed::new(fixture).unwrap(); - test_bed.initialize(ClientCapabilities::default()).unwrap(); - - let cursor = test_bed.cursor().unwrap(); - - test_bed - .client() - .send_request::<InlayHintRequest>(InlayHintParams { - text_document: cursor.text_document, - range: Range::new(Position::new(0, 0), cursor.position), - work_done_progress_params: Default::default(), - }) - .unwrap() - .unwrap_or_default() -} - -#[test] -fn label_definition() { - assert_json_snapshot!(find_hints( - r#" -%! main.tex -\documentclass{article} -\usepackage{caption} -\begin{document} -\section{Foo}\label{sec:foo} -\section{Bar}\label{sec:bar} -\subsection{Baz}\label{sec:baz} -\begin{figure} - Test - \label{fig:qux} - \caption{Qux} -\end{figure} -\end{document} - | - -%! main.aux -\relax -\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} -\newlabel{fig:qux}{{\caption@xref {fig:qux}{ on input line 15}}{1}} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Qux\relax }}{1}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {1}Foo}{1}{}\protected@file@percent } -\newlabel{sec:foo}{{1}{1}} -\@writefile{toc}{\contentsline {section}{\numberline {2}Bar}{1}{}\protected@file@percent } -\newlabel{sec:bar}{{2}{1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Baz}{1}{}\protected@file@percent } -\newlabel{sec:baz}{{2.1}{1}} -\gdef \@abspage@last{1}"#, - )); -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_package_ref.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_package_ref.snap deleted file mode 100644 index 19c84e95fc..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_package_ref.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\acrodef{fpsLabel}[FPS]{Frames per Second}\n\\ac{f\n |\n ^\"#)" ---- -[ - { - "label": "fpsLabel", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_empty.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_empty.snap deleted file mode 100644 index 23e5b695ef..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_empty.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}\n\\acrshort{}\n |\"#)" ---- -[ - { - "label": "fpsLabel", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_open_brace.snap deleted file mode 100644 index 25171b679c..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_open_brace.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}\n\\acrshort{f\n |\n ^\"#)" ---- -[ - { - "label": "fpsLabel", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_simple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_simple.snap deleted file mode 100644 index 1d3f3329c1..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__acronym_ref_simple.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}\n\\acrshort{f}\n |\n ^\"#)" ---- -[ - { - "label": "fpsLabel", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_empty.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_empty.snap deleted file mode 100644 index ecc48b5a7f..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_empty.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepackage{amsfonts}\n\\mathbb{}\n |\"#)" ---- -[ - { - "label": "A", - "preselect": false - }, - { - "label": "B", - "preselect": false - }, - { - "label": "C", - "preselect": false - }, - { - "label": "D", - "preselect": false - }, - { - "label": "E", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_open_brace.snap deleted file mode 100644 index 530527a384..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_open_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepackage{amsfonts}\n\\mathbb{\n |\nTest\"#)" ---- -[ - { - "label": "A", - "preselect": false - }, - { - "label": "B", - "preselect": false - }, - { - "label": "C", - "preselect": false - }, - { - "label": "D", - "preselect": false - }, - { - "label": "E", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_word.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_word.snap deleted file mode 100644 index c98249c781..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__argument_word.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepackage{amsfonts}\n\\mathbb{A}\n |\n ^\"#)" ---- -[ - { - "label": "A", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__begin_environment_without_snippet_support.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__begin_environment_without_snippet_support.snap deleted file mode 100644 index bb9e30ae55..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__begin_environment_without_snippet_support.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\beg\n |\n ^^^\"#)" ---- -[ - { - "label": "AtBeginDocument", - "detail": "built-in", - "preselect": false - }, - { - "label": "AtBeginDvi", - "detail": "built-in", - "preselect": false - }, - { - "label": "begin", - "detail": "built-in", - "preselect": false - }, - { - "label": "begingroup", - "detail": "built-in", - "preselect": false - }, - { - "label": "bigwedge", - "detail": "⋀, built-in", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation.snap deleted file mode 100644 index db26e6125d..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation.snap +++ /dev/null @@ -1,16 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\documentclass{article}\n\\bibliography{main}\n\\begin{document}\n\\cite{\n |\n\\end{document}\n\n%! main.bib\n@article{foo:2019,\n author = {Foo Bar},\n title = {Baz Qux},\n year = {2019},\n}\n\n@article{bar:2005,}\"#)" ---- -[ - { - "label": "bar:2005", - "preselect": false, - "filterText": "bar:2005 @article" - }, - { - "label": "foo:2019", - "preselect": false, - "filterText": "foo:2019 @article Foo Bar Baz Qux 2019" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_acronym.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_acronym.snap deleted file mode 100644 index 242d5d2a0b..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_acronym.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\addbibresource{main.bib}\n\\DeclareAcronym{foo}{cite={}}\n |\n\n%! main.bib\n@article{foo,}\"#)" ---- -[ - { - "label": "foo", - "preselect": false, - "filterText": "foo @article" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_open_brace.snap deleted file mode 100644 index b205903a04..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_open_brace.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\addbibresource{main.bib}\n\\cite{\n |\n\n%! main.bib\n@article{foo,}\"#)" ---- -[ - { - "label": "foo", - "preselect": false, - "filterText": "foo @article" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_open_brace_multiple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_open_brace_multiple.snap deleted file mode 100644 index 519fa60fa6..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__citation_open_brace_multiple.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\addbibresource{main.bib}\n\\cite{foo,a\n |\n ^\n\n%! main.bib\n@article{foo,}\"#)" ---- -[ - { - "label": "foo", - "preselect": false, - "filterText": "foo @article" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_open_brace.snap deleted file mode 100644 index 421335a4a5..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_open_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\definecolor{foo}{\n |\"#)" ---- -[ - { - "label": "HTML", - "preselect": false - }, - { - "label": "RGB", - "preselect": false - }, - { - "label": "cmyk", - "preselect": false - }, - { - "label": "gray", - "preselect": false - }, - { - "label": "rgb", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_set_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_set_open_brace.snap deleted file mode 100644 index 5d7338e48e..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_set_open_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\definecolorset{\n |\"#)" ---- -[ - { - "label": "HTML", - "preselect": false - }, - { - "label": "RGB", - "preselect": false - }, - { - "label": "cmyk", - "preselect": false - }, - { - "label": "gray", - "preselect": false - }, - { - "label": "rgb", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_set_simple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_set_simple.snap deleted file mode 100644 index 811b47c9ee..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_set_simple.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\definecolorset{}\n |\"#)" ---- -[ - { - "label": "HTML", - "preselect": false - }, - { - "label": "RGB", - "preselect": false - }, - { - "label": "cmyk", - "preselect": false - }, - { - "label": "gray", - "preselect": false - }, - { - "label": "rgb", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_simple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_simple.snap deleted file mode 100644 index dbb34f08d9..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_model_definition_simple.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\definecolor{foo}{}\n |\"#)" ---- -[ - { - "label": "HTML", - "preselect": false - }, - { - "label": "RGB", - "preselect": false - }, - { - "label": "cmyk", - "preselect": false - }, - { - "label": "gray", - "preselect": false - }, - { - "label": "rgb", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_open_brace.snap deleted file mode 100644 index e30fc4c1b0..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_open_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\color{\n |\"#)" ---- -[ - { - "label": "Apricot", - "preselect": false - }, - { - "label": "Aquamarine", - "preselect": false - }, - { - "label": "Bittersweet", - "preselect": false - }, - { - "label": "Black", - "preselect": false - }, - { - "label": "Blue", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_simple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_simple.snap deleted file mode 100644 index 5aab0d8e3b..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_simple.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\color{}\n |\"#)" ---- -[ - { - "label": "Apricot", - "preselect": false - }, - { - "label": "Aquamarine", - "preselect": false - }, - { - "label": "Bittersweet", - "preselect": false - }, - { - "label": "Black", - "preselect": false - }, - { - "label": "Blue", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_word.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_word.snap deleted file mode 100644 index fe803dc6cc..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__color_word.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\color{re}\n |\n ^^\"#)" ---- -[ - { - "label": "BrickRed", - "preselect": false - }, - { - "label": "Red", - "preselect": false - }, - { - "label": "RedOrange", - "preselect": false - }, - { - "label": "RedViolet", - "preselect": false - }, - { - "label": "red", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_bibtex.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_bibtex.snap deleted file mode 100644 index 616fb22a6b..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_bibtex.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article{b,\n c = {\\LaT }\n |\n ^^^\n}\"#)" ---- -[ - { - "label": "LaTeX", - "detail": "built-in", - "preselect": false - }, - { - "label": "LaTeXe", - "detail": "built-in", - "preselect": false - }, - { - "label": "LastDeclaredEncoding", - "detail": "built-in", - "preselect": false - }, - { - "label": "last", - "detail": "built-in", - "preselect": false - }, - { - "label": "latexreleaseversion", - "detail": "built-in", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_simple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_simple.snap deleted file mode 100644 index 0e40056a6e..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_simple.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\\n |\"#)" ---- -[ - { - "label": "!", - "detail": "built-in", - "preselect": false - }, - { - "label": "\"", - "detail": "built-in", - "preselect": false - }, - { - "label": "#", - "detail": "built-in", - "preselect": false - }, - { - "label": "$", - "detail": "$, built-in", - "preselect": false - }, - { - "label": "%", - "detail": "built-in", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_simple_package.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_simple_package.snap deleted file mode 100644 index 360229fa7a..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_command_simple_package.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepackage{lipsum}\n\\lips\n |\n ^^^^\"#)" ---- -[ - { - "label": "LipsumPar", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "LipsumProtect", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "LipsumRestoreAll", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "lipsum", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "lipsumexp", - "detail": "lipsum.sty", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_class.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_class.snap deleted file mode 100644 index a2e5e17ac4..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_class.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\documentclass{article}\n\\begin{thein}\n |\n ^^^^^\"#)" ---- -[ - { - "label": "theindex", - "detail": "article.cls", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_command_definition.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_command_definition.snap deleted file mode 100644 index 28d9c6e82c..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_command_definition.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newcommand{\\foo}{\\begin{doc}\n |\n ^^^\"#)" ---- -[ - { - "label": "document", - "detail": "built-in", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_simple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_simple.snap deleted file mode 100644 index f892dba5a7..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_simple.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\begin{doc\n |\n ^^^\"#)" ---- -[ - { - "label": "document", - "detail": "built-in", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_simple_end.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_simple_end.snap deleted file mode 100644 index 95a2e1db04..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__component_environment_simple_end.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\begin{document}\n\\end{\n |\"#)" ---- -[ - { - "label": "abstract", - "detail": "built-in", - "preselect": false - }, - { - "label": "array", - "detail": "built-in", - "preselect": false - }, - { - "label": "center", - "detail": "built-in", - "preselect": false - }, - { - "label": "csname", - "detail": "built-in", - "preselect": false - }, - { - "label": "document", - "detail": "built-in", - "preselect": true - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_after_preamble.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_after_preamble.snap deleted file mode 100644 index 0fd8b00254..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_after_preamble.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@preamble{\n |\n ^^^^^^^^\"#)" ---- -[ - { - "label": "preamble", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_after_string.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_after_string.snap deleted file mode 100644 index 6844fc1862..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_after_string.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@string{\n |\n ^^^^^^\"#)" ---- -[ - { - "label": "string", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_at_empty.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_at_empty.snap deleted file mode 100644 index e74f5fed37..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_at_empty.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@\n |\"#)" ---- -[ - { - "label": "article", - "preselect": false - }, - { - "label": "artwork", - "preselect": false - }, - { - "label": "audio", - "preselect": false - }, - { - "label": "bibnote", - "preselect": false - }, - { - "label": "book", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_article.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_article.snap deleted file mode 100644 index f9defdee01..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_article.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article\n |\n ^^^^^^^\"#)" ---- -[ - { - "label": "article", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_preamble.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_preamble.snap deleted file mode 100644 index aad03a392b..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_preamble.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@preamble\n |\n ^^^^^^^^\"#)" ---- -[ - { - "label": "preamble", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_string.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_string.snap deleted file mode 100644 index e30c60a45c..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_before_string.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@string\n |\n ^^^^^^\"#)" ---- -[ - { - "label": "string", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_complete_entry.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_complete_entry.snap deleted file mode 100644 index 2724026a26..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__entry_type_complete_entry.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article{foo, author = {foo}}\n |\n ^^^^^^^\"#)" ---- -[ - { - "label": "article", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_empty_entry_closed.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_empty_entry_closed.snap deleted file mode 100644 index a5a1d7838e..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_empty_entry_closed.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article{foo,}\n |\"#)" ---- -[ - { - "label": "abstract", - "preselect": false - }, - { - "label": "addendum", - "preselect": false - }, - { - "label": "address", - "preselect": false - }, - { - "label": "afterword", - "preselect": false - }, - { - "label": "annotation", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_empty_entry_open.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_empty_entry_open.snap deleted file mode 100644 index 693d4ed141..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_empty_entry_open.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article{foo,\n |\"#)" ---- -[ - { - "label": "abstract", - "preselect": false - }, - { - "label": "addendum", - "preselect": false - }, - { - "label": "address", - "preselect": false - }, - { - "label": "afterword", - "preselect": false - }, - { - "label": "annotation", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_field_name.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_field_name.snap deleted file mode 100644 index cb0d41ed5d..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_field_name.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article{foo, a\n |\n ^\"#)" ---- -[ - { - "label": "abstract", - "preselect": false - }, - { - "label": "addendum", - "preselect": false - }, - { - "label": "address", - "preselect": false - }, - { - "label": "afterword", - "preselect": false - }, - { - "label": "annotation", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_two_fields_name_closed.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_two_fields_name_closed.snap deleted file mode 100644 index 66dbf62785..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_two_fields_name_closed.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article{foo, author = bar, edit}\n |\n ^^^^\"#)" ---- -[ - { - "label": "edition", - "preselect": false - }, - { - "label": "editor", - "preselect": false - }, - { - "label": "editora", - "preselect": false - }, - { - "label": "editoratype", - "preselect": false - }, - { - "label": "editorb", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_two_fields_name_open.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_two_fields_name_open.snap deleted file mode 100644 index 221f78f335..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__field_entry_two_fields_name_open.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.bib\n@article{foo, author = bar, edit\n |\n ^^^^\"#)" ---- -[ - { - "label": "edition", - "preselect": false - }, - { - "label": "editor", - "preselect": false - }, - { - "label": "editora", - "preselect": false - }, - { - "label": "editoratype", - "preselect": false - }, - { - "label": "editorb", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__glossary_ref_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__glossary_ref_open_brace.snap deleted file mode 100644 index 1be95d5d99..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__glossary_ref_open_brace.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}\n\\gls{f\n |\n ^\"#)" ---- -[ - { - "label": "fpsLabel", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__glossary_ref_simple.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__glossary_ref_simple.snap deleted file mode 100644 index 81e9299d69..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__glossary_ref_simple.snap +++ /dev/null @@ -1,10 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newacronym[longplural={Frames per Second}]{fpsLabel}{FPS}{Frame per Second}\n\\gls{f}\n |\n ^\"#)" ---- -[ - { - "label": "fpsLabel", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_class_closed_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_class_closed_brace.snap deleted file mode 100644 index 9ed7978612..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_class_closed_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\documentclass{art}\n |\n ^^^\"#)" ---- -[ - { - "label": "article", - "preselect": false - }, - { - "label": "articleingud", - "preselect": false - }, - { - "label": "articoletteracdp", - "preselect": false - }, - { - "label": "artikel1", - "preselect": false - }, - { - "label": "artikel2", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_class_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_class_open_brace.snap deleted file mode 100644 index b650b621c6..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_class_open_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\documentclass{art \\foo\n |\n ^^^\"#)" ---- -[ - { - "label": "article", - "preselect": false - }, - { - "label": "articleingud", - "preselect": false - }, - { - "label": "articoletteracdp", - "preselect": false - }, - { - "label": "artikel1", - "preselect": false - }, - { - "label": "artikel2", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_package_closed_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_package_closed_brace.snap deleted file mode 100644 index f8cad5526c..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_package_closed_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepackage{lips}\n |\n ^^^^\"#)" ---- -[ - { - "label": "lips", - "preselect": false - }, - { - "label": "lipsum", - "preselect": false - }, - { - "label": "lisp-simple-alloc", - "preselect": false - }, - { - "label": "lisp-string", - "preselect": false - }, - { - "label": "lwarp-lips", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_package_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_package_open_brace.snap deleted file mode 100644 index d234241e24..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__import_package_open_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepackage{lips\n |\n ^^^^\"#)" ---- -[ - { - "label": "lips", - "preselect": false - }, - { - "label": "lipsum", - "preselect": false - }, - { - "label": "lisp-simple-alloc", - "preselect": false - }, - { - "label": "lisp-string", - "preselect": false - }, - { - "label": "lwarp-lips", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_857_1.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_857_1.snap deleted file mode 100644 index 2b8f89b48d..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_857_1.snap +++ /dev/null @@ -1,21 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! bug.tex\n\\documentclass{article}\n\\newcommand{\\ö}{foo}\n\\newcommand{\\öö}{bar}\n\\newcommand{\\ööabc}{baz}\n\\begin{document}\n\\ö\n |\n ^\n\\end{document}\n\"#)" ---- -[ - { - "label": "ö", - "detail": "user-defined", - "preselect": false - }, - { - "label": "öö", - "detail": "user-defined", - "preselect": false - }, - { - "label": "ööabc", - "detail": "user-defined", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_864.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_864.snap deleted file mode 100644 index c49510429d..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_864.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! bug.tex\n\\documentclass{article}\n\\def\\あいうえお{}\n\\begin{document}\n\\あ\n |\n ^\n\\end{document}\"#)" ---- -[ - { - "label": "あいうえお", - "detail": "user-defined", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_883.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_883.snap deleted file mode 100644 index 2f17e08bdb..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_883.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! bug.tex\n\\begin{doc\n |\n ^^^\n% Comment\"#)" ---- -[ - { - "label": "document", - "detail": "built-in", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_885.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_885.snap deleted file mode 100644 index 2f286288b9..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__issue_885.snap +++ /dev/null @@ -1,18 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\documentclass{book}\n\\usepackage{import}\n\\begin{document}\n\\subincludefrom{part 1}{main}\n\\include{part 2/main}\n\n\\ref{sec}\n |\n ^^^\n\\end{document}\n\n%! part 1/main.tex\n\\part{1}\n\\label{part 1}\n\\subimport{chapter 1}{main}\n\n%! part 1/chapter 1/main.tex\n\\chapter{1}\n\\label{chapter 1}\n\\subimport{./}{section 1}\n%\\subimport{}{section 1}\n\n%! part 1/chapter 1/section 1.tex\n\\section{1}\n\\label{section 1}\n\n%! part 2/main.tex\n\\part{2}\n\\label{part 2}\n\\input{part 2/chapter 2/main}\n\n%! part 2/chapter 2/main.tex\n\\chapter{2}\n\\label{chapter 2}\n\\input{part 2/chapter 2/section 2}\n\n%! part 2/chapter 2/section 2.tex\n\\section{2}\n\\label{section 2}\n\"#)" ---- -[ - { - "label": "section 1", - "detail": "Section (1)", - "preselect": false, - "filterText": "section 1 Section (1)" - }, - { - "label": "section 2", - "detail": "Section (2)", - "preselect": false, - "filterText": "section 2 Section (2)" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__label.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__label.snap deleted file mode 100644 index a186c56920..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__label.snap +++ /dev/null @@ -1,36 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! foo.tex\n\\documentclass{article}\n\n\\usepackage{amsmath}\n\\usepackage{caption}\n\\usepackage{amsthm}\n\\newtheorem{lemma}{Lemma}\n\n\\begin{document}\n\n\\section{Foo}%\n\\label{sec:foo}\n\n\\begin{equation}%\n\\label{eq:foo}\n 1 + 1 = 2\n\\end{equation}\n\n\\begin{equation}%\n\\label{eq:bar}\n 1 + 1 = 2\n\\end{equation}\n\n\\begin{figure}%\n\\LaTeX{}\n\\caption{Baz}%\n\\label{fig:baz}\n\\end{figure}\n\n\\begin{lemma}%\n\\label{thm:foo}\n 1 + 1 = 2\n\\end{lemma}\n\n\\include{bar}\n\n\\end{document}\n\n%! bar.tex\n\\section{Bar}%\n\\label{sec:bar}\n\nLorem ipsum dolor sit amet.\n\\ref{}\n |\n\n%! foo.aux\n\\relax\n\\@writefile{lof}{\\contentsline {figure}{\\numberline {1}{\\ignorespaces Baz\\relax }}{1}\\protected@file@percent }\n\\providecommand*\\caption@xref[2]{\\@setref\\relax\\@undefined{#1}}\n\\newlabel{fig:baz}{{1}{1}}\n\\@writefile{toc}{\\contentsline {section}{\\numberline {1}Foo}{1}\\protected@file@percent }\n\\newlabel{sec:foo}{{1}{1}}\n\\newlabel{eq:foo}{{1}{1}}\n\\newlabel{eq:bar}{{2}{1}}\n\\newlabel{thm:foo}{{1}{1}}\n\\@input{bar.aux}\"#)" ---- -[ - { - "label": "eq:bar", - "detail": "Equation (2)", - "preselect": false, - "filterText": "eq:bar Equation (2)" - }, - { - "label": "eq:foo", - "detail": "Equation (1)", - "preselect": false, - "filterText": "eq:foo Equation (1)" - }, - { - "label": "fig:baz", - "detail": "Figure 1", - "preselect": false, - "filterText": "fig:baz Figure 1: Baz" - }, - { - "label": "sec:bar", - "detail": "Section (Bar)", - "preselect": false, - "filterText": "sec:bar Section (Bar)" - }, - { - "label": "sec:foo", - "detail": "Section 1 (Foo)", - "preselect": false, - "filterText": "sec:foo Section 1 (Foo)" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__project_resolution_import.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__project_resolution_import.snap deleted file mode 100644 index 351dc96deb..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__project_resolution_import.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\documentclass{article}\n\\import{sub}{sub/sub.tex}\n\\lipsu\n |\n ^^^^^\n\n%! sub/sub.tex\n\\input{child.tex}\n\n%! sub/child.tex\n\\usepackage{lipsum}\"#)" ---- -[ - { - "label": "LipsumPar", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "LipsumProtect", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "LipsumRestoreAll", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "lipsum", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "lipsumexp", - "detail": "lipsum.sty", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__project_resolution_texlabroot.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__project_resolution_texlabroot.snap deleted file mode 100644 index 8ddefbc6ad..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__project_resolution_texlabroot.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! src/main.tex\n\\documentclass{article}\n\\include{src/foo}\n\\lipsu\n |\n ^^^^^\n\n%! src/foo.tex\n\\include{src/bar}\n\n%! src/bar.tex\n\\usepackage{lipsum}\n\n%! .texlabroot\"#)" ---- -[ - { - "label": "LipsumPar", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "LipsumProtect", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "LipsumRestoreAll", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "lipsum", - "detail": "lipsum.sty", - "preselect": false - }, - { - "label": "lipsumexp", - "detail": "lipsum.sty", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__theorem_begin.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__theorem_begin.snap deleted file mode 100644 index f60725667f..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__theorem_begin.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newtheorem{lemma}{Lemma}\n\\begin{lem\n |\n ^^^\"#)" ---- -[ - { - "label": "lemma", - "detail": "user-defined", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__theorem_end.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__theorem_end.snap deleted file mode 100644 index 0ec951db1d..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__theorem_end.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\newtheorem{lemma}{Lemma}\n\\begin{}\n\\end{lem\n |\n ^^^\"#)" ---- -[ - { - "label": "lemma", - "detail": "user-defined", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__tikz_library_closed_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__tikz_library_closed_brace.snap deleted file mode 100644 index e727fbbc1d..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__tikz_library_closed_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepgflibrary{}\n |\"#)" ---- -[ - { - "label": "arrows", - "preselect": false - }, - { - "label": "arrows.meta", - "preselect": false - }, - { - "label": "arrows.spaced", - "preselect": false - }, - { - "label": "curvilinear", - "preselect": false - }, - { - "label": "datavisualization.barcharts", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__tikz_library_open_brace.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__tikz_library_open_brace.snap deleted file mode 100644 index 668b445c91..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__tikz_library_open_brace.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\usepgflibrary{\n |\"#)" ---- -[ - { - "label": "arrows", - "preselect": false - }, - { - "label": "arrows.meta", - "preselect": false - }, - { - "label": "arrows.spaced", - "preselect": false - }, - { - "label": "curvilinear", - "preselect": false - }, - { - "label": "datavisualization.barcharts", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__user_command.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__user_command.snap deleted file mode 100644 index ce8c10d8e9..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__user_command.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\foobar\n\\fooba\n |\n ^^^^^\n\\begin{foo}\n\\end{foo}\n\\begin{fo}\"#)" ---- -[ - { - "label": "foobar", - "detail": "user-defined", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__user_environment.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__user_environment.snap deleted file mode 100644 index c46a9beb26..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__completion__user_environment.snap +++ /dev/null @@ -1,16 +0,0 @@ ---- -source: tests/lsp/text_document/completion.rs -expression: "complete(r#\"\n%! main.tex\n\\foobar\n\\fooba\n\\begin{foo}\n\\end{foo}\n\\begin{fo}\n |\n ^^\"#)" ---- -[ - { - "label": "filecontents", - "detail": "built-in", - "preselect": false - }, - { - "label": "foo", - "detail": "user-defined", - "preselect": false - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_link__document_import.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_link__document_import.snap deleted file mode 100644 index 24e4efd8aa..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_link__document_import.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/document_link.rs -expression: "find_links(r#\"\n%! foo.tex\n\\import{.}{bar/baz}\n|\n\n%! bar/baz.tex\"#)" ---- -[ - { - "range": { - "start": { - "line": 0, - "character": 11 - }, - "end": { - "line": 0, - "character": 18 - } - }, - "target": "redacted://bar/baz.tex" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_link__document_include.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_link__document_include.snap deleted file mode 100644 index c19654b797..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_link__document_include.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/document_link.rs -expression: "find_links(r#\"\n%! foo.tex\n\\input{bar.tex}\n|\n\n%! bar.tex\"#)" ---- -[ - { - "range": { - "start": { - "line": 0, - "character": 7 - }, - "end": { - "line": 0, - "character": 14 - } - }, - "target": "redacted://bar.tex" - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_symbol__smoke.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_symbol__smoke.snap deleted file mode 100644 index 061fc93c95..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__document_symbol__smoke.snap +++ /dev/null @@ -1,103 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/document_symbol.rs -expression: symbols ---- -[ - DocumentSymbol { - name: "Foo", - detail: None, - kind: Module, - tags: None, - deprecated: Some( - false, - ), - range: Range { - start: Position { - line: 0, - character: 0, - }, - end: Position { - line: 0, - character: 30, - }, - }, - selection_range: Range { - start: Position { - line: 0, - character: 0, - }, - end: Position { - line: 0, - character: 30, - }, - }, - children: Some( - [ - DocumentSymbol { - name: "Bar", - detail: None, - kind: Module, - tags: None, - deprecated: Some( - false, - ), - range: Range { - start: Position { - line: 0, - character: 14, - }, - end: Position { - line: 0, - character: 30, - }, - }, - selection_range: Range { - start: Position { - line: 0, - character: 14, - }, - end: Position { - line: 0, - character: 30, - }, - }, - children: Some( - [], - ), - }, - ], - ), - }, - DocumentSymbol { - name: "Baz", - detail: None, - kind: Module, - tags: None, - deprecated: Some( - false, - ), - range: Range { - start: Position { - line: 0, - character: 31, - }, - end: Position { - line: 0, - character: 44, - }, - }, - selection_range: Range { - start: Position { - line: 0, - character: 31, - }, - end: Position { - line: 0, - character: 44, - }, - }, - children: Some( - [], - ), - }, -] diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_command.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_command.snap deleted file mode 100644 index b98dd68758..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_command.snap +++ /dev/null @@ -1,7 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@article{foo, bar = \"\\baz\",}\n|\"#)" ---- -@article{foo, - bar = "\baz", -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_insert_braces.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_insert_braces.snap deleted file mode 100644 index a95f5d3006..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_insert_braces.snap +++ /dev/null @@ -1,7 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@article{foo, bar = baz,\n|\"#)" ---- -@article{foo, - bar = baz, -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_join_strings.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_join_strings.snap deleted file mode 100644 index 3ea6bf18ad..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_join_strings.snap +++ /dev/null @@ -1,7 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@article{foo, bar = \"baz\" # \"qux\"}\n|\"#)" ---- -@article{foo, - bar = "baz" # "qux", -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_multiple_entries.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_multiple_entries.snap deleted file mode 100644 index 966f133a76..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_multiple_entries.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, \nconsectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},}\n\n@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, \nconsectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},}\"\n|\"#)" ---- -@article{foo, - bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum - dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit - amet, consectetur adipiscing elit.}, -} - -@article{foo, - bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum - dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit - amet, consectetur adipiscing elit.}, -}" diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_parens.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_parens.snap deleted file mode 100644 index ca317db108..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_parens.snap +++ /dev/null @@ -1,6 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@article(foo,)\n|\"#)" ---- -@article{foo, -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_preamble.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_preamble.snap deleted file mode 100644 index 6448e3a791..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_preamble.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@preamble{\n \"foo bar baz\" }\n|\"#)" ---- -@preamble{"foo bar baz"} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_string.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_string.snap deleted file mode 100644 index a1739290fd..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_string.snap +++ /dev/null @@ -1,5 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@string{foo=\"bar\"}\n|\"#)" ---- -@string{foo = "bar"} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_trailing_comma.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_trailing_comma.snap deleted file mode 100644 index dd5c7b49f0..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_trailing_comma.snap +++ /dev/null @@ -1,7 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@article{foo, bar = baz}\n|\"#)" ---- -@article{foo, - bar = baz, -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_wrap_long_lines.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_wrap_long_lines.snap deleted file mode 100644 index c52b8a9317..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__formatting__bibtex_internal_wrap_long_lines.snap +++ /dev/null @@ -1,9 +0,0 @@ ---- -source: tests/lsp/text_document/formatting.rs -expression: "format(r#\"\n%! main.bib\n@article{foo, bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nLorem ipsum dolor sit amet,\nconsectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.},}\n|\"#)" ---- -@article{foo, - bar = {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum - dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit - amet, consectetur adipiscing elit.}, -} diff --git a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__inlay_hint__label_definition.snap b/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__inlay_hint__label_definition.snap deleted file mode 100644 index 050ae5afd3..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/text_document/snapshots/lsp__text_document__inlay_hint__label_definition.snap +++ /dev/null @@ -1,38 +0,0 @@ ---- -source: crates/texlab/tests/lsp/text_document/inlay_hint.rs -expression: "find_hints(r#\"\n%! main.tex\n\\documentclass{article}\n\\usepackage{caption}\n\\begin{document}\n\\section{Foo}\\label{sec:foo}\n\\section{Bar}\\label{sec:bar}\n\\subsection{Baz}\\label{sec:baz}\n\\begin{figure}\n Test\n \\label{fig:qux}\n \\caption{Qux}\n\\end{figure}\n\\end{document}\n |\n\n%! main.aux\n\\relax \n\\providecommand*\\caption@xref[2]{\\@setref\\relax\\@undefined{#1}}\n\\newlabel{fig:qux}{{\\caption@xref {fig:qux}{ on input line 15}}{1}}\n\\@writefile{lof}{\\contentsline {figure}{\\numberline {1}{\\ignorespaces Qux\\relax }}{1}{}\\protected@file@percent }\n\\@writefile{toc}{\\contentsline {section}{\\numberline {1}Foo}{1}{}\\protected@file@percent }\n\\newlabel{sec:foo}{{1}{1}}\n\\@writefile{toc}{\\contentsline {section}{\\numberline {2}Bar}{1}{}\\protected@file@percent }\n\\newlabel{sec:bar}{{2}{1}}\n\\@writefile{toc}{\\contentsline {subsection}{\\numberline {2.1}Baz}{1}{}\\protected@file@percent }\n\\newlabel{sec:baz}{{2.1}{1}}\n\\gdef \\@abspage@last{1}\"#)" ---- -[ - { - "position": { - "line": 3, - "character": 28 - }, - "label": " Section 1 ", - "paddingLeft": true - }, - { - "position": { - "line": 4, - "character": 28 - }, - "label": " Section 2 ", - "paddingLeft": true - }, - { - "position": { - "line": 5, - "character": 31 - }, - "label": " Subsection 2.1 ", - "paddingLeft": true - }, - { - "position": { - "line": 8, - "character": 19 - }, - "label": " Figure fig:qux ", - "paddingLeft": true - } -] diff --git a/support/texlab/crates/texlab/tests/lsp/workspace.rs b/support/texlab/crates/texlab/tests/lsp/workspace.rs deleted file mode 100644 index 15e0679dea..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/workspace.rs +++ /dev/null @@ -1 +0,0 @@ -mod symbol; diff --git a/support/texlab/crates/texlab/tests/lsp/workspace/snapshots/lsp__workspace__symbol__smoke.snap b/support/texlab/crates/texlab/tests/lsp/workspace/snapshots/lsp__workspace__symbol__smoke.snap deleted file mode 100644 index 20c012bec9..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/workspace/snapshots/lsp__workspace__symbol__smoke.snap +++ /dev/null @@ -1,78 +0,0 @@ ---- -source: crates/texlab/tests/lsp/workspace/symbol.rs -expression: symbols ---- -[ - SymbolInformation { - name: "Foo", - kind: Module, - tags: None, - deprecated: Some( - false, - ), - location: Location { - uri: Url { - scheme: "redacted", - cannot_be_a_base: false, - username: "", - password: None, - host: Some( - Domain( - "main.tex", - ), - ), - port: None, - path: "", - query: None, - fragment: None, - }, - range: Range { - start: Position { - line: 7, - character: 0, - }, - end: Position { - line: 8, - character: 3, - }, - }, - }, - container_name: None, - }, - SymbolInformation { - name: "Bar", - kind: Module, - tags: None, - deprecated: Some( - false, - ), - location: Location { - uri: Url { - scheme: "redacted", - cannot_be_a_base: false, - username: "", - password: None, - host: Some( - Domain( - "main.tex", - ), - ), - port: None, - path: "", - query: None, - fragment: None, - }, - range: Range { - start: Position { - line: 10, - character: 0, - }, - end: Position { - line: 11, - character: 3, - }, - }, - }, - container_name: None, - }, -] diff --git a/support/texlab/crates/texlab/tests/lsp/workspace/symbol.rs b/support/texlab/crates/texlab/tests/lsp/workspace/symbol.rs deleted file mode 100644 index 8deae20a44..0000000000 --- a/support/texlab/crates/texlab/tests/lsp/workspace/symbol.rs +++ /dev/null @@ -1,48 +0,0 @@ -use insta::assert_debug_snapshot; -use lsp_types::{ - request::WorkspaceSymbolRequest, ClientCapabilities, WorkspaceSymbolParams, - WorkspaceSymbolResponse, -}; - -use crate::fixture::TestBed; - -#[test] -fn test_smoke() { - let test_bed = TestBed::new( - r#" -%! main.tex -\documentclass{article} -\usepackage{caption} -\usepackage{amsmath} -\usepackage{amsthm} - -\begin{document} - -\section{Foo}\label{sec:foo} -Foo - -\section{Bar} -Bar - -\end{document} -"#, - ) - .unwrap(); - - test_bed.initialize(ClientCapabilities::default()).unwrap(); - - let Some(WorkspaceSymbolResponse::Flat(mut symbols)) = test_bed - .client() - .send_request::<WorkspaceSymbolRequest>(WorkspaceSymbolParams { - query: String::new(), - work_done_progress_params: Default::default(), - partial_result_params: Default::default(), - }) - .unwrap() else { unreachable!() }; - - for symbol in &mut symbols { - symbol.location.uri = test_bed.redact(&symbol.location.uri); - } - - assert_debug_snapshot!(symbols); -} diff --git a/support/texlab/texlab.1 b/support/texlab/texlab.1 index 23418dce4c..18919ec9a3 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" "November 2023" "texlab 5.11.0" "User Commands" +.TH TEXLAB "1" "December 2023" "texlab 5.12.0" "User Commands" .SH NAME -texlab \- manual page for texlab 5.11.0 +texlab \- manual page for texlab 5.12.0 .SH SYNOPSIS .B texlab [\fI\,OPTIONS\/\fR] diff --git a/support/texlab/texlab.pdf b/support/texlab/texlab.pdf Binary files differindex d989a13e2e..ac225c8f02 100644 --- a/support/texlab/texlab.pdf +++ b/support/texlab/texlab.pdf |