on 8736ce3 help sign in
21 files changed+190−683
since splitsnapshots
unifiedsplit
.github/workflows/release.yml+5−5 Cargo.lock+84−103 book/src/generated/lang-support.md−1 book/src/languages.md−1 helix-core/src/diagnostic.rs−4 helix-core/src/syntax.rs−2 helix-core/src/transaction.rs+14−73 helix-lsp/Cargo.toml+1−1 helix-lsp/src/client.rs−1 helix-term/src/application.rs+38−80 helix-vcs/Cargo.toml+1−1 helix-view/src/document.rs+20−57 languages.toml+1−16 logo.svg+1−1 runtime/queries/smali/folds.scm−12 runtime/queries/smali/highlights.scm−216 runtime/queries/smali/indents.scm−31 runtime/queries/smali/injections.scm−2 runtime/queries/smali/locals.scm−42 runtime/themes/noctis.toml+25−25 runtime/themes/nord.toml−9
.github/workflows/release.yml+5−5
@@ -36,7 +36,7 @@ jobs:
3636 - name: Bundle grammars
3737 run: tar cJf grammars.tar.xz -C runtime/grammars/sources .
3838
39− - uses: actions/upload-artifact@v4
39+ - uses: actions/upload-artifact@v3
4040 with:
4141 name: grammars
4242 path: grammars.tar.xz
@@ -106,7 +106,7 @@ jobs:
106106 uses: actions/checkout@v4
107107
108108 - name: Download grammars
109− uses: actions/download-artifact@v4
109+ uses: actions/download-artifact@v3
110110
111111 - name: Move grammars under runtime
112112 if: "!startsWith(matrix.os, 'windows')"
@@ -220,7 +220,7 @@ jobs:
220220 fi
221221 cp -r runtime dist
222222
223− - uses: actions/upload-artifact@v4
223+ - uses: actions/upload-artifact@v3
224224 with:
225225 name: bins-${{ matrix.build }}
226226 path: dist
@@ -233,7 +233,7 @@ jobs:
233233 - name: Checkout sources
234234 uses: actions/checkout@v4
235235
236− - uses: actions/download-artifact@v4
236+ - uses: actions/download-artifact@v3
237237
238238 - name: Build archive
239239 shell: bash
@@ -288,7 +288,7 @@ jobs:
288288 overwrite: true
289289
290290 - name: Upload binaries as artifact
291− uses: actions/upload-artifact@v4
291+ uses: actions/upload-artifact@v3
292292 if: env.preview == 'true'
293293 with:
294294 name: release
Cargo.lock+84−103
@@ -62,9 +62,9 @@ dependencies = [
6262
6363[[package]]
6464name = "anyhow"
65−version = "1.0.76"
65+version = "1.0.75"
6666source = "registry+https://github.com/rust-lang/crates.io-index"
67−checksum = "59d2a3357dde987206219e78ecfbbb6e8dad06cbb65292758d3270e6254f7355"
67+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
6868
6969[[package]]
7070name = "arc-swap"
@@ -469,9 +469,9 @@ dependencies = [
469469
470470[[package]]
471471name = "futures-core"
472−version = "0.3.30"
472+version = "0.3.29"
473473source = "registry+https://github.com/rust-lang/crates.io-index"
474−checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
474+checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
475475
476476[[package]]
477477name = "futures-executor"
@@ -486,15 +486,15 @@ dependencies = [
486486
487487[[package]]
488488name = "futures-task"
489−version = "0.3.30"
489+version = "0.3.29"
490490source = "registry+https://github.com/rust-lang/crates.io-index"
491−checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
491+checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
492492
493493[[package]]
494494name = "futures-util"
495−version = "0.3.30"
495+version = "0.3.29"
496496source = "registry+https://github.com/rust-lang/crates.io-index"
497−checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
497+checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
498498dependencies = [
499499 "futures-core",
500500 "futures-task",
@@ -522,9 +522,9 @@ checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
522522
523523[[package]]
524524name = "gix"
525−version = "0.57.0"
525+version = "0.56.0"
526526source = "registry+https://github.com/rust-lang/crates.io-index"
527−checksum = "721c7497ab24b665ed5a1eb2b3526936aa60068e61ba260651f7e77c52feec69"
527+checksum = "5b0dcdc9c60d66535897fa40a7ea2a635e72f99456b1d9ae86b7e170e80618cb"
528528dependencies = [
529529 "gix-actor",
530530 "gix-commitgraph",
@@ -563,9 +563,9 @@ dependencies = [
563563
564564[[package]]
565565name = "gix-actor"
566−version = "0.29.0"
566+version = "0.28.1"
567567source = "registry+https://github.com/rust-lang/crates.io-index"
568−checksum = "886014c4865b93ce268f1d3eddd4fd3261242c3f3ee61eb36009f913016a9059"
568+checksum = "2eadca029ef716b4378f7afb19f7ee101fde9e58ba1f1445971315ac866db417"
569569dependencies = [
570570 "bstr",
571571 "btoi",
@@ -577,18 +577,18 @@ dependencies = [
577577
578578[[package]]
579579name = "gix-chunk"
580−version = "0.4.6"
580+version = "0.4.5"
581581source = "registry+https://github.com/rust-lang/crates.io-index"
582−checksum = "2ade37ef69870de0ed966b97c57a3a947a22ff3482a52c3b99b205f77bcb08fb"
582+checksum = "d411ecd9b558b0c20b3252b7e409eec48eabc41d18324954fe526bac6e2db55f"
583583dependencies = [
584584 "thiserror",
585585]
586586
587587[[package]]
588588name = "gix-commitgraph"
589−version = "0.23.0"
589+version = "0.22.1"
590590source = "registry+https://github.com/rust-lang/crates.io-index"
591−checksum = "e7559ea9cefee188cd88b05afcc8e3ef7a3cb4a5c647bccf06b981e591b02b77"
591+checksum = "85a7007ba021f059803afaf6f8a48872422abc20550ac12ede6ddea2936cec36"
592592dependencies = [
593593 "bstr",
594594 "gix-chunk",
@@ -600,9 +600,9 @@ dependencies = [
600600
601601[[package]]
602602name = "gix-config"
603−version = "0.33.0"
603+version = "0.32.1"
604604source = "registry+https://github.com/rust-lang/crates.io-index"
605−checksum = "9c35dc7f9c00a42bbc9cfa1ca2ec0a78ad1b76ff0736d3d35dfd612962244467"
605+checksum = "0341471d55d8676e98b88e121d7065dfa4c9c5acea4b6d6ecdd2846e85cce0c3"
606606dependencies = [
607607 "bstr",
608608 "gix-config-value",
@@ -621,9 +621,9 @@ dependencies = [
621621
622622[[package]]
623623name = "gix-config-value"
624−version = "0.14.2"
624+version = "0.14.1"
625625source = "registry+https://github.com/rust-lang/crates.io-index"
626−checksum = "39f388cb2396aee82d6f460a2e7770659bdf8854e9e5478f7d2b1324a9698284"
626+checksum = "6419db582ea84dfb58c7e7b0af7fd62c808aa14954af2936a33f89b0f4ed018e"
627627dependencies = [
628628 "bitflags 2.4.1",
629629 "bstr",
@@ -634,9 +634,9 @@ dependencies = [
634634
635635[[package]]
636636name = "gix-date"
637−version = "0.8.2"
637+version = "0.8.1"
638638source = "registry+https://github.com/rust-lang/crates.io-index"
639−checksum = "9d85f4a01e0d05c3de585e28bae514d4baf01655e3fc3f14ce6f30bf62405345"
639+checksum = "468dfbe411f335f01525a1352271727f8e7772075a93fa747260f502086b30be"
640640dependencies = [
641641 "bstr",
642642 "itoa",
@@ -646,9 +646,9 @@ dependencies = [
646646
647647[[package]]
648648name = "gix-diff"
649−version = "0.39.0"
649+version = "0.38.0"
650650source = "registry+https://github.com/rust-lang/crates.io-index"
651−checksum = "ac0e75f5afd2f6c47c800b6b0a000a08045739d0450d20482e8faa42543f62d1"
651+checksum = "8119a985887cfe68f4bdf92e51bd64bc758a73882d82fcfc03ebcb164441c85d"
652652dependencies = [
653653 "bstr",
654654 "gix-hash",
@@ -658,9 +658,9 @@ dependencies = [
658658
659659[[package]]
660660name = "gix-discover"
661−version = "0.28.0"
661+version = "0.27.0"
662662source = "registry+https://github.com/rust-lang/crates.io-index"
663−checksum = "f0b63ce2ad81632ac1a84ac370f85a5e580c3261580bd85ea17ff35d3a0bba18"
663+checksum = "6fad89416ebe0b3b7df78464124e2a02417b6cd3743d48ad93df86f4d2929c07"
664664dependencies = [
665665 "bstr",
666666 "dunce",
@@ -673,9 +673,9 @@ dependencies = [
673673
674674[[package]]
675675name = "gix-features"
676−version = "0.37.0"
676+version = "0.36.1"
677677source = "registry+https://github.com/rust-lang/crates.io-index"
678−checksum = "befe7edea299a824504b5acc96d7a3a538125b38c42f3a8379f6912a29c90c81"
678+checksum = "4d46a4a5c6bb5bebec9c0d18b65ada20e6517dbd7cf855b87dd4bbdce3a771b2"
679679dependencies = [
680680 "crc32fast",
681681 "flate2",
@@ -691,18 +691,18 @@ dependencies = [
691691
692692[[package]]
693693name = "gix-fs"
694−version = "0.9.0"
694+version = "0.8.1"
695695source = "registry+https://github.com/rust-lang/crates.io-index"
696−checksum = "007017ce93b819ea52c0ec68306f7d72212a2d307c3d70f1548c7141c015d0a1"
696+checksum = "20e86eb040f5776a5ade092282e51cdcad398adb77d948b88d17583c2ae4e107"
697697dependencies = [
698698 "gix-features",
699699]
700700
701701[[package]]
702702name = "gix-glob"
703−version = "0.15.0"
703+version = "0.14.1"
704704source = "registry+https://github.com/rust-lang/crates.io-index"
705−checksum = "61fb116c2516d3a1170e010118f639944a6389872c875a008960cdab2a44ac72"
705+checksum = "5db19298c5eeea2961e5b3bf190767a2d1f09b8802aeb5f258e42276350aff19"
706706dependencies = [
707707 "bitflags 2.4.1",
708708 "bstr",
@@ -712,9 +712,9 @@ dependencies = [
712712
713713[[package]]
714714name = "gix-hash"
715−version = "0.14.0"
715+version = "0.13.3"
716716source = "registry+https://github.com/rust-lang/crates.io-index"
717−checksum = "c52c3170a17b6031833cd2eb4ad7bc23f2755d06e6e70f78dec21d42e8fe1b30"
717+checksum = "1f8cf8c2266f63e582b7eb206799b63aa5fa68ee510ad349f637dfe2d0653de0"
718718dependencies = [
719719 "faster-hex",
720720 "thiserror",
@@ -722,9 +722,9 @@ dependencies = [
722722
723723[[package]]
724724name = "gix-hashtable"
725−version = "0.5.0"
725+version = "0.4.1"
726726source = "registry+https://github.com/rust-lang/crates.io-index"
727−checksum = "40a838e6366a5e5b84668b6997ce0981b833136468e8ba949f424c0ef2927eba"
727+checksum = "feb61880816d7ec4f0b20606b498147d480860ddd9133ba542628df2f548d3ca"
728728dependencies = [
729729 "gix-hash",
730730 "hashbrown 0.14.3",
@@ -733,9 +733,9 @@ dependencies = [
733733
734734[[package]]
735735name = "gix-lock"
736−version = "12.0.0"
736+version = "11.0.0"
737737source = "registry+https://github.com/rust-lang/crates.io-index"
738−checksum = "6cf112ddee94223c119a8534dad027740dc3aba3365ac5edeef8a7f6660c74db"
738+checksum = "f4feb1dcd304fe384ddc22edba9dd56a42b0800032de6537728cea2f033a4f37"
739739dependencies = [
740740 "gix-tempfile",
741741 "gix-utils",
@@ -744,9 +744,9 @@ dependencies = [
744744
745745[[package]]
746746name = "gix-macros"
747−version = "0.1.2"
747+version = "0.1.1"
748748source = "registry+https://github.com/rust-lang/crates.io-index"
749−checksum = "fc207b64189cf71bcb17fc841ab99a5d63d0845546b611e2703ce467f659323a"
749+checksum = "02a5bcaf6704d9354a3071cede7e77d366a5980c7352e102e2c2f9b645b1d3ae"
750750dependencies = [
751751 "proc-macro2",
752752 "quote",
@@ -755,9 +755,9 @@ dependencies = [
755755
756756[[package]]
757757name = "gix-object"
758−version = "0.40.0"
758+version = "0.39.0"
759759source = "registry+https://github.com/rust-lang/crates.io-index"
760−checksum = "e4c77e47ffba92127faf632a841fce23d19547e269bd8b88e68961a70eab4e93"
760+checksum = "febf79c5825720c1c63fe974c7bbe695d0cb54aabad73f45671c60ce0e501e33"
761761dependencies = [
762762 "bstr",
763763 "btoi",
@@ -774,9 +774,9 @@ dependencies = [
774774
775775[[package]]
776776name = "gix-odb"
777−version = "0.56.0"
777+version = "0.55.0"
778778source = "registry+https://github.com/rust-lang/crates.io-index"
779−checksum = "a3254f2005cc7553ea78e85e816a09150c6f7a64e6b7627b8d1fdc56721bea73"
779+checksum = "1fae5f971540c99c6ecc8d4368ecc9d18a9dc8b9391025c68c4399747dc93bac"
780780dependencies = [
781781 "arc-swap",
782782 "gix-date",
@@ -793,9 +793,9 @@ dependencies = [
793793
794794[[package]]
795795name = "gix-pack"
796−version = "0.46.0"
796+version = "0.45.0"
797797source = "registry+https://github.com/rust-lang/crates.io-index"
798−checksum = "02ebc8cd657eec207d82d8f876ca402361308ecd3c87a47935b0299506257b4f"
798+checksum = "4569491c92446fddf373456ff360aff9a9effd627b40a70f2d7914dcd75a3205"
799799dependencies = [
800800 "clru",
801801 "gix-chunk",
@@ -813,9 +813,9 @@ dependencies = [
813813
814814[[package]]
815815name = "gix-path"
816−version = "0.10.2"
816+version = "0.10.1"
817817source = "registry+https://github.com/rust-lang/crates.io-index"
818−checksum = "10931652a3da126990ac93bce1b1c600cc99d7c268d712b6360ed52174ce1b68"
818+checksum = "d86d6fac2fabe07b67b7835f46d07571f68b11aa1aaecae94fe722ea4ef305e1"
819819dependencies = [
820820 "bstr",
821821 "gix-trace",
@@ -826,9 +826,9 @@ dependencies = [
826826
827827[[package]]
828828name = "gix-quote"
829−version = "0.4.9"
829+version = "0.4.8"
830830source = "registry+https://github.com/rust-lang/crates.io-index"
831−checksum = "6c43530cb94a7759807e6f8d180e17ac9c65673b891645c6c433831dc0cf4342"
831+checksum = "4f84845efa535468bc79c5a87b9d29219f1da0313c8ecf0365a5daa7e72786f2"
832832dependencies = [
833833 "bstr",
834834 "btoi",
@@ -837,9 +837,9 @@ dependencies = [
837837
838838[[package]]
839839name = "gix-ref"
840−version = "0.40.0"
840+version = "0.39.0"
841841source = "registry+https://github.com/rust-lang/crates.io-index"
842−checksum = "baa951b3b850d6d1be4f900768e49af20b76bf9505beac22af723d57249a2f1d"
842+checksum = "1ac23ed741583c792f573c028785db683496a6dfcd672ec701ee54ba6a77e1ff"
843843dependencies = [
844844 "gix-actor",
845845 "gix-date",
@@ -858,9 +858,9 @@ dependencies = [
858858
859859[[package]]
860860name = "gix-refspec"
861−version = "0.21.0"
861+version = "0.20.0"
862862source = "registry+https://github.com/rust-lang/crates.io-index"
863−checksum = "88c61f849d58c06e3068a0b601cf10127d2a07cdad00a725ed66cf303f76f6b3"
863+checksum = "76d9d3b82e1ee78fc0dc1c37ea5ea76c2dbc73f407db155f0dfcea285e583bee"
864864dependencies = [
865865 "bstr",
866866 "gix-hash",
@@ -872,9 +872,9 @@ dependencies = [
872872
873873[[package]]
874874name = "gix-revision"
875−version = "0.25.0"
875+version = "0.24.0"
876876source = "registry+https://github.com/rust-lang/crates.io-index"
877−checksum = "bcbbf91f4200c5c76802ef5f057b96f5a336827508881fe55a780be71a794d22"
877+checksum = "fe5dd51710ce5434bc315ea30394fab483c5377276494edd79222b321a5a9544"
878878dependencies = [
879879 "bstr",
880880 "gix-date",
@@ -888,9 +888,9 @@ dependencies = [
888888
889889[[package]]
890890name = "gix-revwalk"
891−version = "0.11.0"
891+version = "0.10.0"
892892source = "registry+https://github.com/rust-lang/crates.io-index"
893−checksum = "33ab66354d83f70f2730391747d0c75f94ef3c3dd40ebde2e206db9faaf7a0a7"
893+checksum = "69d4ed2493ca94a475fdf147138e1ef8bab3b6ebb56abf3d9bda1c05372ec1dd"
894894dependencies = [
895895 "gix-commitgraph",
896896 "gix-date",
@@ -903,21 +903,21 @@ dependencies = [
903903
904904[[package]]
905905name = "gix-sec"
906−version = "0.10.2"
906+version = "0.10.1"
907907source = "registry+https://github.com/rust-lang/crates.io-index"
908−checksum = "a9963f38a42144253ed4d571882d7db5ef644c12e6726e4b75135597cc9d0e1a"
908+checksum = "a36ea2c5907d64a9b4b5d3cc9f430e6c30f0509646b5e38eb275ca57c5bf29e2"
909909dependencies = [
910910 "bitflags 2.4.1",
911911 "gix-path",
912912 "libc",
913− "windows 0.52.0",
913+ "windows",
914914]
915915
916916[[package]]
917917name = "gix-tempfile"
918−version = "12.0.0"
918+version = "11.0.0"
919919source = "registry+https://github.com/rust-lang/crates.io-index"
920−checksum = "e76a494bd530e1a1309188ff971825a24f159c76c2db0bf71fa5dfb469a2c915"
920+checksum = "05cc2205cf10d99f70b96e04e16c55d4c7cf33efc151df1f793e29fd12a931f8"
921921dependencies = [
922922 "gix-fs",
923923 "libc",
@@ -928,15 +928,15 @@ dependencies = [
928928
929929[[package]]
930930name = "gix-trace"
931−version = "0.1.5"
931+version = "0.1.4"
932932source = "registry+https://github.com/rust-lang/crates.io-index"
933−checksum = "bda62acb44dd86a40c7c3762a5403cfc1ac789ea559df54085cedf79864f809e"
933+checksum = "b686a35799b53a9825575ca3f06481d0a053a409c4d97ffcf5ddd67a8760b497"
934934
935935[[package]]
936936name = "gix-traverse"
937−version = "0.36.0"
937+version = "0.35.0"
938938source = "registry+https://github.com/rust-lang/crates.io-index"
939−checksum = "8661fab39985c9214e56d81a63ceb5886ac948cec2fba76c39494d1e0e307ea8"
939+checksum = "df2112088122a0206592c84fbd42020db63b2ccaed66a0293779f2e5fbf80474"
940940dependencies = [
941941 "gix-commitgraph",
942942 "gix-date",
@@ -950,9 +950,9 @@ dependencies = [
950950
951951[[package]]
952952name = "gix-url"
953−version = "0.26.0"
953+version = "0.25.2"
954954source = "registry+https://github.com/rust-lang/crates.io-index"
955−checksum = "10a0129c1e8b52736d7c5128300a4485dbc85863001371e2771ac1754bd89fd7"
955+checksum = "0c427a1a11ccfa53a4a2da47d9442c2241deee63a154bc15cc14b8312fbc4005"
956956dependencies = [
957957 "bstr",
958958 "gix-features",
@@ -964,18 +964,18 @@ dependencies = [
964964
965965[[package]]
966966name = "gix-utils"
967−version = "0.1.7"
967+version = "0.1.6"
968968source = "registry+https://github.com/rust-lang/crates.io-index"
969−checksum = "ab9277a5e32e85d53f738096d872a4a9b76067ad471894ad31bd99c8fa2da1dc"
969+checksum = "9f82c41937f00e15a1f6cb0b55307f0ca1f77f4407ff2bf440be35aa688c6a3e"
970970dependencies = [
971971 "fastrand",
972972]
973973
974974[[package]]
975975name = "gix-validate"
976−version = "0.8.2"
976+version = "0.8.1"
977977source = "registry+https://github.com/rust-lang/crates.io-index"
978−checksum = "f805ebbdbaa4bfd98e2ee43e6d14099b8a4d9141f5d7b8202fea4d48e44263e7"
978+checksum = "75b7d8e4274be69f284bbc7e6bb2ccf7065dbcdeba22d8c549f2451ae426883f"
979979dependencies = [
980980 "bstr",
981981 "thiserror",
@@ -1286,7 +1286,7 @@ dependencies = [
12861286 "iana-time-zone-haiku",
12871287 "js-sys",
12881288 "wasm-bindgen",
1289− "windows 0.48.0",
1289+ "windows",
12901290]
12911291
12921292[[package]]
@@ -1434,9 +1434,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
14341434
14351435[[package]]
14361436name = "lsp-types"
1437−version = "0.95.0"
1437+version = "0.94.1"
14381438source = "registry+https://github.com/rust-lang/crates.io-index"
1439−checksum = "158c1911354ef73e8fe42da6b10c0484cb65c7f1007f28022e847706c1ab6984"
1439+checksum = "c66bfd44a06ae10647fe3f8214762e9369fd4248df1350924b4ef9e770a85ea1"
14401440dependencies = [
14411441 "bitflags 1.3.2",
14421442 "serde",
@@ -1624,9 +1624,9 @@ dependencies = [
16241624
16251625[[package]]
16261626name = "prodash"
1627−version = "28.0.0"
1627+version = "26.2.2"
16281628source = "registry+https://github.com/rust-lang/crates.io-index"
1629−checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79"
1629+checksum = "794b5bf8e2d19b53dcdcec3e4bba628e20f5b6062503ba89281fa7037dd7bbcf"
16301630
16311631[[package]]
16321632name = "pulldown-cmark"
@@ -2028,18 +2028,18 @@ dependencies = [
20282028
20292029[[package]]
20302030name = "thiserror"
2031−version = "1.0.52"
2031+version = "1.0.51"
20322032source = "registry+https://github.com/rust-lang/crates.io-index"
2033−checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d"
2033+checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7"
20342034dependencies = [
20352035 "thiserror-impl",
20362036]
20372037
20382038[[package]]
20392039name = "thiserror-impl"
2040−version = "1.0.52"
2040+version = "1.0.51"
20412041source = "registry+https://github.com/rust-lang/crates.io-index"
2042−checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3"
2042+checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df"
20432043dependencies = [
20442044 "proc-macro2",
20452045 "quote",
@@ -2101,9 +2101,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
21012101
21022102[[package]]
21032103name = "tokio"
2104−version = "1.35.1"
2104+version = "1.35.0"
21052105source = "registry+https://github.com/rust-lang/crates.io-index"
2106−checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104"
2106+checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c"
21072107dependencies = [
21082108 "backtrace",
21092109 "bytes",
@@ -2384,25 +2384,6 @@ dependencies = [
23842384 "windows-targets 0.48.0",
23852385]
23862386
2387−[[package]]
2388−name = "windows"
2389−version = "0.52.0"
2390−source = "registry+https://github.com/rust-lang/crates.io-index"
2391−checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
2392−dependencies = [
2393− "windows-core",
2394− "windows-targets 0.52.0",
2395−]
2396−
2397−[[package]]
2398−name = "windows-core"
2399−version = "0.52.0"
2400−source = "registry+https://github.com/rust-lang/crates.io-index"
2401−checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
2402−dependencies = [
2403− "windows-targets 0.52.0",
2404−]
2405−
24062387[[package]]
24072388name = "windows-sys"
24082389version = "0.45.0"
book/src/generated/lang-support.md−1
@@ -148,7 +148,6 @@
148148| scheme | ✓ | | ✓ | |
149149| scss | ✓ | | | `vscode-css-language-server` |
150150| slint | ✓ | | ✓ | `slint-lsp` |
151−| smali | ✓ | | ✓ | |
152151| smithy | ✓ | | | `cs` |
153152| sml | ✓ | | | |
154153| solidity | ✓ | | | `solc` |
book/src/languages.md−1
@@ -69,7 +69,6 @@ These configuration keys are available:
6969| `soft-wrap` | [editor.softwrap](./configuration.md#editorsoft-wrap-section)
7070| `text-width` | Maximum line length. Used for the `:reflow` command and soft-wrapping if `soft-wrap.wrap-at-text-width` is set, defaults to `editor.text-width` |
7171| `workspace-lsp-roots` | Directories relative to the workspace root that are treated as LSP roots. Should only be set in `.helix/config.toml`. Overwrites the setting of the same name in `config.toml` if set. |
72−| `persistent-diagnostic-sources` | An array of LSP diagnostic sources assumed unchanged when the language server resends the same set of diagnostics. Helix can track the position for these diagnostics internally instead. Useful for diagnostics that are recomputed on save.
7372
7473### File-type detection and the `file-types` key
7574
helix-core/src/diagnostic.rs−4
@@ -39,10 +39,6 @@ pub enum DiagnosticTag {
3939#[derive(Debug, Clone)]
4040pub struct Diagnostic {
4141 pub range: Range,
42− // whether this diagnostic ends at the end of(or inside) a word
43− pub ends_at_word: bool,
44− pub starts_at_word: bool,
45− pub zero_width: bool,
4642 pub line: usize,
4743 pub message: String,
4844 pub severity: Option<Severity>,
helix-core/src/syntax.rs−2
@@ -155,8 +155,6 @@ pub struct LanguageConfiguration {
155155 /// Hardcoded LSP root directories relative to the workspace root, like `examples` or `tools/fuzz`.
156156 /// Falling back to the current working directory if none are configured.
157157 pub workspace_lsp_roots: Option<Vec<PathBuf>>,
158− #[serde(default)]
159− pub persistent_diagnostic_sources: Vec<String>,
160158}
161159
162160#[derive(Debug, PartialEq, Eq, Hash)]
helix-core/src/transaction.rs+14−73
@@ -1,7 +1,7 @@
11use ropey::RopeSlice;
22use smallvec::SmallVec;
33
4−use crate::{chars::char_is_word, Range, Rope, Selection, Tendril};
4+use crate::{Range, Rope, Selection, Tendril};
55use std::{borrow::Cow, iter::once};
66
77/// (from, to, replacement)
@@ -23,30 +23,6 @@ pub enum Operation {
2323pub enum Assoc {
2424 Before,
2525 After,
26− /// Acts like `After` if a word character is inserted
27− /// after the position, otherwise acts like `Before`
28− AfterWord,
29− /// Acts like `Before` if a word character is inserted
30− /// before the position, otherwise acts like `After`
31− BeforeWord,
32−}
33−
34−impl Assoc {
35− /// Whether to stick to gaps
36− fn stay_at_gaps(self) -> bool {
37− !matches!(self, Self::BeforeWord | Self::AfterWord)
38− }
39−
40− fn insert_offset(self, s: &str) -> usize {
41− let chars = s.chars().count();
42− match self {
43− Assoc::After => chars,
44− Assoc::AfterWord => s.chars().take_while(|&c| char_is_word(c)).count(),
45− // return position before inserted text
46− Assoc::Before => 0,
47− Assoc::BeforeWord => chars - s.chars().rev().take_while(|&c| char_is_word(c)).count(),
48− }
49− }
5026}
5127
5228#[derive(Debug, Default, Clone, PartialEq, Eq)]
@@ -439,6 +415,8 @@ impl ChangeSet {
439415 map!(|pos, _| (old_end > pos).then_some(new_pos), i);
440416 }
441417 Insert(s) => {
418+ let ins = s.chars().count();
419+
442420 // a subsequent delete means a replace, consume it
443421 if let Some((_, Delete(len))) = iter.peek() {
444422 iter.next();
@@ -446,13 +424,13 @@ impl ChangeSet {
446424 old_end = old_pos + len;
447425 // in range of replaced text
448426 map!(
449− |pos, assoc: Assoc| (old_end > pos).then(|| {
427+ |pos, assoc| (old_end > pos).then(|| {
450428 // at point or tracking before
451− if pos == old_pos && assoc.stay_at_gaps() {
429+ if pos == old_pos || assoc == Assoc::Before {
452430 new_pos
453431 } else {
454432 // place to end of insert
455− new_pos + assoc.insert_offset(s)
433+ new_pos + ins
456434 }
457435 }),
458436 i
@@ -460,15 +438,20 @@ impl ChangeSet {
460438 } else {
461439 // at insert point
462440 map!(
463− |pos, assoc: Assoc| (old_pos == pos).then(|| {
441+ |pos, assoc| (old_pos == pos).then(|| {
464442 // return position before inserted text
465− new_pos + assoc.insert_offset(s)
443+ if assoc == Assoc::Before {
444+ new_pos
445+ } else {
446+ // after text
447+ new_pos + ins
448+ }
466449 }),
467450 i
468451 );
469452 }
470453
471− new_pos += s.chars().count();
454+ new_pos += ins;
472455 }
473456 }
474457 old_pos = old_end;
@@ -901,48 +884,6 @@ mod test {
901884 let mut positions = [4, 2];
902885 cs.update_positions(positions.iter_mut().map(|pos| (pos, Assoc::After)));
903886 assert_eq!(positions, [4, 2]);
904− // stays at word boundary
905− let cs = ChangeSet {
906− changes: vec![
907− Retain(2), // <space><space>
908− Insert(" ab".into()),
909− Retain(2), // cd
910− Insert("de ".into()),
911− ],
912− len: 4,
913− len_after: 10,
914− };
915− assert_eq!(cs.map_pos(2, Assoc::BeforeWord), 3);
916− assert_eq!(cs.map_pos(4, Assoc::AfterWord), 9);
917− let cs = ChangeSet {
918− changes: vec![
919− Retain(1), // <space>
920− Insert(" b".into()),
921− Delete(1), // c
922− Retain(1), // d
923− Insert("e ".into()),
924− Delete(1), // <space>
925− ],
926− len: 5,
927− len_after: 7,
928− };
929− assert_eq!(cs.map_pos(1, Assoc::BeforeWord), 2);
930− assert_eq!(cs.map_pos(3, Assoc::AfterWord), 5);
931− let cs = ChangeSet {
932− changes: vec![
933− Retain(1), // <space>
934− Insert("a".into()),
935− Delete(2), // <space>b
936− Retain(1), // d
937− Insert("e".into()),
938− Delete(1), // f
939− Retain(1), // <space>
940− ],
941− len: 5,
942− len_after: 7,
943− };
944− assert_eq!(cs.map_pos(2, Assoc::BeforeWord), 1);
945− assert_eq!(cs.map_pos(4, Assoc::AfterWord), 4);
946887 }
947888
948889 #[test]
helix-lsp/Cargo.toml+1−1
@@ -22,7 +22,7 @@ futures-executor = "0.3"
2222futures-util = { version = "0.3", features = ["std", "async-await"], default-features = false }
2323globset = "0.4.14"
2424log = "0.4"
25−lsp-types = { version = "0.95" }
25+lsp-types = { version = "0.94" }
2626serde = { version = "1.0", features = ["derive"] }
2727serde_json = "1.0"
2828thiserror = "1.0"
helix-lsp/src/client.rs−1
@@ -667,7 +667,6 @@ impl Client {
667667 version: Some(String::from(VERSION_AND_GIT_HASH)),
668668 }),
669669 locale: None, // TODO
670− work_done_progress_params: lsp::WorkDoneProgressParams::default(),
671670 };
672671
673672 self.request::<lsp::request::Initialize>(params).await
helix-term/src/application.rs+38−80
@@ -1,7 +1,6 @@
11use arc_swap::{access::Map, ArcSwap};
22use futures_util::Stream;
33use helix_core::{
4− chars::char_is_word,
54 diagnostic::{DiagnosticTag, NumberOrString},
65 path::get_relative_path,
76 pos_at_coords, syntax, Selection,
@@ -718,7 +717,7 @@ impl Application {
718717 ));
719718 }
720719 }
721− Notification::PublishDiagnostics(mut params) => {
720+ Notification::PublishDiagnostics(params) => {
722721 let path = match params.uri.to_file_path() {
723722 Ok(path) => path,
724723 Err(_) => {
@@ -732,69 +731,31 @@ impl Application {
732731 return;
733732 }
734733 let offset_encoding = language_server.offset_encoding();
735− // have to inline the function because of borrow checking...
736− let doc = self.editor.documents.values_mut()
737− .find(|doc| doc.path().map(|p| p == &path).unwrap_or(false))
738− .filter(|doc| {
739− if let Some(version) = params.version {
740− if version != doc.version() {
741− log::info!("Version ({version}) is out of date for {path:?} (expected ({}), dropping PublishDiagnostic notification", doc.version());
742− return false;
743− }
734+ let doc = self.editor.document_by_path_mut(&path).filter(|doc| {
735+ if let Some(version) = params.version {
736+ if version != doc.version() {
737+ log::info!("Version ({version}) is out of date for {path:?} (expected ({}), dropping PublishDiagnostic notification", doc.version());
738+ return false;
744739 }
745− true
746− });
740+ }
741+
742+ true
743+ });
747744
748745 if let Some(doc) = doc {
749− let lang_conf = doc.language.clone();
750− let text = doc.text().clone();
751−
752− let mut unchaged_diag_sources_ = Vec::new();
753− if let Some(lang_conf) = &lang_conf {
754− if let Some(old_diagnostics) =
755− self.editor.diagnostics.get(&params.uri)
756− {
757− if !lang_conf.persistent_diagnostic_sources.is_empty() {
758− // Sort diagnostics first by severity and then by line numbers.
759− // Note: The `lsp::DiagnosticSeverity` enum is already defined in decreasing order
760− params
761− .diagnostics
762− .sort_unstable_by_key(|d| (d.severity, d.range.start));
763− }
764− for source in &lang_conf.persistent_diagnostic_sources {
765− let new_diagnostics = params
766− .diagnostics
767− .iter()
768− .filter(|d| d.source.as_ref() == Some(source));
769− let old_diagnostics = old_diagnostics
770− .iter()
771− .filter(|(d, d_server)| {
772− *d_server == server_id
773− && d.source.as_ref() == Some(source)
774− })
775− .map(|(d, _)| d);
776− if new_diagnostics.eq(old_diagnostics) {
777− unchaged_diag_sources_.push(source.clone())
778− }
779− }
780− }
781− }
746+ let lang_conf = doc.language_config();
747+ let text = doc.text();
782748
783− let unchaged_diag_sources = &unchaged_diag_sources_;
784− let diagnostics =
785− params.diagnostics.iter().filter_map(move |diagnostic| {
749+ let diagnostics = params
750+ .diagnostics
751+ .iter()
752+ .filter_map(|diagnostic| {
786753 use helix_core::diagnostic::{Diagnostic, Range, Severity::*};
787754 use lsp::DiagnosticSeverity;
788755
789− if diagnostic.source.as_ref().map_or(false, |source| {
790− unchaged_diag_sources.contains(source)
791− }) {
792− return None;
793− }
794−
795756 // TODO: convert inside server
796757 let start = if let Some(start) = lsp_pos_to_pos(
797− &text,
758+ text,
798759 diagnostic.range.start,
799760 offset_encoding,
800761 ) {
@@ -805,13 +766,14 @@ impl Application {
805766 };
806767
807768 let end = if let Some(end) =
808− lsp_pos_to_pos(&text, diagnostic.range.end, offset_encoding)
769+ lsp_pos_to_pos(text, diagnostic.range.end, offset_encoding)
809770 {
810771 end
811772 } else {
812773 log::warn!("lsp position out of bounds - {:?}", diagnostic);
813774 return None;
814775 };
776+
815777 let severity =
816778 diagnostic.severity.map(|severity| match severity {
817779 DiagnosticSeverity::ERROR => Error,
@@ -824,7 +786,7 @@ impl Application {
824786 ),
825787 });
826788
827− if let Some(lang_conf) = &lang_conf {
789+ if let Some(lang_conf) = lang_conf {
828790 if let Some(severity) = severity {
829791 if severity < lang_conf.diagnostic_severity {
830792 return None;
@@ -863,17 +825,8 @@ impl Application {
863825 Vec::new()
864826 };
865827
866− let ends_at_word = start != end
867− && end != 0
868− && text.get_char(end - 1).map_or(false, char_is_word);
869− let starts_at_word = start != end
870− && text.get_char(start).map_or(false, char_is_word);
871−
872828 Some(Diagnostic {
873829 range: Range { start, end },
874− ends_at_word,
875− starts_at_word,
876− zero_width: start == end,
877830 line: diagnostic.range.start.line as usize,
878831 message: diagnostic.message.clone(),
879832 severity,
@@ -883,33 +836,38 @@ impl Application {
883836 data: diagnostic.data.clone(),
884837 language_server_id: server_id,
885838 })
886− });
839+ })
840+ .collect();
887841
888− doc.replace_diagnostics(diagnostics, unchaged_diag_sources, server_id);
842+ doc.replace_diagnostics(diagnostics, server_id);
889843 }
890844
891− let diagnostics = params.diagnostics.into_iter().map(|d| (d, server_id));
845+ let mut diagnostics = params
846+ .diagnostics
847+ .into_iter()
848+ .map(|d| (d, server_id))
849+ .collect();
892850
893851 // Insert the original lsp::Diagnostics here because we may have no open document
894852 // for diagnosic message and so we can't calculate the exact position.
895853 // When using them later in the diagnostics picker, we calculate them on-demand.
896− let diagnostics = match self.editor.diagnostics.entry(params.uri) {
854+ match self.editor.diagnostics.entry(params.uri) {
897855 Entry::Occupied(o) => {
898856 let current_diagnostics = o.into_mut();
899857 // there may entries of other language servers, which is why we can't overwrite the whole entry
900858 current_diagnostics.retain(|(_, lsp_id)| *lsp_id != server_id);
901− current_diagnostics.extend(diagnostics);
902− current_diagnostics
859+ current_diagnostics.append(&mut diagnostics);
903860 // Sort diagnostics first by severity and then by line numbers.
861+ // Note: The `lsp::DiagnosticSeverity` enum is already defined in decreasing order
862+ current_diagnostics
863+ .sort_unstable_by_key(|(d, _)| (d.severity, d.range.start));
864+ }
865+ Entry::Vacant(v) => {
866+ diagnostics
867+ .sort_unstable_by_key(|(d, _)| (d.severity, d.range.start));
868+ v.insert(diagnostics);
904869 }
905− Entry::Vacant(v) => v.insert(diagnostics.collect()),
906870 };
907−
908− // Sort diagnostics first by severity and then by line numbers.
909− // Note: The `lsp::DiagnosticSeverity` enum is already defined in decreasing order
910− diagnostics.sort_unstable_by_key(|(d, server_id)| {
911− (d.severity, d.range.start, *server_id)
912− });
913871 }
914872 Notification::ShowMessage(params) => {
915873 log::warn!("unhandled window/showMessage: {:?}", params);
helix-vcs/Cargo.toml+1−1
@@ -19,7 +19,7 @@ tokio = { version = "1", features = ["rt", "rt-multi-thread", "time", "sync", "p
1919parking_lot = "0.12"
2020arc-swap = { version = "1.6.0" }
2121
22−gix = { version = "0.57.0", default-features = false , optional = true }
22+gix = { version = "0.56.0", default-features = false , optional = true }
2323imara-diff = "0.1.5"
2424anyhow = "1"
2525
helix-view/src/document.rs+20−57
@@ -1213,40 +1213,23 @@ impl Document {
12131213
12141214 let changes = transaction.changes();
12151215
1216− // map diagnostics over changes too
1217− changes.update_positions(self.diagnostics.iter_mut().map(|diagnostic| {
1218− let assoc = if diagnostic.starts_at_word {
1219− Assoc::BeforeWord
1220− } else {
1221− Assoc::After
1222− };
1223− (&mut diagnostic.range.start, assoc)
1224− }));
1225− changes.update_positions(self.diagnostics.iter_mut().map(|diagnostic| {
1226− let assoc = if diagnostic.ends_at_word {
1227− Assoc::AfterWord
1228− } else {
1229− Assoc::Before
1230− };
1231− (&mut diagnostic.range.end, assoc)
1232− }));
1233− self.diagnostics.retain_mut(|diagnostic| {
1234− if diagnostic.range.start > diagnostic.range.end
1235− || (!diagnostic.zero_width && diagnostic.range.start == diagnostic.range.end)
1236− {
1237− return false;
1238− }
1216+ changes.update_positions(
1217+ self.diagnostics
1218+ .iter_mut()
1219+ .map(|diagnostic| (&mut diagnostic.range.start, Assoc::After)),
1220+ );
1221+ changes.update_positions(
1222+ self.diagnostics
1223+ .iter_mut()
1224+ .map(|diagnostic| (&mut diagnostic.range.end, Assoc::After)),
1225+ );
1226+ // map state.diagnostics over changes::map_pos too
1227+ for diagnostic in &mut self.diagnostics {
12391228 diagnostic.line = self.text.char_to_line(diagnostic.range.start);
1240− true
1241− });
1229+ }
12421230
1243− self.diagnostics.sort_unstable_by_key(|diagnostic| {
1244− (
1245− diagnostic.range,
1246− diagnostic.severity,
1247− diagnostic.language_server_id,
1248− )
1249− });
1231+ self.diagnostics
1232+ .sort_unstable_by_key(|diagnostic| diagnostic.range);
12501233
12511234 // Update the inlay hint annotations' positions, helping ensure they are displayed in the proper place
12521235 let apply_inlay_hint_changes = |annotations: &mut Rc<[InlineAnnotation]>| {
@@ -1723,33 +1706,13 @@ impl Document {
17231706
17241707 pub fn replace_diagnostics(
17251708 &mut self,
1726− diagnostics: impl IntoIterator<Item = Diagnostic>,
1727− unchanged_sources: &[String],
1709+ mut diagnostics: Vec<Diagnostic>,
17281710 language_server_id: usize,
17291711 ) {
1730− if unchanged_sources.is_empty() {
1731− self.clear_diagnostics(language_server_id);
1732− } else {
1733− self.diagnostics.retain(|d| {
1734− if d.language_server_id != language_server_id {
1735− return true;
1736− }
1737−
1738− if let Some(source) = &d.source {
1739− unchanged_sources.contains(source)
1740− } else {
1741− false
1742− }
1743− });
1744− }
1745− self.diagnostics.extend(diagnostics);
1746− self.diagnostics.sort_unstable_by_key(|diagnostic| {
1747− (
1748− diagnostic.range,
1749− diagnostic.severity,
1750− diagnostic.language_server_id,
1751− )
1752− });
1712+ self.clear_diagnostics(language_server_id);
1713+ self.diagnostics.append(&mut diagnostics);
1714+ self.diagnostics
1715+ .sort_unstable_by_key(|diagnostic| diagnostic.range);
17531716 }
17541717
17551718 pub fn clear_diagnostics(&mut self, language_server_id: usize) {
languages.toml+1−16
@@ -191,7 +191,6 @@ auto-format = true
191191comment-token = "//"
192192language-servers = [ "rust-analyzer" ]
193193indent = { tab-width = 4, unit = " " }
194−persistent-diagnostic-sources = ["rustc", "clippy"]
195194
196195[language.auto-pairs]
197196'(' = ')'
@@ -957,19 +956,6 @@ indent = { tab-width = 2, unit = " " }
957956name = "java"
958957source = { git = "https://github.com/tree-sitter/tree-sitter-java", rev = "09d650def6cdf7f479f4b78f595e9ef5b58ce31e" }
959958
960−[[language]]
961−name = "smali"
962−scope = "source.smali"
963−injection-regex = "smali"
964−file-types = ["smali"]
965−comment-token = "#"
966−roots = []
967−indent = { tab-width = 4, unit = " " }
968−
969−[[grammar]]
970−name = "smali"
971−source = { git = "https://github.com/amaanq/tree-sitter-smali", rev = "5ae51e15c4d1ac93cba6127caf3d1f0a072c140c" }
972−
973959[[language]]
974960name = "ledger"
975961scope = "source.ledger"
@@ -2321,8 +2307,7 @@ file-types = [
23212307 "xpdl",
23222308 "xul",
23232309 "xoml",
2324− "musicxml",
2325− "glif"
2310+ "musicxml"
23262311]
23272312indent = { tab-width = 2, unit = " " }
23282313
logo.svg+1−1
@@ -1 +1 @@
1−<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" viewBox="663.38 37.57 575.35 903.75"><g transform="matrix(1,0,0,1,-31352.7,-1817.25)"><g transform="matrix(1,0,0,1,31062.7,-20.8972)"><g transform="matrix(1,0,0,1,-130.173,0.00185558)"><path style="fill:#706bc8;" d="M1083.58,1875.72L1635.06,2194.12C1649.8,2202.63 1658.88,2218.37 1658.88,2235.39C1658.88,2264.98 1658.88,2311.74 1658.88,2341.33C1658.88,2349.84 1656.61,2358.03 1652.5,2365.16C1652.5,2365.16 1214.7,2112.4 1107.2,2050.33C1092.58,2041.89 1083.58,2026.29 1083.58,2009.41C1083.58,1963.5 1083.58,1875.72 1083.58,1875.72Z"></path></g><g transform="matrix(1,0,0,1,-130.173,0.00185558)"><path style="fill:#55c5e4;" d="M1635.26,2604.84C1649.88,2613.28 1658.88,2628.87 1658.88,2645.75C1658.88,2691.67 1658.88,2779.44 1658.88,2779.44L1107.41,2461.05C1092.66,2452.53 1083.58,2436.8 1083.58,2419.78C1083.58,2390.19 1083.58,2343.42 1083.58,2313.84C1083.58,2305.32 1085.85,2297.13 1089.96,2290.01C1089.96,2290.01 1527.76,2542.77 1635.26,2604.84Z"></path></g><g transform="matrix(1,0,0,1,216.062,984.098)"><path style="fill:#84ddea;" d="M790.407,1432.56C785.214,1435.55 780.717,1439.9 777.509,1445.46C767.862,1462.16 773.473,1483.76 790.004,1493.59L789.998,1493.59L761.173,1476.95C746.427,1468.44 737.344,1452.71 737.344,1435.68C737.344,1406.09 737.344,1359.33 737.344,1329.74C737.344,1312.71 746.427,1296.98 761.173,1288.47L1259.59,1000.74L1259.83,1000.6C1264.92,997.617 1269.33,993.314 1272.48,987.844C1282.13,971.136 1276.52,949.544 1259.99,939.707L1260,939.707L1288.82,956.349C1303.57,964.862 1312.65,980.595 1312.65,997.622C1312.65,1027.21 1312.65,1073.97 1312.65,1103.56C1312.65,1120.59 1303.57,1136.32 1288.82,1144.83L1259.19,1161.94L1259.59,1161.68L790.407,1432.56Z"></path></g><g transform="matrix(1,0,0,1,216.062,984.098)"><path style="fill:#997bc8;" d="M790.407,1686.24C785.214,1689.23 780.717,1693.58 777.509,1699.13C767.862,1715.84 773.473,1737.43 790.004,1747.27L789.998,1747.27L761.173,1730.63C746.427,1722.12 737.344,1706.38 737.344,1689.36C737.344,1659.77 737.344,1613.01 737.344,1583.42C737.344,1566.39 746.427,1550.66 761.173,1542.15L1259.59,1254.42L1259.83,1254.28C1264.92,1251.29 1269.33,1246.99 1272.48,1241.52C1282.13,1224.81 1276.52,1203.22 1259.99,1193.38L1260,1193.38L1288.82,1210.03C1303.57,1218.54 1312.65,1234.27 1312.65,1251.3C1312.65,1280.89 1312.65,1327.65 1312.65,1357.24C1312.65,1374.26 1303.57,1390 1288.82,1398.51L1259.19,1415.61L1259.59,1415.36L790.407,1686.24Z"></path></g></g></g></svg>
1+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" viewBox="663.38 37.57 575.35 903.75"> <g transform="matrix(1,0,0,1,-31352.7,-1817.25)"> <g transform="matrix(1,0,0,1,31062.7,-20.8972)"> <g transform="matrix(1,0,0,1,-130.173,0.00185558)"> <path d="M1083.58,1875.72L1635.06,2194.12C1649.8,2202.63 1658.88,2218.37 1658.88,2235.39C1658.88,2264.98 1658.88,2311.74 1658.88,2341.33C1658.88,2349.84 1656.61,2358.03 1652.5,2365.16C1652.5,2365.16 1214.7,2112.4 1107.2,2050.33C1092.58,2041.89 1083.58,2026.29 1083.58,2009.41C1083.58,1963.5 1083.58,1875.72 1083.58,1875.72Z" style="fill:#706bc8;"></path> </g> <g transform="matrix(1,0,0,1,-130.173,0.00185558)"> <path d="M1635.26,2604.84C1649.88,2613.28 1658.88,2628.87 1658.88,2645.75C1658.88,2691.67 1658.88,2779.44 1658.88,2779.44L1107.41,2461.05C1092.66,2452.53 1083.58,2436.8 1083.58,2419.78C1083.58,2390.19 1083.58,2343.42 1083.58,2313.84C1083.58,2305.32 1085.85,2297.13 1089.96,2290.01C1089.96,2290.01 1527.76,2542.77 1635.26,2604.84Z" style="fill:#55c5e4;"></path> </g> <g transform="matrix(1,0,0,1,216.062,984.098)"> <path d="M790.407,1432.56C785.214,1435.55 780.717,1439.9 777.509,1445.46C767.862,1462.16 773.473,1483.76 790.004,1493.59L789.998,1493.59L761.173,1476.95C746.427,1468.44 737.344,1452.71 737.344,1435.68C737.344,1406.09 737.344,1359.33 737.344,1329.74C737.344,1312.71 746.427,1296.98 761.173,1288.47L1259.59,1000.74L1259.83,1000.6C1264.92,997.617 1269.33,993.314 1272.48,987.844C1282.13,971.136 1276.52,949.544 1259.99,939.707L1260,939.707L1288.82,956.349C1303.57,964.862 1312.65,980.595 1312.65,997.622C1312.65,1027.21 1312.65,1073.97 1312.65,1103.56C1312.65,1120.59 1303.57,1136.32 1288.82,1144.83L1259.19,1161.94L1259.59,1161.68L790.407,1432.56Z" style="fill:#84ddea;"></path> </g> <g transform="matrix(1,0,0,1,216.062,984.098)"> <path d="M790.407,1686.24C785.214,1689.23 780.717,1693.58 777.509,1699.13C767.862,1715.84 773.473,1737.43 790.004,1747.27L789.998,1747.27L761.173,1730.63C746.427,1722.12 737.344,1706.38 737.344,1689.36C737.344,1659.77 737.344,1613.01 737.344,1583.42C737.344,1566.39 746.427,1550.66 761.173,1542.15L1259.59,1254.42L1259.83,1254.28C1264.92,1251.29 1269.33,1246.99 1272.48,1241.52C1282.13,1224.81 1276.52,1203.22 1259.99,1193.38L1260,1193.38L1288.82,1210.03C1303.57,1218.54 1312.65,1234.27 1312.65,1251.3C1312.65,1280.89 1312.65,1327.65 1312.65,1357.24C1312.65,1374.26 1303.57,1390 1288.82,1398.51L1259.19,1415.61L1259.59,1415.36L790.407,1686.24Z" style="fill:#997bc8;"></path></g></g></g> </svg>
runtime/queries/smali/folds.scmdeleted−12
@@ -1,12 +0,0 @@
1−[
2− (annotation_directive)
3− (array_data_directive)
4− (field_definition)
5− (method_definition)
6− (packed_switch_directive)
7− (param_directive)
8− (parameter_directive)
9− (sparse_switch_directive)
10− (subannotation_directive)
11− (list)
12−] @fold
runtime/queries/smali/highlights.scmdeleted−216
@@ -1,216 +0,0 @@
1−; Types
2−
3−(class_identifier
4− (identifier) @type)
5−
6−(primitive_type) @type.builtin
7−
8−((class_identifier
9− . (identifier) @_first @type.builtin
10− (identifier) @type.builtin)
11− (#match? @_first "^(android|dalvik|java|kotlinx)$"))
12−
13−((class_identifier
14− . (identifier) @_first @type.builtin
15− . (identifier) @_second @type.builtin
16− (identifier) @type.builtin)
17− (#eq? @_first "com")
18− (#match? @_second "^(android|google)$"))
19−
20−; Methods
21−
22−(method_definition
23− (method_signature (method_identifier) @function.method))
24−
25−(expression
26− (opcode) @_invoke
27− (body
28− (full_method_signature
29− (method_signature (method_identifier) @function.method)))
30− (#match? @_invoke "^invoke"))
31−
32−(expression
33− (opcode) @_field_access
34− (body
35− (field_identifier) @variable.other.member)
36− (#match? @_field_access "^[is](get|put)-"))
37−
38−(method_handle
39− (full_method_signature
40− (method_signature (method_identifier) @function.method)))
41−
42−(custom_invoke
43− . (identifier) @function.method
44− (method_signature (method_identifier) @function.method))
45−
46−(annotation_value
47− (body
48− (method_signature (method_identifier) @function.method)))
49−
50−(annotation_value
51− (body
52− (full_method_signature
53− (method_signature (method_identifier) @function.method))))
54−
55−(field_definition
56− (body
57− (method_signature (method_identifier) @function.method)))
58−
59−(field_definition
60− (body
61− (full_method_signature
62− (method_signature (method_identifier) @function.method))))
63−
64−((method_identifier) @constructor
65− (#match? @constructor "^(<init>|<clinit>)$"))
66−
67−"constructor" @constructor
68−
69−; Fields
70−
71−[
72− (field_identifier)
73− (annotation_key)
74−] @variable.other.member
75−
76−((field_identifier) @constant
77− (#match? @constant "^[%u_]*$"))
78−
79−; Variables
80−
81−(variable) @variable.builtin
82−
83−(local_directive
84− (identifier) @variable)
85−
86−; Parameters
87−
88−(parameter) @variable.parameter
89−(param_identifier) @variable.parameter
90−
91−; Labels
92−
93−[
94− (label)
95− (jmp_label)
96−] @label
97−
98−; Operators
99−
100−; (opcode) @keyword.operator
101−
102−((opcode) @keyword.control.return
103− (#match? @keyword.control.return "^return"))
104−
105−((opcode) @keyword.control.conditional
106− (#match? @keyword.control.conditional "^if"))
107−
108−((opcode) @keyword.control.conditional
109− (#match? @keyword.control.conditional "^cmp"))
110−
111−((opcode) @keyword.control.exception
112− (#match? @keyword.control.exception "^throw"))
113−
114−[
115− "="
116− ".."
117−] @operator
118−
119−; Keywords
120−
121−[
122− ".class"
123− ".super"
124− ".implements"
125− ".field"
126− ".end field"
127− ".annotation"
128− ".end annotation"
129− ".subannotation"
130− ".end subannotation"
131− ".param"
132− ".end param"
133− ".parameter"
134− ".end parameter"
135− ".local"
136− ".end local"
137− ".restart local"
138− ".registers"
139− ".packed-switch"
140− ".end packed-switch"
141− ".sparse-switch"
142− ".end sparse-switch"
143− ".array-data"
144− ".end array-data"
145− ".enum"
146− (prologue_directive)
147− (epilogue_directive)
148−] @keyword
149−
150−[
151− ".source"
152−] @keyword.directive
153−
154−[
155− ".method"
156− ".end method"
157−] @keyword.function
158−
159−[
160− ".catch"
161− ".catchall"
162−] @keyword.control.exception
163−
164−; Literals
165−
166−(string) @string
167−(source_directive (string "\"" _ @string.special.url "\""))
168−(escape_sequence) @constant.character.escape
169−
170−(character) @constant.character
171−
172−"L" @punctuation
173−
174−(line_directive (number) @comment) @comment
175−(".locals" (number) @comment) @comment
176−
177−(number) @constant.numeric.integer
178−
179−[
180− (float)
181− (NaN)
182− (Infinity)
183−] @constant.numeric.float
184−
185−(boolean) @constant.builtin.boolean
186−
187−(null) @constant.builtin
188−
189−; Misc
190−
191−(annotation_visibility) @keyword.storage.modifier
192−
193−(access_modifier) @keyword.storage.type
194−
195−(array_type
196− "[" @punctuation.special)
197−
198−["{" "}"] @punctuation.bracket
199−
200−["(" ")"] @punctuation.bracket
201−
202−[
203− "->"
204− ","
205− ":"
206− ";"
207− "@"
208− "/"
209−] @punctuation.delimiter
210−
211−; Comments
212−
213−(comment) @comment
214−
215−(class_definition
216− (comment) @comment.block.documentation)
runtime/queries/smali/indents.scmdeleted−31
@@ -1,31 +0,0 @@
1−[
2− (annotation_directive)
3− (array_data_directive)
4− (field_definition)
5− (method_definition)
6− (packed_switch_directive)
7− (param_directive)
8− (parameter_directive)
9− (sparse_switch_directive)
10− (subannotation_directive)
11− (list)
12− "\{"
13−] @indent
14−
15−[
16− ".end annotation"
17− ".end array-data"
18− ".end field"
19− ".end method"
20− ".end packed-switch"
21− ".end param"
22− ".end parameter"
23− ".end sparse-switch"
24− ".end subannotation"
25− "\}"
26−] @outdent
27−
28−[
29− (ERROR)
30− (comment)
31−] @indent.always
runtime/queries/smali/injections.scmdeleted−2
@@ -1,2 +0,0 @@
1−((comment) @injection.content
2− (#set! injection.language "comment"))
runtime/queries/smali/locals.scmdeleted−42
@@ -1,42 +0,0 @@
1−[
2− (class_directive)
3− (expression)
4− (annotation_directive)
5− (array_data_directive)
6− (method_definition)
7− (packed_switch_directive)
8− (sparse_switch_directive)
9− (subannotation_directive)
10−] @local.scope
11−
12−[
13− (identifier)
14− (class_identifier)
15− (label)
16− (jmp_label)
17−] @local.reference
18−
19−(enum_reference
20− (field_identifier) @local.definition)
21−
22−((field_definition
23− (access_modifiers) @_mod
24− (field_identifier) @local.definition)
25− (#eq? @_mod "enum"))
26−
27−(field_definition
28− (field_identifier) @local.definition
29− (field_type) @local.definition)
30−
31−(annotation_key) @local.definition
32−
33−(method_definition
34− (method_signature (method_identifier) @local.definition))
35−
36−(param_identifier) @local.definition
37−
38−(annotation_directive
39− (class_identifier) @local.definition)
40−
41−(class_directive
42− (class_identifier) @local.definition)
runtime/themes/noctis.toml+25−25
@@ -7,8 +7,8 @@
77
88'property' = { fg = "red" } # Regex group names.
99"warning" = { fg ="yellow", modifiers = ["bold"] } # Editor warnings.
10−"error" = { fg = "red", modifiers = ["bold"] } # Editor errors, like mis-typing a command.
11−"info" = { fg = "mid-blue" } # Code diagnostic info in gutter (LSP).
10+"error" = { bg = "mid-green", fg = "red", modifiers = ["bold"] } # Editor errors, like mis-typing a command.
11+"info" = { fg = "mid-blue", bg = "mid-green" } # Code diagnostic info in gutter (LSP).
1212# ? Difference between info and hint ?
1313"hint" = { fg = "light-green", modifiers = ["bold"] } # Code diagnostics hint in gutter (LSP).
1414
@@ -21,14 +21,14 @@
2121# UI ==============================
2222# For styling helix itself.
2323
24−'ui.background' = { fg = "autocomp-green", bg = "dark-green" } # Default background color.
24+'ui.background' = { bg = "dark-green"} # Default background color.
2525'ui.window' = { fg = "mid-green" } # Window border between splits.
2626
2727'ui.gutter' = { } # Left gutter for diagnostics and breakpoints.
2828
2929'ui.text' = { fg = "white" } # Default text color.
3030'ui.text.focus' = { fg = "white", bg = "mid-green", modifiers = ["bold"] } # Selection highlight in buffer-picker or file-picker.
31−'ui.text.info' = { fg = "white" } # Info popup contents (space mode menu).
31+'ui.text.info' = { } # Info popup contents (space mode menu).
3232
3333'ui.cursor' = { fg = "dark-green", bg = "white" } # Fallback cursor colour, non-primary cursors when there are multiple (shift-c).
3434'ui.cursor.primary' = { fg = "dark-green", bg = "light-blue" } # The primary cursor when there are multiple (shift-c).
@@ -40,8 +40,8 @@
4040'ui.selection.primary' = { bg = "autocomp-green" } # The primary selection when there are multiple.
4141'ui.cursorline.primary' = { bg = 'mid-green' }
4242
43−'ui.linenr' = { fg = "gray" } # Line numbers.
44−'ui.linenr.selected' = { fg = "light-green", modifiers = [ "bold" ] } # Current line number.
43+'ui.linenr' = { bg = "dark-green", fg = "gray" } # Line numbers.
44+'ui.linenr.selected' = { bg = "mid-green", fg = "light-green", modifiers = [ "bold" ] } # Current line number.
4545
4646'ui.virtual' = { fg = "mid-green" } # Namespace for additions to the editing area.
4747'ui.virtual.ruler' = { bg = "mid-green" } # Vertical rulers (colored columns in editing area).
@@ -75,9 +75,9 @@
7575#'type.builtin' = { } # Primitive types of the language (string, int, float).
7676#'type.enum.variant' = { } # A variant of an enum.
7777
78−'constructor' = { fg = "light-blue", modifiers = ["bold"]} # Constructor method for a class or struct. And in some cases applies to module names
78+'constructor' = { fg = "mid-blue", modifiers = ["bold"]} # Constructor method for a class or struct. And in some cases applies to module names
7979
80−'constant' = { fg = "light-blue", modifiers = ["bold"] } # Constant value
80+'constant' = { fg = "light-blue" } # Constant value
8181'constant.builtin' = { fg = "mid-blue", modifiers = ["bold"] } # Special constants like `true`, `false`, `none`, etc.
8282'constant.builtin.boolean' = { } # True or False.
8383'constant.character' = { fg = "light-green"} # Constant of character type.
@@ -88,20 +88,21 @@
8888
8989'string' = { fg = "light-green" } # String literal.
9090'string.regexp' = { } # Regular expression literal.
91−'string.special' = { fg = "red" } # Strings containing a path, URL, etc.
92−# 'string.special.path' = { } # String containing a file path.
93−# 'string.special.url' = { } # String containing a web URL.
94−# 'string.special.symbol' = { } # Erlang/Elixir atoms, Ruby symbols, Clojure keywords.
91+'string.special' = { fg = "light-blue" } # Strings containing a path, URL, etc.
92+'string.special.path' = { } # String containing a file path.
93+'string.special.url' = { } # String containing a web URL.
94+'string.special.symbol' = { } # Erlang/Elixir atoms, Ruby symbols, Clojure keywords.
9595
9696'comment' = { fg = "gray", modifiers = ["italic"] } # This is a comment.
9797'comment.line' = { } # Line comments, like this.
9898'comment.block' = { } # Block comments, like /* this */ in some languages.
9999'comment.block.documentation' = { } # Doc comments, e.g '///' in rust.
100100
101−'variable' = { fg = "light-orange" } # Variable names.
102−# 'variable.builtin' = { } # Language reserved variables: `this`, `self`, `super`, etc.
103−# 'variable.parameter' = { } # Function parameters.
104−'variable.other.member' = { fg = "orange" } # Fields of composite data types (e.g. structs, unions).
101+'variable' = { fg = "white" } # Variable names.
102+'variable.builtin' = { } # Language reserved variables: `this`, `self`, `super`, etc.
103+'variable.parameter' = { } # Function parameters.
104+'variable.other.member' = { } # Fields of composite data types (e.g. structs, unions).
105+'variable.function' = { } # ?
105106
106107'label' = { fg = "purple" } # Loop labels in rust.
107108
@@ -112,17 +113,17 @@
112113'keyword' = { fg = "pink", modifiers = ["bold"] } # Language reserved keywords.
113114'keyword.control' = { fg = "pink", modifiers = ["bold"] } # Control keywords.
114115'keyword.control.conditional' = { fg = "pink", modifiers = ["bold"] } # 'if', 'else', 'elif'.
115−# 'keyword.control.repeat' = { } # 'for', 'while', 'loop'.
116+'keyword.control.repeat' = { } # 'for', 'while', 'loop'.
116117'keyword.control.import' = { fg = "pink", modifiers = ["italic"] } # 'import', 'export' ('use'?).
117−# 'keyword.control.return' = { } # 'return' in most languages.
118+'keyword.control.return' = { } # 'return' in most languages.
118119'keyword.control.exception' = {fg = "pink", modifiers = ["bold"] } # 'raise' in python.
119−'keyword.operator' = { fg = "pink" } # 'or', 'and', 'in'.
120+'keyword.operator' = { } # 'or', 'and', 'in'.
120121'keyword.directive' = { fg = "purple" } # Preprocessor directives (#if in C).
121−'keyword.function' = { fg= "red" } # The keyword to define a function: 'def', 'fun', 'fn'.
122+'keyword.function' = { } # The keyword to define a function: 'def', 'fun', 'fn'.
122123
123124'operator' = { fg = "pink", modifiers = ["bold"] } # Logical (&&, ||) and - I assume - Mathematical (+, %) operators
124125
125−'function' = { fg = "mid-blue"}
126+'function' = { fg = "dark-blue"}
126127'function.builtin' = { fg = "dark-blue" }
127128'function.method' = { fg = "dark-blue" } # Class / Struct methods.
128129'function.macro' = { fg = "purple" } # Like macros in rust.
@@ -180,8 +181,8 @@
180181# Version control changes.
181182
182183'diff.plus' = "light-green" # { } # Additions.
183−'diff.minus' = "red" # { } # Deletions.
184−'diff.delta' = "yellow" # { } # Modifications.
184+'diff.minus' = "yellow" # { } # Deletions.
185+'diff.delta' = "red" # { } # Modifications.
185186# 'diff.delta.moved' = { } # Renamed or moved files / changes.
186187
187188
@@ -196,9 +197,8 @@ yellow = "#ffd800"
196197purple = "#918cff"
197198white = "#b1cace"
198199orange = "#ffa864"
199−light-orange = "#fff2c5"
200200gray = "#5b858b" # mainly for comments/background text
201−light-gray = "#2a3c41" # used when whitespace rendering is enabled and for indent-guides
201+light-gray = "#354e51" # used when whitespace rendering is enabled and for indent-guides
202202red = "#e34e1b"
203203
204204dark-blue = "#19a2b7"
runtime/themes/nord.toml−9
@@ -134,15 +134,6 @@
134134"ui.bufferline" = { fg = "nord5", bg = "nord1" }
135135"ui.bufferline.active" = { fg = "nord6", bg = "nord2", underline = { color = "nord8", style = "line" }, modifiers = [ "italic" ] }
136136
137−# Markup
138−"markup.heading" = "nord8"
139−"markup.list" = "nord9"
140−"markup.bold" = { modifiers = ["bold"] }
141−"markup.italic" = { modifiers = ["italic"] }
142−"markup.strikethrough" = { modifiers = ["crossed_out"] }
143−"markup.link.text" = "nord8"
144−"markup.raw" = "nord7"
145−
146137[palette]
147138# Polar Night is made up of four darker colors that are commonly used for base elements like backgrounds or text color in bright ambiance designs.
148139#