branch: elpa/typst-ts-mode commit cdc804db46a880191f74420a9e416452cba3358b Author: Meow King <mr.meowk...@anche.no> Commit: Meow King <mr.meowk...@anche.no>
fix: emacs 29 incompatiability Fixes: https://todo.sr.ht/~meow_king/typst-ts-mode/39 Signed-off-by: Meow King <mr.meowk...@anche.no> --- #basic-syntax.typ# | 82 +++++++++++++++ README.md | 1 + q | 201 ------------------------------------ typst-ts-embedding-lang-settings.el | 9 +- typst-ts-mode.el | 48 +++++---- typst-ts-utils.el | 62 +++++++++++ 6 files changed, 178 insertions(+), 225 deletions(-) diff --git a/#basic-syntax.typ# b/#basic-syntax.typ# new file mode 100644 index 0000000000..1ba0179ca5 --- /dev/null +++ b/#basic-syntax.typ# @@ -0,0 +1,82 @@ +// This file only serves for testing highlight, and it is not a syntax completion test. + +// comment + +-? $ -> $ // shorthand + +// header face += headline +https://www.google.com // url +_emph_ // emphasis +*strong* // strong +- item // item +/ term1: value +"El Psy Kongraoo" // quote +hello \ // line break +`El Psy Kongraoo` // raw span +// raw block +```bash +sudo r +``` +<LABEL> // label +@reference // reference + +Hello\nWorld // escape + + +#(4.2) // number +#"El Psy Kongaroo" // string +#[El Psy Kongraoo] // content +#true #false // boolean +#sym.bar.h // builtin +#set text(a: 0) // call & builtin +#none // none +#auto // auto +#(a + b) // ident + +#(0 in "0" not in a) // in +#(a and b or not c) // and, or, not +#(2 + - 1) #(2 - -1) // sign +#(1 + 1) // add +#(1 - 1) // sub +#(1 * 1) // mul +#(1 / 1) // div +#if 2 > 1 [] // cmp +#import "a": * // wildcard + +#let a = b // let +#if b {} else {} // branch +#while n < 10 { // while + (n,) +} +#for i in a {} // for +#import "a": a, b // import +#import "a.lib" as b // as +#include "a" // include +#show: columns.with(2) // show +#set text(a: 0) // set +#let a() = { // return + return 2 +} +#for letter in "abc nope" { // flow + if letter == " " { + break + } else if letter == "a" { + continue + } + letter +} + +#a()() // function +#range().map // builtin function +#l.zip(r).map( // method + ((a,b)) => a + b // TODO lambda +) +#(a, c: b) // tagged +#a.b // field + +$ a $ // math +$ 1 + 1 = 2 $ +$ E = m * c^2 $ +$ eq.not(0) $ +$ cal(A) := { x in RR | x "is natural" } $ diff --git a/README.md b/README.md index e6862c78d3..ae6ebdcf06 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,7 @@ Here are some options you may find useful: ### Raw block highlighting _This is an experimental feature_ +**Note**: currently only support Emacs 30 (master branch). But non-treesit font lock for raw block feature will be added soon (both 29 and 30). Only support tree-sitter languages. For more detailed documentation about raw block highlighting see [this documentation](./doc/raw-block-highlighing.md) diff --git a/q b/q deleted file mode 100644 index c638dccff9..0000000000 --- a/q +++ /dev/null @@ -1,201 +0,0 @@ -@ [1m[38;5;13mn[38;5;8mntkyolq[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;14m2024-02-26 21:10:53.000 +08:00[39m [38;5;13mmain[39m [38;5;12m2[38;5;8m4d00958[39m[0m -├─╮ [1m[38;5;10m(empty)[39m merge `develop` branch[0m -◉ │ [1m[38;5;5mxvm[0m[38;5;8mmykpq[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-26 20:56:15.000 +08:00[39m [38;5;5mdevelop[39m [38;5;2mHEAD@git[39m [1m[38;5;4m7c9[0m[38;5;8mc69f4[39m -├─╯ doc: update README -◉ [1m[38;5;5mkok[0m[38;5;8mrvpqy[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-26 20:46:21.000 +08:00[39m [1m[38;5;4mbfa[0m[38;5;8m4f61e[39m -│ fix: some errors of `lsp-bridge-inlay-hint` and `typst-ts-mode-insert--item` function -◉ [1m[38;5;5mll[0m[38;5;8mxqrvvt[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-26 10:33:13.000 +08:00[39m [1m[38;5;4m2d2[0m[38;5;8m5a0ac[39m -│ refactor: `typst-ts-mode-insert--item` -◉ [1m[38;5;5mnt[0m[38;5;8mvwnzrk[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-21 23:19:17.000 +08:00[39m [1m[38;5;4mc6[0m[38;5;8me5e6b5[39m -│ doc: update README -◉ [1m[38;5;5mwy[0m[38;5;8mumsvwp[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-21 22:50:53.000 +08:00[39m [1m[38;5;4m3d[0m[38;5;8m373bba[39m -│ fix: fix outline recognization error when section indent offset is not nil -◉ [1m[38;5;5mnz[0m[38;5;8mslwnzm[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-21 22:19:28.000 +08:00[39m [1m[38;5;4m4c5[0m[38;5;8m80a1c[39m -│ fix: typst-ts-mode-indent-offset-section wrong defcustom type -◉ [1m[38;5;5mlz[0m[38;5;8muuxznt[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-17 11:02:17.000 +08:00[39m [1m[38;5;4m123[0m[38;5;8mb7c99[39m -│ feat(raw-block-highlighting): assign default face for those block whose language is missing or not-loadable -◉ [1m[38;5;5myu[0m[38;5;8momurot[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-17 10:11:41.000 +08:00[39m [1m[38;5;4mdc3[0m[38;5;8m78979[39m -│ fix(raw-block-highlighting): don't emit error when editing a raw block of the language of uninstalled ts-parser. -◉ [1m[38;5;5mrp[0m[38;5;8munvysx[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 20:20:30.000 +01:00[39m [38;5;5mfeat/autoincrement[39m [1m[38;5;4m6a3[0m[38;5;8m5d230[39m -│ fix: Autoincrement should indent as well. -◉ [1m[38;5;5mvv[0m[38;5;8mmsxron[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 20:11:21.000 +01:00[39m [1m[38;5;4ma16[0m[38;5;8m1507d[39m -├─╮ Merge branch 'main' into feat/autoincrement -│ ◉ [1m[38;5;5mkoq[0m[38;5;8mnmxqy[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-04 22:54:30.000 +08:00[39m [1m[38;5;4m07[0m[38;5;8m8b2efb[39m -│ │ fix: disable echoing indentation debug information -│ ◉ [1m[38;5;5msuv[0m[38;5;8mukvno[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-04 21:50:01.000 +08:00[39m [1m[38;5;4m96[0m[38;5;8mf587be[39m -│ │ doc: update README -│ ◉ [1m[38;5;5mxsnw[0m[38;5;8mvlwp[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-04 21:48:11.000 +08:00[39m [1m[38;5;4m74e[0m[38;5;8meca77[39m -│ │ doc: update README -│ ◉ [1m[38;5;5mqr[0m[38;5;8mskumto[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-04 21:36:45.000 +08:00[39m [1m[38;5;4m32[0m[38;5;8m7266f8[39m -│ │ refactor: enhance indentation -│ ◉ [1m[38;5;5mymz[0m[38;5;8mlvsym[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-04 18:16:13.000 +08:00[39m [1m[38;5;4m54f[0m[38;5;8m21785[39m -│ │ refactor: enhance raw block indentation -│ ◉ [1m[38;5;5mmz[0m[38;5;8mxuuvmu[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-02-04 12:54:10.000 +08:00[39m [1m[38;5;4mf1[0m[38;5;8mca0765[39m -│ │ feat: Add customizable option for indenting section (header) -◉ │ [1m[38;5;5msk[0m[38;5;8mvrsomv[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 14:55:59.000 +01:00[39m [1m[38;5;4md7[0m[38;5;8m99bdff[39m -│ │ doc: Rename variable and add it to documentation. -◉ │ [1m[38;5;5mp[0m[38;5;8myptlprm[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 14:52:27.000 +01:00[39m [1m[38;5;4m04[0m[38;5;8m54e449[39m -│ │ feat: Autoincrement on enter and fix heading insertion. -◉ │ [1m[38;5;5mts[0m[38;5;8mpxlwrl[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 13:42:08.000 +01:00[39m [1m[38;5;4m49[0m[38;5;8ma39810[39m -│ │ fix: Only search for the current line. -◉ │ [1m[38;5;5mvx[0m[38;5;8mznqmzt[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 13:25:09.000 +01:00[39m [1m[38;5;4m74d[0m[38;5;8m210c8[39m -│ │ fix: Indent the inserted heading. -◉ │ [1m[38;5;5mzy[0m[38;5;8monronm[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 13:14:50.000 +01:00[39m [1m[38;5;4mf09[0m[38;5;8m16578[39m -│ │ feat: new customize variable that controls behavior of enter key -◉ │ [1m[38;5;5mzx[0m[38;5;8mxsuvwr[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 13:14:16.000 +01:00[39m [1m[38;5;4mf58[0m[38;5;8me7449[39m -│ │ style: reindent -◉ │ [1m[38;5;5mxsnl[0m[38;5;8mmmlq[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-04 13:12:22.000 +01:00[39m [1m[38;5;4mcb[0m[38;5;8m69c982[39m -│ │ fix: point must be on list item and having no section should not error -◉ │ [1m[38;5;5mqw[0m[38;5;8mvpktkm[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-03 10:32:54.000 +01:00[39m [1m[38;5;4md6[0m[38;5;8mcd6d72[39m -│ │ feat: Also auto insert numbered list. -◉ │ [1m[38;5;5mopm[0m[38;5;8mtvnkn[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-03 10:06:23.000 +01:00[39m [1m[38;5;4m06[0m[38;5;8ma6c6f5[39m -│ │ style: .dir-locals.el to turn off indent-tabs-mode -◉ │ [1m[38;5;5msy[0m[38;5;8mmwyznw[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-02 22:12:07.000 +01:00[39m [1m[38;5;4m46[0m[38;5;8m62986a[39m -│ │ feat: Autoincrement list or insert new heading. -◉ │ [1m[38;5;5mymw[0m[38;5;8mvvlzq[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2024-02-02 22:12:04.000 +01:00[39m [1m[38;5;4mf9[0m[38;5;8m97d273[39m -├─╯ fix: Item indentation fixed? -◉ [1m[38;5;5mnqp[0m[38;5;8mmlrky[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-20 17:50:18.000 +08:00[39m [1m[38;5;4mf57[0m[38;5;8m97e21[39m -│ refactor: introduce different level of fontification to address performance issue -◉ [1m[38;5;5mwsqn[0m[38;5;8mrqpq[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-19 23:18:33.000 +08:00[39m [1m[38;5;4m8a[0m[38;5;8mb7a3e6[39m -│ disable raw block highlighting by default -◉ [1m[38;5;5mku[0m[38;5;8mwutzup[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-19 19:37:59.000 +08:00[39m [1m[38;5;4m2db[0m[38;5;8mf17da[39m -│ feat(face): more precise face for some markup elements -◉ [1m[38;5;5mqs[0m[38;5;8mwslzrm[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-19 10:46:09.000 +08:00[39m [1m[38;5;4mfd[0m[38;5;8med7649[39m -│ fix(els): remove language tag map duplication -◉ [1m[38;5;5mux[0m[38;5;8mpyullv[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-18 17:40:31.000 +08:00[39m [38;5;5mfeature/raw-block-highlighting[39m [1m[38;5;4m7e[0m[38;5;8m3f11e6[39m -│ feat: add detailed documentation -◉ [1m[38;5;5mto[0m[38;5;8mkurkyq[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-18 10:45:36.000 +08:00[39m [1m[38;5;4mf56[0m[38;5;8m803a3[39m -│ feat(face): more flexible face settings for raw block -◉ [1m[38;5;5myr[0m[38;5;8mmzyytu[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-17 23:00:48.000 +08:00[39m [1m[38;5;4m27[0m[38;5;8m1cedb1[39m -│ feat: add customization option to enable raw block highlighting -◉ [1m[38;5;5mzw[0m[38;5;8munvllu[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-17 22:45:32.000 +08:00[39m [1m[38;5;4m755[0m[38;5;8m61540[39m -│ feat: add more predefined embedding language settings -◉ [1m[38;5;5mok[0m[38;5;8mqrtlmu[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-17 19:55:53.000 +08:00[39m [1m[38;5;4m5f3[0m[38;5;8me28be[39m -│ feat: add utility function to modify language tags relationship -◉ [1m[38;5;5mrvp[0m[38;5;8mkukpq[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-17 16:55:26.000 +08:00[39m [1m[38;5;4m28[0m[38;5;8mb8da2f[39m -│ feat: add more predefined language settings -◉ [1m[38;5;5mmw[0m[38;5;8mvsukok[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-17 15:03:42.000 +08:00[39m [1m[38;5;4mcd[0m[38;5;8m6e40ff[39m -│ feat: enable highlighting at startup -◉ [1m[38;5;5mkq[0m[38;5;8mnsozqp[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-17 14:15:03.000 +08:00[39m [1m[38;5;4m61[0m[38;5;8mca4cfd[39m -│ feat: support raw block language name <-> tree sitter setting entry mapping -◉ [1m[38;5;5mqv[0m[38;5;8mwwtrmn[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-14 23:16:33.000 +08:00[39m [1m[38;5;4m7bd[0m[38;5;8mda683[39m -│ doc: README.md -◉ [1m[38;5;5mlo[0m[38;5;8mossmru[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-13 23:30:51.000 +08:00[39m [1m[38;5;4mf43[0m[38;5;8mcba25[39m -│ feat: capable to correctly highlight regions -◉ [1m[38;5;5myl[0m[38;5;8mypwotv[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-01 20:34:08.000 +08:00[39m [1m[38;5;4m208[0m[38;5;8maa360[39m -│ feat: almost done, have some bugs -◉ [1m[38;5;5mmtx[0m[38;5;8mspovv[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2024-01-01 17:05:25.000 +08:00[39m [1m[38;5;4m76[0m[38;5;8m46790a[39m -│ feat: load embedding language settings dynamically -◉ [1m[38;5;5mzu[0m[38;5;8mkkwvlt[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-31 11:34:15.000 +08:00[39m [1m[38;5;4m70[0m[38;5;8mbcc781[39m -│ fix: toggle list(item) indentation on first line error -◉ [1m[38;5;5muk[0m[38;5;8mknktvt[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-31 11:25:36.000 +08:00[39m [1m[38;5;4m13[0m[38;5;8md32bef[39m -│ fix: toggle indentation bug for list (item) -◉ [1m[38;5;5myo[0m[38;5;8mxpnxxw[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-31 10:59:06.000 +08:00[39m [1m[38;5;4m645[0m[38;5;8mc08e9[39m -│ fix: wrong list(item) indentation -◉ [1m[38;5;5mrxl[0m[38;5;8mosmsm[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-31 00:53:10.000 +08:00[39m [1m[38;5;4mdc4[0m[38;5;8m678aa[39m -│ fix(indentation): edge conditions -◉ [1m[38;5;5mkn[0m[38;5;8mqvroyy[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-30 23:33:17.000 +08:00[39m [1m[38;5;4m1c[0m[38;5;8m2b4bd6[39m -│ feat: toggle indentation for list(item) -◉ [1m[38;5;5mtx[0m[38;5;8mkvzlnz[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-30 20:36:42.000 +08:00[39m [1m[38;5;4m6c[0m[38;5;8m0c55f4[39m -│ feat: add indentation rule for item with linebreak at ending -◉ [1m[38;5;5myp[0m[38;5;8mlnltmu[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-25 13:41:03.000 +08:00[39m [1m[38;5;4meb4[0m[38;5;8mbcb0a[39m -│ doc: update README -◉ [1m[38;5;5myy[0m[38;5;8mnuwnrz[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-23 16:39:19.000 +01:00[39m [38;5;5mfeat/heading-operations[39m [1m[38;5;4maad[0m[38;5;8m1cde1[39m -│ refactor: Use outline library for headings. -◉ [1m[38;5;5muq[0m[38;5;8mksukvo[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-23 21:47:30.000 +08:00[39m [1m[38;5;4m748[0m[38;5;8m56118[39m -│ style: change all tab into white space & add editorconfig file -◉ [1m[38;5;5mov[0m[38;5;8mrtlzvz[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-23 21:28:23.000 +08:00[39m [1m[38;5;4m33[0m[38;5;8m940994[39m -│ refactor: typst-ts-mode-heading--at-point-p -◉ [1m[38;5;5mopu[0m[38;5;8mlrtnx[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-23 21:04:33.000 +08:00[39m [1m[38;5;4m0d[0m[38;5;8m40d36c[39m -├─╮ [38;5;2m(empty)[39m Merge branch 'main' into feat/heading-operations -│ ◉ [1m[38;5;5mnk[0m[38;5;8mwzoyvk[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-23 21:04:00.000 +08:00[39m [1m[38;5;4m89[0m[38;5;8mee0735[39m -│ │ chore -│ ◉ [1m[38;5;5mvq[0m[38;5;8mwwnvlu[39m Meow King <[38;5;3mmr.meowk...@anche.no[39m> [38;5;6m2023-12-23 21:01:51.000 +08:00[39m [1m[38;5;4m94[0m[38;5;8m6b056f[39m -│ │ feat: update to v0.10.0 -◉ │ [1m[38;5;5mmtl[0m[38;5;8mnppwr[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-19 20:17:42.000 +01:00[39m [1m[38;5;4m14[0m[38;5;8maffa17[39m -│ │ refactor: Renamed function that finds next higher/same level heading. -◉ │ [1m[38;5;5mkrs[0m[38;5;8mlxnyx[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-19 11:51:12.000 +01:00[39m [1m[38;5;4m3ba[0m[38;5;8m9c737[39m -│ │ doc: Added new feature and its keybinding to readme. -◉ │ [1m[38;5;5msw[0m[38;5;8mstxrzm[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-19 11:49:46.000 +01:00[39m [1m[38;5;4mb4[0m[38;5;8mb64449[39m -│ │ feat: Move heading and it contents down or up. -◉ │ [1m[38;5;5mly[0m[38;5;8mqqntty[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-19 01:37:21.000 +01:00[39m [1m[38;5;4m18[0m[38;5;8m1caafe[39m -│ │ feat: Exchange current heading with above heading. -◉ │ [1m[38;5;5mxp[0m[38;5;8mxtqmpn[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-18 21:29:55.000 +01:00[39m [1m[38;5;4m21f[0m[38;5;8m263b3[39m -│ │ doc: Fix flymake warnings. -◉ │ [1m[38;5;5mql[0m[38;5;8mvqvrmw[39m Huan Nguyen <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-18 21:28:24.000 +01:00[39m [1m[38;5;4m6a6[0m[38;5;8mab91f[39m -├─╯ refactor: Refactored heading increase/decrease functions. -◉ [1m[38;5;5mmp[0m[38;5;8mzmlpzq[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-12-18 15:35:43.000 +08:00[39m [1m[38;5;4m53[0m[38;5;8mbc7cf2[39m -│ doc(README): update co-maintainer information -◉ [1m[38;5;5msm[0m[38;5;8mltoqzt[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-12-18 15:31:58.000 +08:00[39m [1m[38;5;4m57[0m[38;5;8m00854a[39m -│ doc: update README -◉ [1m[38;5;5mnr[0m[38;5;8msyspzz[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-12-13 18:18:33.000 +08:00[39m [1m[38;5;4mebd[0m[38;5;8mce771[39m -│ doc: update README -◉ [1m[38;5;5moqy[0m[38;5;8musmsx[39m huanie <[38;5;3mnguyenthieuh...@gmail.com[39m> [38;5;6m2023-12-13 17:50:39.000 +08:00[39m [1m[38;5;4m73[0m[38;5;8mf6273b[39m -│ feat: Incrase/Decrase heading level. -◉ [1m[38;5;5mtv[0m[38;5;8mqmllyn[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-12-06 17:08:02.000 +08:00[39m [1m[38;5;4m36[0m[38;5;8m1dfe60[39m -│ fix: allow dynamic indentation offset -◉ [1m[38;5;5mtw[0m[38;5;8mtsvkuu[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-12-02 00:28:29.000 +08:00[39m [1m[38;5;4m78cc[0m[38;5;8m8594[39m -│ feat: add typst watch mode-line indicator -◉ [1m[38;5;5mvz[0m[38;5;8mtxokmq[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-12-01 22:19:00.000 +08:00[39m [1m[38;5;4m7b3[0m[38;5;8mb3da7[39m -│ doc: update README -◉ [1m[38;5;5mrvm[0m[38;5;8mkzkkp[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-12-01 21:48:39.000 +08:00[39m [1m[38;5;4m35[0m[38;5;8mb3e2fa[39m -│ feat: add error face -◉ [1m[38;5;5mzo[0m[38;5;8mknpmmt[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-11-06 14:57:40.000 +08:00[39m [1m[38;5;4m39[0m[38;5;8ma9e63c[39m -│ feat: Typst v0.9.0 -◉ [1m[38;5;5muv[0m[38;5;8mqvroxs[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-10-31 22:43:13.000 +08:00[39m [1m[38;5;4mbba[0m[38;5;8mc54c3[39m -│ doc: update README -◉ [1m[38;5;5mwu[0m[38;5;8mysttws[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-10-28 13:55:53.000 +08:00[39m [1m[38;5;4m4c2[0m[38;5;8m6bf91[39m -│ doc: update README -◉ [1m[38;5;5mxo[0m[38;5;8mrzrytu[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-10-27 19:06:49.000 +08:00[39m [1m[38;5;4m86[0m[38;5;8m492f07[39m -│ doc: update README -◉ [1m[38;5;5mxvt[0m[38;5;8mpsykp[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-10-12 11:27:20.000 +08:00[39m [1m[38;5;4m5ff[0m[38;5;8m1b21a[39m -│ fix(compilation + watch) error regexp error -◉ [1m[38;5;5mkro[0m[38;5;8mxnryn[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-10-11 14:46:18.000 +08:00[39m [1m[38;5;4m004[0m[38;5;8mec937[39m -│ fix: `typst-ts-markup-header-scale` custom setting function error -◉ [1m[38;5;5mwsqk[0m[38;5;8myqnl[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-10-01 15:28:02.000 +08:00[39m [1m[38;5;4m9d[0m[38;5;8m1adbcb[39m -│ feat: adopt update stream parser syntax change and add dynamic height for headers -◉ [1m[38;5;5moo[0m[38;5;8mzputpn[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-24 14:03:52.000 +08:00[39m [1m[38;5;4m43[0m[38;5;8m9deb4b[39m -│ fix(preview): open non-english character file name -◉ [1m[38;5;5moqn[0m[38;5;8mxtkry[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-24 11:34:33.000 +08:00[39m [1m[38;5;4mea[0m[38;5;8m69e2f7[39m -│ fix: don't indent content inside raw block -◉ [1m[38;5;5mou[0m[38;5;8mqwzxym[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-23 20:22:35.000 +08:00[39m [1m[38;5;4mb1[0m[38;5;8m6762ce[39m -│ doc: README -◉ [1m[38;5;5muo[0m[38;5;8moruyqr[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-23 17:25:24.000 +08:00[39m [1m[38;5;4mbff[0m[38;5;8mf448d[39m -│ fix: deleting watch process window error when stop watching -◉ [1m[38;5;5mvw[0m[38;5;8mlqyvqp[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-23 17:19:19.000 +08:00[39m [1m[38;5;4m01[0m[38;5;8mef0d45[39m -│ feat: better functionality for typst watch process -◉ [1m[38;5;5muw[0m[38;5;8myyzzlk[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-23 11:27:31.000 +08:00[39m [1m[38;5;4mc05[0m[38;5;8m9a85f[39m -│ feat: add preview command and fix after-compile hook issue -◉ [1m[38;5;5mow[0m[38;5;8mvmyyuo[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-22 21:13:41.000 +08:00[39m [1m[38;5;4mbb9[0m[38;5;8mc2d7d[39m -│ feat: add convenient commands -◉ [1m[38;5;5mmm[0m[38;5;8mumvrqu[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-22 20:24:58.000 +08:00[39m [1m[38;5;4mc92[0m[38;5;8mcdbe9[39m -│ feate: more precise font lock feature levels -◉ [1m[38;5;5mxr[0m[38;5;8momvmps[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-22 20:00:52.000 +08:00[39m [1m[38;5;4m128[0m[38;5;8m5fc3b[39m -│ feat: add a syntax table -◉ [1m[38;5;5mnnv[0m[38;5;8mwpnrq[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-22 19:47:38.000 +08:00[39m [1m[38;5;4md23[0m[38;5;8m140e9[39m -│ feat: add imenu support -◉ [1m[38;5;5mkt[0m[38;5;8mnqqznl[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-22 17:58:56.000 +08:00[39m [1m[38;5;4mc4[0m[38;5;8ma3c02c[39m -│ feat: indentation rules -◉ [1m[38;5;5mxk[0m[38;5;8msryuwo[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 23:18:30.000 +08:00[39m [1m[38;5;4mce[0m[38;5;8m4142e1[39m -│ feat: add electric auto pair pairs -◉ [1m[38;5;5msux[0m[38;5;8mxrqxq[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 20:49:56.000 +08:00[39m [1m[38;5;4m5ee[0m[38;5;8m0e336[39m -│ feat: math fontification support -◉ [1m[38;5;5mrxv[0m[38;5;8mzlttq[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 20:17:49.000 +08:00[39m [1m[38;5;4m2a[0m[38;5;8m27ed3b[39m -│ feat: add more fontification rules to code section -◉ [1m[38;5;5mvp[0m[38;5;8myvznpm[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 19:52:24.000 +08:00[39m [1m[38;5;4m6e[0m[38;5;8m5c7f11[39m -│ feat: fontify control flow in code section -◉ [1m[38;5;5myn[0m[38;5;8mukkwnw[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 19:40:23.000 +08:00[39m [1m[38;5;4mad[0m[38;5;8meb7bc7[39m -│ feat: add operator for code -◉ [1m[38;5;5mxsw[0m[38;5;8mwsmvp[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 17:08:40.000 +08:00[39m [1m[38;5;4m5e6[0m[38;5;8m44c21[39m -│ feat: label and reference fontify in markup -◉ [1m[38;5;5mry[0m[38;5;8mtpsull[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 17:01:59.000 +08:00[39m [1m[38;5;4m204[0m[38;5;8m202bf[39m -│ feat: rawspan and rawblock in markup -◉ [1m[38;5;5muu[0m[38;5;8mqxuzzn[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-21 15:36:19.000 +08:00[39m [1m[38;5;4m5a[0m[38;5;8mc2801a[39m -│ feat: add tests and more faces for markup mode -◉ [1m[38;5;5mtl[0m[38;5;8mwtuppt[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-20 23:24:37.000 +08:00[39m [1m[38;5;4m87[0m[38;5;8m966568[39m -│ feat: add more fontification rules for markup -◉ [1m[38;5;5mtr[0m[38;5;8mkykspw[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-20 20:19:16.000 +08:00[39m [1m[38;5;4m52[0m[38;5;8md8241e[39m -│ feat: add header faces -◉ [1m[38;5;5mnqu[0m[38;5;8mtstxz[39m Ziqi Yang <[38;5;3mmr.ziqiy...@gmail.com[39m> [38;5;6m2023-09-19 23:16:29.000 +08:00[39m [1m[38;5;4m3a[0m[38;5;8m3c9810[39m -│ init -◉ [1m[38;5;5mzz[0m[38;5;8mzzzzzz[39m [38;5;2mroot()[39m [1m[38;5;4m000[0m[38;5;8m00000[39m diff --git a/typst-ts-embedding-lang-settings.el b/typst-ts-embedding-lang-settings.el index 40dc846885..d73ccc98c7 100644 --- a/typst-ts-embedding-lang-settings.el +++ b/typst-ts-embedding-lang-settings.el @@ -21,6 +21,7 @@ ;;; Code: (require 'treesit) +(require 'typst-ts-utils) (defcustom typst-ts-highlight-raw-block-langs-not-in-predefined-settings t "Whether to highlight raw block of language that is not in settings. @@ -714,7 +715,9 @@ case-sensitive." (defun typst-ts-els--treesit-range-rules (lang) "Get the treesit range rules for LANG. -LANG: language symbol." +LANG: language symbol. +NOTE this function is only meant to be used in Emacs 30 since Emacs 29 doesn't +have `:local t' flag and if without it, the all the highlight gone." (treesit-range-rules :embed lang :host 'typst @@ -773,7 +776,7 @@ Use this function as one notifier of `treesit-parser-notifiers'." (mapcar #'treesit-parser-language (treesit-parser-list)) ;; parsers created by `treesit-range-settings' (mapcar #'treesit-parser-language - (treesit-local-parsers-on (point-min) (point-max)))))) + (typst-ts-utils-local-parsers-on (point-min) (point-max)))))) lang-ts-mode settings) (dolist (lang parser-langs) (unless (member lang typst-ts-els--include-languages) @@ -799,7 +802,7 @@ Use this function as one notifier of `treesit-parser-notifiers'." ;; delete top level parsers, so range rules works (i.e. local parsers) ;; so that highlighting will not exceed the desired range (mapc #'treesit-parser-delete (treesit-parser-list nil lang)) - + ;; find and merge settings (setq lang-ts-mode (intern (concat (symbol-name lang) "-ts-mode"))) diff --git a/typst-ts-mode.el b/typst-ts-mode.el index 4885655b77..b3fbe64d24 100644 --- a/typst-ts-mode.el +++ b/typst-ts-mode.el @@ -34,6 +34,7 @@ (require 'outline) (require 'typst-ts-embedding-lang-settings) +(require 'typst-ts-utils) (defgroup typst-ts nil "Tree Sitter enabled Typst Writing." @@ -76,7 +77,8 @@ be noticeably affected probably." ;; TODO currently set nil as default, since it still needs refinement (defcustom typst-ts-mode-enable-raw-blocks-highlight nil - "Whether to enable raw block highlighting." + "Whether to enable raw block highlighting. +NOTE: currently only support Emacs 30 (master branch)." :type 'boolean :group 'typst-ts) @@ -333,7 +335,7 @@ See `typst-ts-mode-fontification-precision-level'." "Face for term description." :group 'typst-ts-faces) -(defface typst-ts-markup-quote-face ;; TODO better choice? +(defface typst-ts-markup-quote-face '((t :inherit shadow)) "Face for quote." :group 'typst-ts-faces) @@ -494,7 +496,8 @@ NODE." (ne (treesit-node-end node)) (lang-node (treesit-node-prev-sibling node)) lang) - (if (not (equal (treesit-node-type lang-node) "ident")) + (if (or (< emacs-major-version 30) + (not (equal (treesit-node-type lang-node) "ident"))) (put-text-property ns ne 'face 'typst-ts-markup-rawblock-blob-face) (setq lang (gethash (downcase (treesit-node-text lang-node)) @@ -543,10 +546,10 @@ If you want to customize the rules, please customize the same name variable "`" @typst-ts-markup-rawspan-indicator-face) (raw_blck "```" @typst-ts-markup-rawblock-indicator-face - (ident) :? @typst-ts-mode-highlight-raw-block-fn + (ident) :? @typst-ts-markup-rawblock-lang-face ;; NOTE let embedded language fontify blob ,@(if typst-ts-mode-enable-raw-blocks-highlight - '((blob) @typst-ts-mode-highlight-block-fn) + '((blob) @typst-ts-mode-highlight-raw-block-fn) '((blob) @typst-ts-markup-rawblock-blob-face)) "```" @typst-ts-markup-rawblock-indicator-face) (label) @typst-ts-markup-label-face @@ -599,10 +602,10 @@ If you want to customize the rules, please customize the same name variable "`" @typst-ts-markup-rawspan-indicator-face) (raw_blck "```" @typst-ts-markup-rawblock-indicator-face - (ident) :? @typst-ts-mode-highlight-raw-block-fn + (ident) :? @typst-ts-markup-rawblock-lang-face ;; NOTE let embedded language fontify blob ,@(if typst-ts-mode-enable-raw-blocks-highlight - '((blob) @typst-ts-mode-highlight-block-fn) + '((blob) @typst-ts-mode-highlight-raw-block-fn) '((blob) @typst-ts-markup-rawblock-blob-face)) "```" @typst-ts-markup-rawblock-indicator-face) (label) @typst-ts-markup-label-face ; TODO more precise highlight (upstream) @@ -936,7 +939,7 @@ NODE, PARENT and BOL see `treesit-indent-function'." (error "Variable `typst-ts-mode-indent-function' shouldn't be null!")) (let ((res (funcall typst-ts-mode-indent-function node parent bol))) ;; if it is a highlighted raw block region (i.e. contains at least one local parser) - (when (treesit-local-parsers-at (treesit-node-start node)) + (when (typst-ts-utils-local-parsers-at (treesit-node-start node)) ;; when there is no matching rules (unless (car res) (setcar res bol) @@ -1528,8 +1531,10 @@ typst tree sitter grammar (at least %s)!" (current-time-string min-time)) t)) ;; it seems like the following code only works after-hook - (when (and typst-ts-mode-enable-raw-blocks-highlight - typst-ts-mode-highlight-raw-blocks-at-startup) + (when (and + (>= emacs-major-version 30) + typst-ts-mode-enable-raw-blocks-highlight + typst-ts-mode-highlight-raw-blocks-at-startup) ;; since currently local parsers haven't created, we cannot only load ;; those necessary parsers (cl-loop for setting in typst-ts-embedding-lang-settings @@ -1600,18 +1605,19 @@ typst tree sitter grammar (at least %s)!" (current-time-string min-time)) (file-name-nondirectory buffer-file-name) typst-ts-mode-compile-options)) - (if (not typst-ts-mode-enable-raw-blocks-highlight) + (when (>= emacs-major-version 30) + (if (not typst-ts-mode-enable-raw-blocks-highlight) + (setq-local treesit-range-settings + (typst-ts-mode--treesit-range-rules '(typst))) + (setq-local treesit-language-at-point-function + 'typst-ts-mode--language-at-point) (setq-local treesit-range-settings - (typst-ts-mode--treesit-range-rules '(typst))) - (setq-local treesit-language-at-point-function - 'typst-ts-mode--language-at-point) - (setq-local treesit-range-settings - (typst-ts-mode--treesit-range-rules - (append - (cl-loop for setting in typst-ts-embedding-lang-settings - when (treesit-ready-p (car setting) t) - collect (car setting)) - '(typst))))) + (typst-ts-mode--treesit-range-rules + (append + (cl-loop for setting in typst-ts-embedding-lang-settings + when (treesit-ready-p (car setting) t) + collect (car setting)) + '(typst)))))) ;; Outline (if nil ; (>= emacs-major-version 30) diff --git a/typst-ts-utils.el b/typst-ts-utils.el new file mode 100644 index 0000000000..2db1544971 --- /dev/null +++ b/typst-ts-utils.el @@ -0,0 +1,62 @@ +;;; typst-ts-utils.el --- utility functions for typst-ts-mode -*- lexical-binding: t; -*- +;; Copyright (C) 2024 Meow King <mr.meowk...@anche.no> + +;; This file is NOT part of Emacs. +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Utility functions for typst-ts-mode + +;;; Code: + +(require 'treesit) + +;; code is from treesit.el inside Emacs Source +(defun typst-ts-utils-local-parsers-at (&optional pos language with-host) + "Return all the local parsers at POS. +It's a copy of Emacs 30's `treesit-local-parsers-at' function. +POS LANGUAGE WITH-HOST." + (if (>= emacs-major-version 30) + (funcall #'treesit-local-parsers-at pos language with-host) + (let ((res nil)) + (dolist (ov (overlays-at (or pos (point)))) + (when-let ((parser (overlay-get ov 'treesit-parser)) + (host-parser (overlay-get ov 'treesit-host-parser))) + (when (or (null language) + (eq (treesit-parser-language parser) + language)) + (push (if with-host (cons parser host-parser) parser) res)))) + (nreverse res)))) + +;; code is from treesit.el inside Emacs Source +(defun typst-ts-utils-local-parsers-on (&optional beg end language with-host) + "Return all the local parsers between BEG END. +It's a copy of Emacs 30's `treesit-local-parsers-on' function. +BEG END LANGUAGE WITH-HOST." + (if (>= emacs-major-version 30) + (funcall #'treesit-local-parsers-on beg end language with-host) + (let ((res nil)) + (dolist (ov (overlays-in (or beg (point-min)) (or end (point-max)))) + (when-let ((parser (overlay-get ov 'treesit-parser)) + (host-parser (overlay-get ov 'treesit-host-parser))) + (when (or (null language) + (eq (treesit-parser-language parser) + language)) + (push (if with-host (cons parser host-parser) parser) res)))) + (nreverse res)))) + +(provide 'typst-ts-utils) + +;;; typst-ts-utils.el ends here