From 3bae6fd44809a2838fa91495ea346879a5b94c5b Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Wed, 16 Sep 2026 22:45:02 +0200 Subject: [PATCH] Bundle curated community plugins (2.1.8-4) Vendored from upstream, pinned by commit (see debian/extra/README.source): - gitstatus, gitopen, fontconfig, open_ext, select_colorscheme, smoothcaret, nerdicons (font mapping patched to DATADIR, Ships the Symbols Nerd Font Mono TTF, SIL OFL 1.1) - lite-xl-lsp (complete LSP client; idle until a language server is configured) plus the lite-xl-widgets library it requires - 104 language syntax plugins (none duplicate the nine bundled in core) settings GUI left out upstream is broken: it requires a libraries.widget.fonts widget that does not exist in lite-xl-widgets at any revision. Co-developed-with: ZCode (Z.ai) --- debian/changelog | 16 + debian/extra/README.source | 20 + .../fonts/SymbolsNerdFontMono-Regular.ttf | Bin 0 -> 2610012 bytes .../font_symbols_nerdfont_mono_regular.lua | 9372 +++++++++++++++++ debian/extra/libraries/widget/button.lua | 163 + debian/extra/libraries/widget/checkbox.lua | 142 + debian/extra/libraries/widget/colorpicker.lua | 745 ++ .../libraries/widget/colorpickerdialog.lua | 77 + debian/extra/libraries/widget/dialog.lua | 164 + debian/extra/libraries/widget/filepicker.lua | 395 + debian/extra/libraries/widget/foldingbook.lua | 216 + debian/extra/libraries/widget/fonts/cache.lua | 287 + debian/extra/libraries/widget/fonts/info.lua | 550 + debian/extra/libraries/widget/fonts/init.lua | 230 + debian/extra/libraries/widget/fontslist.lua | 223 + debian/extra/libraries/widget/init.lua | 1544 +++ debian/extra/libraries/widget/inputdialog.lua | 88 + debian/extra/libraries/widget/itemslist.lua | 162 + .../extra/libraries/widget/keybinddialog.lua | 257 + debian/extra/libraries/widget/label.lua | 95 + debian/extra/libraries/widget/line.lua | 61 + debian/extra/libraries/widget/listbox.lua | 926 ++ debian/extra/libraries/widget/messagebox.lua | 343 + debian/extra/libraries/widget/notebook.lua | 188 + debian/extra/libraries/widget/numberbox.lua | 238 + debian/extra/libraries/widget/progressbar.lua | 95 + debian/extra/libraries/widget/scrollbar.lua | 33 + .../libraries/widget/searchreplacelist.lua | 607 ++ debian/extra/libraries/widget/selectbox.lua | 288 + debian/extra/libraries/widget/textbox.lua | 308 + debian/extra/libraries/widget/toggle.lua | 140 + debian/extra/libraries/widget/treelist.lua | 609 ++ debian/extra/plugins/fontconfig.lua | 118 + debian/extra/plugins/gitopen.lua | 51 + debian/extra/plugins/gitstatus.lua | 155 + debian/extra/plugins/language_R.lua | 39 + debian/extra/plugins/language_angelscript.lua | 88 + .../extra/plugins/language_assembly_riscv.lua | 538 + .../extra/plugins/language_assembly_x86.lua | 2215 ++++ .../extra/plugins/language_autohotkey_v1.lua | 155 + debian/extra/plugins/language_awk.lua | 110 + debian/extra/plugins/language_batch.lua | 63 + debian/extra/plugins/language_bend.lua | 65 + debian/extra/plugins/language_bib.lua | 23 + debian/extra/plugins/language_blade.lua | 57 + debian/extra/plugins/language_blueprint.lua | 90 + debian/extra/plugins/language_brainfuck.lua | 23 + debian/extra/plugins/language_buzz.lua | 76 + debian/extra/plugins/language_c7.lua | 80 + debian/extra/plugins/language_caddyfile.lua | 104 + debian/extra/plugins/language_carbon.lua | 83 + debian/extra/plugins/language_clojure.lua | 56 + debian/extra/plugins/language_cmake.lua | 19 + debian/extra/plugins/language_csharp.lua | 122 + debian/extra/plugins/language_cue.lua | 41 + debian/extra/plugins/language_d.lua | 135 + debian/extra/plugins/language_dart.lua | 64 + debian/extra/plugins/language_diff.lua | 70 + debian/extra/plugins/language_edp.lua | 645 ++ debian/extra/plugins/language_ejs.lua | 51 + debian/extra/plugins/language_elixir.lua | 95 + debian/extra/plugins/language_elm.lua | 49 + debian/extra/plugins/language_env.lua | 68 + debian/extra/plugins/language_erb.lua | 55 + debian/extra/plugins/language_fe.lua | 52 + debian/extra/plugins/language_fennel.lua | 268 + debian/extra/plugins/language_fortran.lua | 85 + debian/extra/plugins/language_fstab.lua | 99 + debian/extra/plugins/language_gabc.lua | 19 + debian/extra/plugins/language_gdscript.lua | 101 + debian/extra/plugins/language_glsl.lua | 389 + debian/extra/plugins/language_gmi.lua | 21 + debian/extra/plugins/language_go.lua | 232 + debian/extra/plugins/language_graphql.lua | 42 + debian/extra/plugins/language_gravity.lua | 98 + debian/extra/plugins/language_groovy.lua | 109 + debian/extra/plugins/language_hare.lua | 91 + debian/extra/plugins/language_haxe.lua | 113 + debian/extra/plugins/language_hlsl.lua | 277 + debian/extra/plugins/language_hs.lua | 48 + debian/extra/plugins/language_htaccess.lua | 212 + debian/extra/plugins/language_ignore.lua | 20 + debian/extra/plugins/language_ini.lua | 27 + debian/extra/plugins/language_java.lua | 87 + debian/extra/plugins/language_jiyu.lua | 93 + debian/extra/plugins/language_json.lua | 34 + debian/extra/plugins/language_jsx.lua | 73 + debian/extra/plugins/language_julia.lua | 112 + debian/extra/plugins/language_kdl.lua | 84 + debian/extra/plugins/language_kotlin.lua | 124 + debian/extra/plugins/language_lilypond.lua | 22 + debian/extra/plugins/language_liquid.lua | 145 + debian/extra/plugins/language_lobster.lua | 79 + debian/extra/plugins/language_lox.lua | 34 + debian/extra/plugins/language_make.lua | 19 + debian/extra/plugins/language_marte.lua | 42 + debian/extra/plugins/language_meson.lua | 36 + debian/extra/plugins/language_miniscript.lua | 102 + debian/extra/plugins/language_moon.lua | 64 + debian/extra/plugins/language_nelua.lua | 119 + debian/extra/plugins/language_nginx.lua | 394 + debian/extra/plugins/language_nim.lua | 145 + debian/extra/plugins/language_nix.lua | 87 + debian/extra/plugins/language_objc.lua | 63 + debian/extra/plugins/language_odin.lua | 162 + debian/extra/plugins/language_openscad.lua | 119 + debian/extra/plugins/language_perl.lua | 291 + debian/extra/plugins/language_php.lua | 421 + debian/extra/plugins/language_pico8.lua | 53 + debian/extra/plugins/language_pkgbuild.lua | 251 + debian/extra/plugins/language_po.lua | 21 + debian/extra/plugins/language_powershell.lua | 77 + debian/extra/plugins/language_psql.lua | 92 + debian/extra/plugins/language_rescript.lua | 60 + debian/extra/plugins/language_ring.lua | 92 + debian/extra/plugins/language_rivet.lua | 102 + debian/extra/plugins/language_ruby.lua | 73 + debian/extra/plugins/language_rust.lua | 89 + debian/extra/plugins/language_sass.lua | 47 + debian/extra/plugins/language_scala.lua | 80 + debian/extra/plugins/language_sh.lua | 103 + debian/extra/plugins/language_ssh_config.lua | 58 + debian/extra/plugins/language_st.lua | 125 + debian/extra/plugins/language_starlark.lua | 101 + debian/extra/plugins/language_swift.lua | 149 + debian/extra/plugins/language_tal.lua | 70 + debian/extra/plugins/language_tau.lua | 95 + debian/extra/plugins/language_tcl.lua | 69 + debian/extra/plugins/language_teal.lua | 57 + debian/extra/plugins/language_tex.lua | 27 + debian/extra/plugins/language_toml.lua | 40 + debian/extra/plugins/language_ts.lua | 74 + debian/extra/plugins/language_tsx.lua | 75 + debian/extra/plugins/language_typst.lua | 231 + debian/extra/plugins/language_umka.lua | 67 + debian/extra/plugins/language_v.lua | 95 + debian/extra/plugins/language_wren.lua | 52 + debian/extra/plugins/language_yaml.lua | 154 + debian/extra/plugins/language_zig.lua | 118 + debian/extra/plugins/lsp/LICENSE | 22 + debian/extra/plugins/lsp/README.md | 271 + debian/extra/plugins/lsp/config.lua | 1031 ++ debian/extra/plugins/lsp/diagnostics.lua | 311 + debian/extra/plugins/lsp/fonts/README.md | 29 + .../extra/plugins/lsp/fonts/generate-fonts.py | 101 + debian/extra/plugins/lsp/fonts/symbols.ttf | Bin 0 -> 9400 bytes debian/extra/plugins/lsp/helpdoc.lua | 32 + debian/extra/plugins/lsp/init.lua | 2604 +++++ debian/extra/plugins/lsp/json.lua | 532 + debian/extra/plugins/lsp/listbox.lua | 580 + debian/extra/plugins/lsp/manifest.json | 19 + debian/extra/plugins/lsp/server.lua | 1662 +++ debian/extra/plugins/lsp/symbolresults.lua | 121 + debian/extra/plugins/lsp/timer.lua | 101 + debian/extra/plugins/lsp/util.lua | 474 + debian/extra/plugins/nerdicons.lua | 210 + debian/extra/plugins/open_ext.lua | 162 + debian/extra/plugins/select_colorscheme.lua | 132 + debian/extra/plugins/settings.lua | 1982 ++++ debian/extra/plugins/smoothcaret.lua | 115 + debian/install | 116 + 161 files changed, 42843 insertions(+) create mode 100644 debian/extra/README.source create mode 100644 debian/extra/fonts/SymbolsNerdFontMono-Regular.ttf create mode 100644 debian/extra/libraries/font_symbols_nerdfont_mono_regular.lua create mode 100644 debian/extra/libraries/widget/button.lua create mode 100644 debian/extra/libraries/widget/checkbox.lua create mode 100644 debian/extra/libraries/widget/colorpicker.lua create mode 100644 debian/extra/libraries/widget/colorpickerdialog.lua create mode 100644 debian/extra/libraries/widget/dialog.lua create mode 100644 debian/extra/libraries/widget/filepicker.lua create mode 100644 debian/extra/libraries/widget/foldingbook.lua create mode 100644 debian/extra/libraries/widget/fonts/cache.lua create mode 100644 debian/extra/libraries/widget/fonts/info.lua create mode 100644 debian/extra/libraries/widget/fonts/init.lua create mode 100644 debian/extra/libraries/widget/fontslist.lua create mode 100644 debian/extra/libraries/widget/init.lua create mode 100644 debian/extra/libraries/widget/inputdialog.lua create mode 100644 debian/extra/libraries/widget/itemslist.lua create mode 100644 debian/extra/libraries/widget/keybinddialog.lua create mode 100644 debian/extra/libraries/widget/label.lua create mode 100644 debian/extra/libraries/widget/line.lua create mode 100644 debian/extra/libraries/widget/listbox.lua create mode 100644 debian/extra/libraries/widget/messagebox.lua create mode 100644 debian/extra/libraries/widget/notebook.lua create mode 100644 debian/extra/libraries/widget/numberbox.lua create mode 100644 debian/extra/libraries/widget/progressbar.lua create mode 100644 debian/extra/libraries/widget/scrollbar.lua create mode 100644 debian/extra/libraries/widget/searchreplacelist.lua create mode 100644 debian/extra/libraries/widget/selectbox.lua create mode 100644 debian/extra/libraries/widget/textbox.lua create mode 100644 debian/extra/libraries/widget/toggle.lua create mode 100644 debian/extra/libraries/widget/treelist.lua create mode 100644 debian/extra/plugins/fontconfig.lua create mode 100644 debian/extra/plugins/gitopen.lua create mode 100644 debian/extra/plugins/gitstatus.lua create mode 100644 debian/extra/plugins/language_R.lua create mode 100644 debian/extra/plugins/language_angelscript.lua create mode 100644 debian/extra/plugins/language_assembly_riscv.lua create mode 100644 debian/extra/plugins/language_assembly_x86.lua create mode 100644 debian/extra/plugins/language_autohotkey_v1.lua create mode 100644 debian/extra/plugins/language_awk.lua create mode 100644 debian/extra/plugins/language_batch.lua create mode 100644 debian/extra/plugins/language_bend.lua create mode 100644 debian/extra/plugins/language_bib.lua create mode 100644 debian/extra/plugins/language_blade.lua create mode 100644 debian/extra/plugins/language_blueprint.lua create mode 100644 debian/extra/plugins/language_brainfuck.lua create mode 100644 debian/extra/plugins/language_buzz.lua create mode 100644 debian/extra/plugins/language_c7.lua create mode 100644 debian/extra/plugins/language_caddyfile.lua create mode 100644 debian/extra/plugins/language_carbon.lua create mode 100644 debian/extra/plugins/language_clojure.lua create mode 100644 debian/extra/plugins/language_cmake.lua create mode 100644 debian/extra/plugins/language_csharp.lua create mode 100644 debian/extra/plugins/language_cue.lua create mode 100644 debian/extra/plugins/language_d.lua create mode 100644 debian/extra/plugins/language_dart.lua create mode 100644 debian/extra/plugins/language_diff.lua create mode 100644 debian/extra/plugins/language_edp.lua create mode 100644 debian/extra/plugins/language_ejs.lua create mode 100644 debian/extra/plugins/language_elixir.lua create mode 100644 debian/extra/plugins/language_elm.lua create mode 100644 debian/extra/plugins/language_env.lua create mode 100644 debian/extra/plugins/language_erb.lua create mode 100644 debian/extra/plugins/language_fe.lua create mode 100644 debian/extra/plugins/language_fennel.lua create mode 100644 debian/extra/plugins/language_fortran.lua create mode 100644 debian/extra/plugins/language_fstab.lua create mode 100644 debian/extra/plugins/language_gabc.lua create mode 100644 debian/extra/plugins/language_gdscript.lua create mode 100644 debian/extra/plugins/language_glsl.lua create mode 100644 debian/extra/plugins/language_gmi.lua create mode 100644 debian/extra/plugins/language_go.lua create mode 100644 debian/extra/plugins/language_graphql.lua create mode 100644 debian/extra/plugins/language_gravity.lua create mode 100644 debian/extra/plugins/language_groovy.lua create mode 100644 debian/extra/plugins/language_hare.lua create mode 100644 debian/extra/plugins/language_haxe.lua create mode 100644 debian/extra/plugins/language_hlsl.lua create mode 100644 debian/extra/plugins/language_hs.lua create mode 100644 debian/extra/plugins/language_htaccess.lua create mode 100644 debian/extra/plugins/language_ignore.lua create mode 100644 debian/extra/plugins/language_ini.lua create mode 100644 debian/extra/plugins/language_java.lua create mode 100644 debian/extra/plugins/language_jiyu.lua create mode 100644 debian/extra/plugins/language_json.lua create mode 100644 debian/extra/plugins/language_jsx.lua create mode 100644 debian/extra/plugins/language_julia.lua create mode 100644 debian/extra/plugins/language_kdl.lua create mode 100644 debian/extra/plugins/language_kotlin.lua create mode 100644 debian/extra/plugins/language_lilypond.lua create mode 100644 debian/extra/plugins/language_liquid.lua create mode 100644 debian/extra/plugins/language_lobster.lua create mode 100644 debian/extra/plugins/language_lox.lua create mode 100644 debian/extra/plugins/language_make.lua create mode 100644 debian/extra/plugins/language_marte.lua create mode 100644 debian/extra/plugins/language_meson.lua create mode 100644 debian/extra/plugins/language_miniscript.lua create mode 100644 debian/extra/plugins/language_moon.lua create mode 100644 debian/extra/plugins/language_nelua.lua create mode 100644 debian/extra/plugins/language_nginx.lua create mode 100644 debian/extra/plugins/language_nim.lua create mode 100644 debian/extra/plugins/language_nix.lua create mode 100644 debian/extra/plugins/language_objc.lua create mode 100644 debian/extra/plugins/language_odin.lua create mode 100644 debian/extra/plugins/language_openscad.lua create mode 100644 debian/extra/plugins/language_perl.lua create mode 100644 debian/extra/plugins/language_php.lua create mode 100644 debian/extra/plugins/language_pico8.lua create mode 100644 debian/extra/plugins/language_pkgbuild.lua create mode 100644 debian/extra/plugins/language_po.lua create mode 100644 debian/extra/plugins/language_powershell.lua create mode 100644 debian/extra/plugins/language_psql.lua create mode 100644 debian/extra/plugins/language_rescript.lua create mode 100644 debian/extra/plugins/language_ring.lua create mode 100644 debian/extra/plugins/language_rivet.lua create mode 100644 debian/extra/plugins/language_ruby.lua create mode 100644 debian/extra/plugins/language_rust.lua create mode 100644 debian/extra/plugins/language_sass.lua create mode 100644 debian/extra/plugins/language_scala.lua create mode 100644 debian/extra/plugins/language_sh.lua create mode 100644 debian/extra/plugins/language_ssh_config.lua create mode 100644 debian/extra/plugins/language_st.lua create mode 100644 debian/extra/plugins/language_starlark.lua create mode 100644 debian/extra/plugins/language_swift.lua create mode 100644 debian/extra/plugins/language_tal.lua create mode 100644 debian/extra/plugins/language_tau.lua create mode 100644 debian/extra/plugins/language_tcl.lua create mode 100644 debian/extra/plugins/language_teal.lua create mode 100644 debian/extra/plugins/language_tex.lua create mode 100644 debian/extra/plugins/language_toml.lua create mode 100644 debian/extra/plugins/language_ts.lua create mode 100644 debian/extra/plugins/language_tsx.lua create mode 100644 debian/extra/plugins/language_typst.lua create mode 100644 debian/extra/plugins/language_umka.lua create mode 100644 debian/extra/plugins/language_v.lua create mode 100644 debian/extra/plugins/language_wren.lua create mode 100644 debian/extra/plugins/language_yaml.lua create mode 100644 debian/extra/plugins/language_zig.lua create mode 100644 debian/extra/plugins/lsp/LICENSE create mode 100644 debian/extra/plugins/lsp/README.md create mode 100644 debian/extra/plugins/lsp/config.lua create mode 100644 debian/extra/plugins/lsp/diagnostics.lua create mode 100644 debian/extra/plugins/lsp/fonts/README.md create mode 100755 debian/extra/plugins/lsp/fonts/generate-fonts.py create mode 100644 debian/extra/plugins/lsp/fonts/symbols.ttf create mode 100644 debian/extra/plugins/lsp/helpdoc.lua create mode 100644 debian/extra/plugins/lsp/init.lua create mode 100644 debian/extra/plugins/lsp/json.lua create mode 100644 debian/extra/plugins/lsp/listbox.lua create mode 100644 debian/extra/plugins/lsp/manifest.json create mode 100644 debian/extra/plugins/lsp/server.lua create mode 100644 debian/extra/plugins/lsp/symbolresults.lua create mode 100644 debian/extra/plugins/lsp/timer.lua create mode 100644 debian/extra/plugins/lsp/util.lua create mode 100644 debian/extra/plugins/nerdicons.lua create mode 100644 debian/extra/plugins/open_ext.lua create mode 100644 debian/extra/plugins/select_colorscheme.lua create mode 100644 debian/extra/plugins/settings.lua create mode 100644 debian/extra/plugins/smoothcaret.lua diff --git a/debian/changelog b/debian/changelog index 3ad13a0..cec5546 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +lite-xl (2.1.8-4) stonking; urgency=medium + + * Bundle a curated set of community plugins (vendored, pinned in + debian/extra/README.source): + - gitstatus, gitopen, fontconfig, open_ext, select_colorscheme, + smoothcaret, nerdicons (+ Symbols Nerd Font Mono, font path patched + to DATADIR) + - lite-xl-lsp (full LSP client; activates when a language server is + configured) with the lite-xl-widgets library it requires + - 104 additional language syntax plugins (none duplicate the nine + already bundled with core) + * settings GUI plugin left out: its hard dependency on a widget that is + missing from lite-xl-widgets@master makes it fail to load upstream. + + -- Valentin Haudiquet Wed, 16 Sep 2026 22:10:00 +0200 + lite-xl (2.1.8-3) stonking; urgency=medium * Ship a VSCode-style dark theme and out-of-the-box config: diff --git a/debian/extra/README.source b/debian/extra/README.source new file mode 100644 index 0000000..d88cd2c --- /dev/null +++ b/debian/extra/README.source @@ -0,0 +1,20 @@ +Vendored from upstream, pinned by commit: + +- lite-xl-plugins https://github.com/lite-xl/lite-xl-plugins @ 31eef29 (master, 2026-09) + plugins/: gitstatus, gitopen, fontconfig, open_ext, select_colorscheme, + smoothcaret, nerdicons, language_* (all 104; none overlap the ones bundled + in the core data/ directory) +- lite-xl-lsp https://github.com/lite-xl/lite-xl-lsp @ d1432ae (master, 2026-09) + vendored whole as plugins/lsp/ (screenshots removed) +- lite-xl-widgets https://github.com/lite-xl/lite-xl-widgets @ dcf1c8c + NOT vendored: only the settings plugin needs it, and settings@master + requires libraries.widget.fonts which does not exist in the widgets + repository at any revision, so settings cannot load. Revisit when + upstream publishes the missing widget. +- nerdicons font mapping: plugins/font_symbols_nerdfont_mono_regular.lua + shipped as usr/share/lite-xl/libraries/font_symbols_nerdfont_mono_regular.lua + with the font path patched from USERDIR to DATADIR, plus the + Symbols Nerd Font Mono TTF (SIL OFL 1.1) next to it. + +Refresh by re-cloning the sources at a new commit and re-applying the single +sed patch to the font mapping path. diff --git a/debian/extra/fonts/SymbolsNerdFontMono-Regular.ttf b/debian/extra/fonts/SymbolsNerdFontMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3b5a184756f6bc44fe77e7c884ec9fda24084505 GIT binary patch literal 2610012 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 nZ zDilANk28!dRgE)(N{uC%w3!mcQ^Lu(Ch-shbBfPefI0d&?9(P5Gqamty z5Z8E1H(vL9WW!OFqJN*@Csx6IQyd(^#Pn$A_cZe zdzl`QnNJS<4d=9oj5~c=WJ%7rg8`{&<6mEftjqcWels)tQ(Lkgq& z5(j2HqWKu807w+jlX-CcK*<2x4{}qyY%NFM&HO9={EpJvsM8sVXw+)|;IvMgRpn}3 zv>~a_?-VR`4YT_OB7c>C#fV0ONkE!8qQCe}9H6hB!jegGPOJCm39nXy6F}hqO5TKx zXK^c)OJEsC8eG#Pl9tDF0(!&VI zdUnsUF~h9FY67zY%+z(9CLS${h2=RCTo;o|vQ-izMe@7zFLF}A5dt@**;Accpf<-P zi52xquuQlBNM%HaE0^|38hg7FI!qiE6|I8l0JmEV&m0kjEK0YF+7)yi8a#R?Hd6n- z#azR$x^OW4%|qL^J+zfMNH^s6nOnEc#Ea4Y+oljtUnC#zdUEH^C)1y%$H_-K>FUn( zLb{&Wy^D?!+|LAN$p){P2NA&#<^r1`5R33g7b`QdF+;${N06v2vN01pP7xCu0ZEtm zcXj#=wOlDz(&Zi9ltLfXSR;t|MuH#KPq?bVy7QhrQc9}@`;K` zsK`s?B`oP#*e6#c*lBO4cQV`F9`6}H^)|CDz4L9_R=}&se}zr`pBbAIZ3MKvlEu4# z5H~eUIlR*7BC?#mAdeGH{)XMiZXDk)*OTYSS-DoO2QFQ{)U0suH)ar_w9;P|W=(jd zCJYcvR#>CcmoY+1?$L3O!jLeNGR7nTKuuB^#Sa=GbUO;tLIEMGn1u>}A*zZeIckf- z5-r1Eqkb>dg&o228lx_1Nj8}fhPkSF=?n*N{3luPJlS?utI_fRB9`bbhI*d9`@`pV zzs{JI1=%x?%nSzH*^1>|HSA->#qwkFq_^a6)Gdx&b$}co!@*{ib@aBYY-?=pb=+Uo z7j_19srslRS!YrWmd{w~C<~IUN2Z}{1kZmQ)fsAS z8}f%b=gJqGgYvfSL}gPXS6xUvwr14XFSglxY>Y~^RjE_usaTat^|isEs!%JGhP4hs zc@=7zC=`nOluHyPdWkpOrWVyoji6!m1Xgpspg+RZmke1iv;rva)SkC z22NOsohBcjPJu~?8S51BQ*n$TtrAOvAQ;G*>16(NjBoZ$#jyub;7lKL7g?$_%`Adn z3Y|`!b{hn3F8S?WaW)_-=#D>N5dE+KTeIe%uhED&m9b_UjrlR?Ip}&+dIRK3`y6df zvzMb$sgeXov3{9xk7*w0S|*7`%D9gZnT?_vQ7X(HKDlV*Ns_z#FiKHNT;1=GsCn(3 zH$J`Rlj&E7tZl^eExF^ePoBGdO>Onc+fIM@#YfNHKHA9Et-kHdf8NqOGStyJvXD9m zCCTQhPTw|I?eh#zA=Sc=KmX0!KmXEeUFDeTkl*^9{MUfCx%BDnXNmjH$`R7@)f1z& zt4}=h;a49%b7FN}9bMhH@xwE>t*QU7k=EAXk><7~a$b6bHAqrlUoCkv5bNV4I)3X|-dGExAB_Q+9!HUnaEws_h*pYH7`H{s0JjXE z1DAC>@vZNz9lg1FO~^6Htw- zs{8EWwMWgb$>-LeUB#_CyJ7uvbRi7SnwEXr%F&wFzrC7XU{^=SE_wlCB}%$=XYHEf zPk*p}{RdAUUsH?Ao%wLnGmolnU5P9`xqbbM>o+{NnqPO8F6i$B>%BZE0)PWu`Wi@3 z>I=yTmLRq4GbLD{`{Kbvb+dvU9*Qzt;1DQG8AVh;W2P=}fD_>sKztW+h7!!+52`Xo z5^b@JBP;Wkg#AgcRq{W3DRhPATZE!mQjb?zvG|T;J1|pav>Dw>ltO2jPMcR#{>48X zv+YV#{3n;)UE>}cF>^?MFe_EgfU9ZNruN2bE^pU0>*i1CA5n0k&(51$-TC+Cp)MF} zvP>P#_LX&O675Mu2BRqFb<^mwYKOkM>sk_-H9WlPH{2iSv)7V!h}B##tjt=9 z9Gufxzs!0k>pT*HB&1j7kqT5%m`|4Do1w2y@DI@>MMwi{ZN|exwLE0PA=C)sO86JF zTrd<2<&XrN7Mz%1k&J_^C)z=<4%ZM(n1?xl+&TORT!&g%398`X@)JpS)Fgu-P9<>y z?F*QwXr2`14MMjOaUVE0<4U3t9dt(2D96+W2FD*Ztu%n*V`#p-7X6o+g}5L+orO0+ zq*fwADGa_Dw5K$M5+|Y^DS=2P4;B}tn=DwAIQ%Xf*x|GY(BN{(6a@#Ne^MinGAqHy zTZUeaydZ!xF@@q2NXIW1KGl#Y0VbYtM3sud{20+r=d_WM!Xj+|DD~{JYNxlMO2sGz zmB+3#g@q(0A50IXMxB}Ty z_pkSwBDvO5p|Rbd6fwOxo$iP!5w`kSRO&OUB#j#MSHV@DmJzL{I0OcWoKj26vkmj6 znuxbLY&PdwO$Dd!);c*c9*@v!C1E?+jcz84ZBa7Mq*N98tv^v$hjS~`?mYQnM{m1X(Ld`!uS+m$v=)SM zM51JQ?`)NdW}2xLSO^if0mbl`pxUP4)V1^VVl#Qc=FhPiIhDCZviR5>j*B`}L1i@k z&Z^D6%4_bCG>p=kDF2mHj~|z>Q=3F#u{f!t`10$vbwqmyUAA0zp}X3+FsjkTeZ`(gU98d_ zp58Vy;z~u6miFm>hBrxm*1w^-w0L?bAo-%m*y@?>0*4zxDJyWDYc;cOFe%jf!eEJ; zN!6<=gz6DuxjxiUsL`2_l-1e&0?}ZCmpoPmGzR*;nn=*^U^zsDv|5MB!8-F3E-T6) zN}@A_qzu;J3tFSvJkDF-*0cJUL&-yrP{Gw>s0Li{KSC)aZt*G|f{mQX&*aJ1GuCLt zB-X^N+N!)lR6mwfR!-fUB-&(dp3ls*$H!=#Wa8QMjv&Osp&-3)NE^x#mc zj9yoO0KlX~FNg^Yhbj<}Rsji`xC2}c-w!htH%iAk+;L)1fTW}Mi0{W|sB@bE zQs9S%k$aC~>tMder$~1oA$%tg`%ut<*-4caM_DYA_%QQptw>`sV9uNP9s&tRKLJ-CZcy*~Ik_YK0&tA_5!7wPA=Ya&w;}H%W=iAK) z;Hnr@^;GbBJwmb|#zzmwPMtd7baOgxm^E;JTEiJm5DgE)LL(ahqa%YDB8M$2h}Mu~ z?F^qfZfrKL=5*{lxqj?2FwW?zwEM471groh3I$%R1pZ$J@0S}otiO}A_Zox+ZX0x6 zRx%*0$%=$=h{jlv7+0Dd%6WH`Xs03F@A4q0X1@bV8Yh{(nrwGStx^s|2M; z$cNx%On^!!t}ZRxI&@uMw^`cuF?p3N3hz;>fbcl~ws~_fxRz91DGElxP6W3>&$2Dn z;yMGaY+2^iXu$iwV1zta*a5BB+NMc=)3rLP4DjLnJgWsX27-0+%{H`xpp&eQ9Jiom zc)NmisR; z&7{h|H}DQozLf>1S(~ACFZJ#D#z8vSImZ-Y)@u<%bo-#*j6@ahy}cU#@c zil~v(TJ;`Y5tWu5Z?k8+1-(U#a&c9yE{a1dKCY62F0~giAP!t+s(h>41@VghAx6ymYCObAEPLaL~5G$GZ30`3^PNEx(xS|qp>7Ih`Dnk^6!^mgh0 z2^*3Mkc`OVextNV@~e(P=dia?{zp^(CZ!R?tQ2*@o8zkZ&lGCM%I0b2c1wRuQcWue zM$M8>LLq8eK}W?a)2djoT&wU$iaUF7k0z@&c=hrA%|2g=Qd=BC7}pUhnY&n_u2t~1 zp^ZBqfka75lG5T+O{tky3AfFl6Sy9t3=bSOi=tSdt?{co3w1uJ&s?j|x0uy{Sp3YR zto^d)jzJa?L3|~?){2_I92*zydQKHL4_Z*X8n=Ujg}Ak(p0|=V$6AMc?~UzJ4URTT zC6du*8Tq@Elz6A)THzV4MM{6RxyGQq{?5g@*j=07EzwKp5)URSz9?^#zi3y+V%BhZ ztU}aODOg>1ex6~aUL5G^In;tng0;{BD(1zgaxE$qPuf%z0(ffIRa^?0g09I6o&mgq zL4_fJj-(uE(VhpAeL7ZQcXbX)f{zn5DijiF%C|@oj&V;jUwH5>wGww3S8=?uCD=|Z zZNn|Wwn4IFaJb{-FvD@#KvLjIX+%q(IlMcZd@DIazGH@&rX3+R{exZnQ*1!E7h%RQ zlw>>xhB_K1HlV|np_Dy*+r@a9X`Oqkjm8f=G|&U%Pc+lRu^V<^Ac&d=)J}$fR{Xw% zJvIcaqc?d7{TzMN7MKXog#z><2^9S*q~Rh&>u7W$l%#0qiF=@P7%l&2z<0yVLvO%> zl)+k@Vn}icZA4^!wRXT0*5VngMe!zw&TCfktT=!!aXt8h$`dB@ca&aQqn59eq^(Rq zZAx#}+MR&6unJbRkFT`5ee4A&a2J=GRil)ebCaGE?HBA{DkWlhO$Q<*;p30L;`L|k zC=~_1;DA#jNe-W&0Kq3eqk!i}`S-@hmAUA|%zB?_Psv^4tQAHd|Gk2I?S!Y*_J7z>^RxZ0A&y&eI02#GfSPQIJkUmj3EHR>iz@VWu ziy;890AWI<0-{6)an*TH5Ho^)+hd-=@{``<%j8do^atj?@-EcKU&$ zXhmIkfclLt-2p#mHWE*~h*H$xE(1smhm#CeYM=zZdL=O%L5u|P4o47B&(MBo8WWrX z2-;zUpu1ZDNk=b7=O%;vaPy|Ah0_mCzi{+{88gY-^4a4(z1(+ov!*p&eD&zj8*X4q z*8S9b#5TXIYb654AIkoLV*>-n`0V2TH8taZnSO8@M}{7Ji1DRg)ym&(-#)#GwbTv# zDm_eYIJ)M#wWZZ7kE~GLJb3J}V+hs4Z@2;d;cB!mc#eR7>Z5obQvkxBrr}aOF91gl z?IoC$@GCNj=X8?7lVnp6{TAv^oJfep^n(Y4JUvu&@?uP8lvN_ok!-cl>464-F_XbH zR72nB5H2nGFZPH;K9r2{a-+PbwiQ*F6;`P;ET!A)3v**?Cwq*Hy|(JtCznaOkMHgC z51ZR8_k65ZHS9XOHtHX^XLEb|=6eQa-?Mqr*y{%hBI+@3PAo7c=Gg4fUG`|yzDpR! zz?Z#}S$Oc{LSBb&UD>8tA6o2_^M)K)* z(m8_9+A1#)cL^(iUy8$f+KDPn@R-0KV1NfA77$>{u=->zV}p)^c>zBZdJB{oLy|3~ zedzmbL__J0e>tL%(kuj`l&^#WN8#QNpjSc1fr`Q(tzTUuGR0FzO2!oxb1U4K>dB;a zwfs^k+XY@*1@u!sm_4<#^WU~z<^R`?sh#Ot(j(5WRsb0~1ZLqBHB;*hp~e8V^cG<; z)3&kx{3qq}DqTEN+&@wRVMA({Rf-p018a@mQe11u1$j&{xfvR#QEy4s8FE`;;wQu#lW=- z2gxcBW^8;_lh@EbYuZ3(OG5jwyivB3{m-aeB^AB>D^@S->nbgBs<_Gv=MHlhn+w-o zv81_a@8 z%9JvJPYKh25Q4J`b|3X+mZYdZs+I*u8r)v61Mv|AFx3|`8(a*J8b}YEmICUY9?DXZ z3~L$eTnoHO2_+2~(EV^;(Fae5L*_CtL9zGu{M+sO=YXwGp)?}3q^zQ#-cmL8bEmDM zJe40(NLq&*O#R`=_D>qjsYq+CHEdO?^xp2ud3GeCg4)_Nb#83`c1KAh<#uM3@40;5J)-}cm-4! z(XxS%e{?Wt=&G&t3aZ|D)+yiy5d}{m1_-Ex4&YB!)SD9dD&Nx0x>P}tS}V9BK?}>d z{5riJfp}tRonfyX+Ey5;D+*n_OQ|%lJ*=*x#cpYDZ7viE;JboOsa2!QUtfNc%iL5^ zQ7_I6%vs`B$AZ}bucXM&k8zUHVOOd&XUk1ZNlc&<`HRaH3Sj}FM4k*YOdj|`OTcJV zjgCm`OH&B&z>b-`g;8F@iQ;HK+NB78_%A_Z$Uivk_4H17UQN3NSNWQZIo}0MrksC&}*nc zl|p_{##WjD=~4sA1_#2#u29D2%J^6&PKuRgvbJzgB>3MvUUceW|7}wgB7xEnq8vCz zA1N#Gi}XTCzkx6P9t#W?5ZU}xb|h@K>9ksn14YxLPetRwuovhDizgI_f_%B=^FZoFdgn$9T= zY}39C+lPjR7f*3COj$6n_=+_r4sN|_?#8y6m5$l-23IU!K58i{m^7)NpfE9M^4zqe zsGz-rZgjL46*vw*G;R6~q#zMJwfftj(&ap@zFXC;s;Yk=}Q zlJyAkP%y6{P)1b;n7bJ585}9v3~GEv6re6QtX2F+j0Ns8urN+!q{40h_5pelJXa7b zz#zet#bMu@w3tSMncWoH1Phyb(kHSAP(GX*+*C(Yh%ilYNtg;Gqu*L6+ZGSFzX z2jPykST(A0)s8=|2jvA4;Vz$?cq|WigDIy}P-Nsc!Z zw$x(B6ji=jGCNgeYU#!smrsis)W(Kvwm$!{{N~7Y^0y5U7I~rw&Y(=KhBL@N&F|q9 zDiH*Opu4gI3Xv-~%NKCl7R+l!TrRZCIA;MiR-O}=Wd z`tf_?WVm3%zzx|~%KVth@6eLB$?r$c=8m*h8!KZ)g*M4vX)!0Bx(9;{o+ZRS>8Q@6w$fc01RT|I;fM-F6xk@Ih zV2e(C%`>N{)wl0}LV4S@eaB*Rlm3!g_#fSsLw)Ry;`+I370Uj3e6A&^$_psPs<7vl zJe^6ec<Qp)gdz~Ybr)_j7 zgBr=EaZELUI@Q)|Q$%1W^Or87&^eF%@EXiDG?NuLdh}6Spq2%`6;$6bNFJC;^bc4s zwid818&spr1|jE`=Jbi9kkWa3?(4 zA@jQbLO(N|zwg3yb}p?NDAc6?^icZKhtr?p*h7#NDR@T^+_I`l!X_H?!h1WBb$N2 z(AK92mQ3?U0RqneHcG;ol~P=a(JX2AI;%TRWM>;H@9nB~``Z^!sxPeV+_7_@lGKju zyXi-JSNOck_x$M4-lern<(yqRJ8O&EQjVfX` z{Z?1zFK%ruE@}dvGQ+oL1UHgX(EMW}8`|mn=xU{gcX4}adi}GeJmVZ{CpI=`;yB;Dxv&_+3 z4F;z+hs)AAOJv8yx?TZ@=)EBJ1KZ?(mc3Ve&b{j31WY z9=}jeqM37#;&~3^c{+eh&LS~9I(UeoX=RYDpz?u6MqyYWXu>WlU5B%YM7b#Omui_e zR4RMv#ZyM3ugoCtFq=>)u+$r69Gv_x57qcVElB9DmxM(O3A-=EZ6&rMz5H|D<7DdH zVV{Tlo!u)F#(Mr8i$?&nw_T@H!WoA9Qe;iSef<>om51u2(BY z+6LN>%o{xENek_N0v8iwNW`;}YTn$|bNQY}=gfI@-`Mn85D=S63(BKbUT{^Js}Gskw{ctyX*SUWmt!wqGFTX$c#wcBZ_ThqSk`X@&500idj?%6jEm9;BHnWD!HSQpC1o$=T+@Np# zp1gKRX)3B}a)b=7CgzWs&BE$NY&x6Ln;dnC8n-*&71qy~3v=G;dF#E}X_BshyD?i3 zR7||M$>3>E&Cgz^u_nUBZil(KvRWT>sahkNc|R++)H^-qe1BDT>gEHJ$dp1~YqBl$ z`mRu8b8e@Zgvz`{&XQd#uPxH3T=_XUk}cbj>x|9FP3}bGUy^3E>mt5rIM-71&hwwd#VHhgck5G53*$`bBlddbgsZZu#^7 zs++Lz7~3fyAe~VO{D+yO4-_#e4U_^6k3Ry$3{3<<uNh(8qIJR_*J2Lz3u}K?WAAfyg>!y3jn)CaH=EQM~ zUKI6)?mSy_WgqwPKy$w}RF8eQuXB)L>WplKzD5FmlLhc{g!s^nsp^Z+f(V&Z+3l%+72uoj9Qh7X^eO}a?M#ivK^JoL4^ z{+i3S$ag*>zx2_Lk*CL*ZO7#gf3x-PFEh^ww#Mp?l87agNERnTlEl=7)Y9fFCha`^ z(b_jzZNOX z3jB8I`#wHGZY6(WKn2b;F_W2T%p7JZL$g{eV1-2|pePd2Vxz%3&|gB*!HJKKMT;X~ zKO906Jq?}AV$IlYnMg5hJN(gJ8ARnq1d-`RkZ!{JkKkO!xTu2ba>!2+a%{r6_Z;Kye=s#lbjl*US+&9fqkjzh!1vG|DIqku3& z43;ETXs<5C`5Dk=X$n>)4JYDI3Izlms$-wx4Xu$oYkcvug%tDdN^mN=@3bz6< zGwfsFZD>1+K^#wegaPT28Bs#Vfi*m#PX|#L?t3FA{DX-@^Yo~`jUNc-Km8mVLIL1u z)jFM3fk=yF9`sOtVU?u+Ka{-(oK)r6Ha^ekbEfy+>+bB%&hG5YZ11oISXj!^mfjH% z5fv#GKm-daq7X60AQ}t7-iV@6V~mNhyp|+t5;Z2q`1+dYn<%?;{I2ILn&kbx-}nFh zx6GXS%sFSC=YH;T-Phe@HW?&s9QXjvRA)A8jp>jqbG24fYN!L>0+3yjx#$Cy7Sit}}rw0nvFu(r$qZg_pc8G=uUua>$meuIp+tsL0X5NZtsy%r zf|j68#Lpg%A+Q%mCEheaTo%EyokGc(~zNoX|RJ~ugVMeQm)NlRg?>>gbbM3$YM3|47_ z^6RAGqqH3r8$m4UuP~Q&<=Yb3WHQUWoy;Z@E>C=HIbBVVC&B?wEbMoNm>XSmLzv&v zDg$^SIme%q3`}JJPen(+gqX>g)!8{7JX>~N@|n~2kj#W3IV3y~tx1wnI+IVb7-de@ zbGE$bL$(f~@Da?jT6`^9ga_>CJ0=hP`gHRHdOy;>Yt3NQ2sm^S_Bh~PONaE5`puy? zF;c5+MHE(xY8)1xGYUGb5Nd(2rcXdLm^RRB6;T?t1sxBU8VvJVAOg_KLTMS{c$v5H zlHY`{&+eeTERN!HvP0W~?+pv!glFZnY(gbM;a4@OEtnxh}*zQ3g9%k*@-5>!in!#7Db&6-22K;}T8C_JaTfS8$zrI@L zL|JRh_|2tMHkHaI#x}c>iJC-sF6|LD{GcZm3V7nN@{{N&3AZN(PKnX4H=qL!!ah@d zD^xzh=LeOB&0}HQF;68sW+N)mQbLx2q}M{g(*V`@YZ1~<4L#ARxd7ICLAo zo{Az8`ni|X2U2N4LRD7SjGWhlVIaUatJ`${Qa#_QAMDUh7cqV);%I`9PDf;5V~KIm zruFUnhi_`Md;LOhQ&tqT2EA+pl}JGHXstl_H8m`ei>N$fPkItfzF@S)(tSyd$!oRy ztnT7O%aS{nv4Bnx4XZ2=N0DdPgcX!n5yx}g^AQ0FO>r1Iw75<&jF|`WT$RERCqMd&uyZ==h`H!ZyKj-PGVg=DPXJ=NuEF0U^1 zG!@vnq0zf0Oqw)-F=o!DM%`lIrhU>m~Ch@piQt@;M|AY8~;-2 z_IN3dSrLhy>M}iuDdAikBfvlhwm{gyp+rR8q$z)WLb?6KGJSOHq2zr_uHDwmRLKdm z*8)18c$KFpJ~F@Yt;WKs@AT?iOUTY8#PX}Q!O>d1&ecQ2p2Uw9-*|CbHrI`E(mrYC z?#0TFl(!C;WA++orBTix)LFg7Se3&=eyh(I1h3f_wqe$@=xkuSR-!J03yyy_tApQN za=J|9w>o4trP>{t)5qv?R4;f@XfCYRJ6b%fzY$Fq{exJ15 zzjDsNoy2fVrw{jlLX5m_m+kiHV!-4xVo53L<#(0$nuhOJ-k&lJpileo4X>Pc&Myzo zoqh1t&6|FCXfAVlXzsv0#D2RR%D$!i^r4HpZ`~owO2!d@>`ObQa}G#Z2YFGx!R*NX z`PSQSG>fToUOqf;&JC|_KIi2_v>lZnbqDTkD*S*BeD@jLV>_4=XH)hz`1NQi6;I6rb2DNqe8XT#`<3EIwuR%{7i|A^b#wyuO~rpT{K$lSh`QRf7{|M?0?iJpDI{AHRRSpt0$QD_+tCq` z6qDm3EeYLOb-9mged=IAT}CI>$>?FwZ<8uk9EvOiA+_!hav#^{g5&kJsW4Rk)V=KF zZnMDh==#9u2R7Q~`mzZnl-mULW6)X~fzzF0^ z&I{eO)gsVHHLJ4O22W;AM|#7B7dMU|P|RW+o`b$RAIPmbRjx*WA%v3cf|;*|jM4qn zU@{DAXyH7d_K>g8xB=$M0|T3kyMTT|h>N88JHQQpaE>LQk8kLobb6k;W_0Q+SF;VL zl-n*RMP~(0lmjkgum8Uwef6f!k_8>>H7`C?&h3ztqeC z-dO&5E4NI1f@d z4wDA_w3wR#y222#yTE8m9}0?|(i{Y85*o+zHPj?7x(ns~iZuA8S}L#z#kNSkHfSZf zyz=JF%59G*eafGd4`b$ceoY=Cd&w-~wnuax0d|qjfczI$m_0=~9_pM{T3&g+*)`9p zYbVqHw()oWRh6A*Z`NC_Qs1ll;BTNA5wQ8T;Dlv1qmw z57(sm_vhby-?8Hl%u#kIf4^|MWC1zm6mkdY{e+~Z)Q*Ca*{S6ilL29OMi7kUEy@GR z``+q|KW)hf2yM7@ETHkx(LWPA>1_OUg~zt>`<-TwQO`+4+uBig<860#&B$4W2w!#K ziNBVYmST}?Lo5@6a8_ma#TXA$uw;YpEd+c>5+kDxj7Z45M$s}#Xr3a4JP}=>HMdcA z3ZB>yb#F%}P${pOe~D-P-W35MDs8 z;RU#36e@#mH9n@0@(W>2hZVKLT|lCO-Ju@c3C;u6n}Ee)J}TmkLPBsb6%kH&OJLcf ze_`xV$29D9uph#3r*k~g0H_Ot3KRfs#8K<|3zV~zKfU~qvvz)O@3#1~sn>ssZ~ob< z*6&@lEHPG|FeoKbI`9JXFbi20`i4Fd(TA@~7HYHp062Vy_VbUeBp)V5^={> z|GoW>d*1$GVbKNOdGPJ>o#6{FIzK8?reF|7@B+$a==E}39|^UDlXksSnMEEMVx&&p z_OLcH@vN>Lje3{aDj{QwWD@@N4x`?>h?Vx*Or>UaJihdOWvRGOI2)Lq9drhy${uDs zNGqpR5H%o=LktEJBdv4}l34^#cuFD((TjvB=J~{jTFD-txb}j6v>+9i+=aYsg6yq6jr?wD*2^`AGfar3Gg!Z)i3TiXXI~REgyO3#rq4jKdH;VSU+>v+En{=F1cmbmFLdTTXdB% zahgdNMooi?j9hVBg;e&aB_nk8>A)F8A|ypnBH}-TsyaX-?Wpr ztXXvPYY5i;V-$pQYrgyVQ2E}GgRieU`;|lU$G#keW0B$*e*!=2XPSGka>iknQoTx4 zr@_prDmN7PLsbzRK;Klw2V+3>gJEc3ro~JJ=NkQ9aSR=9IFagzd7WqmzO8FGR@RR?{iqQjRtMW zm$6pfR&7YGSpuel2F>0x!Qn2A!dV=6BdLmMN_@`Hd29`h~4l=R55Eb~}9Q8_|ERMgJL({hNUz1-+!o2~24w9Tu{Y=`26RT*8FQzvpf( zKV80+F2Txrx_k-gBq8PD@>wW|aASF`@(6PS1mII_c{k}m--LdqDS+qd5Nh6Z152hs z=19ziN)+I$aok6w!@GH{oF(=uXWZx^``;9dl~u~q-aUJ=%KOy|zD+`4sM?_XijbDLjk4wg@ycOKKl7|fMbnQE=_K|GbQ zTlu#fEmg|FsuufKO_Tm~E`$0%^w}uuFjp^zm6ZZFwg!2rwA)h{4~522!wFie4JwV( zLo;gB`~w=RfG^nyIwF9iRJRFy+VEXd|2-Wms#BNBOoCJlX7Apgd-UkNS^ep;dwzZQ zFDsM!M27n^R->(`yxZ>P^g?3da>uE@%=ww@J=IPr6w^iYsqZ1$pe_FLwki5FCku=3 zxYU(B{a;tUV$r>R8_!?&lJciS<|SoXc?%TQD0e!OP+lf+x7M!bvrDfHDqqg+k|y+w z^*Hr0py&k4REs2~k6ch^K#nE7@2?eQG4gFzLPPP~sWt=`0MgB-qYWC#1IvnL-z_cc-Xr>_QNFapPCfWP=~MGW-CSEq9Lo zlyt29Y{SeI$UW~L$@^RC1BS4(wyC-!)W*#?dS6eefopFF%;}r#bXHb{rwo^73c_-3 zN#p49^8F26Vyw9Z7UYS`*`QW^mKI=A<%DoGfeucj9c|7B11;fbW}9JRKG^J?^Wz8LK1j7m_4aX61N(rbXct)k-_#PvI<+L9pQ>xzqkrjwtJSv0+ zsF>x)O-$@YJb*eVKyQe)V8N@99NG%REO+tFi{X&1E?FeAVDVd%LSpDryK7;e4_l4A zeKAliKYdgx%4=3}_NNZPKcu`M5(zgVX4K0zb z?wUT6sI&-E|)RpvTt8eY7Qf-B=VPd zv}8-^gMFKNYq~0mQ!ntu>JdffKO|E)^F2)<##6MQO=Sfp4FS7@=G)9h3J@xfDj`WSZd?kC}8oLmpzGM zV~S44-UL5~K^fF4D<@t4;}41DnmvSh=kcBWllT1iL*=vmmn+IUkMHUiwvSqwm0Fez z0>f!k{ZIeG&16xznMlNk#4K_Xvl8@YH-V!`BKl80C9)#%?~MM6OMhh-K2hkN8)-cC z3@?lp5mjm*Z@sW`)-~76La2U!dAPJ~%1u#a0&};rh3uvO z<>9;UX71ict0d9+A%pqh`#=iVVXtTs_(+!4R>mJoY%w;%#^_>B&fVkw~^!c3@vIStQ5cV z?Hp%<>~Z0H45@ru6dskZB#^5Cq!drN@R7trfWET8Si=;^iX&q$F&eT_d5Pq|(!p}j zj9o_ZFmi^<@AJ;$vz#OU82Q{D%;fy};j zqI?;Dt7lQowL*ET{0Ub3i`&iSib%8Q3jlkIK&+foEej zcsOs?Jf`^-*x_BIbVhmvAPO;(sg_lrY*C|;YUwfH{#7Y*MnXWPg5!Xy)MR-93}0eyF+AYQ4)RZ9;sK{Hb=CRE+5qeV68St&T&Qdudb$|k;WX3~M%OVtO* zl|uSaaTHEOtP0}!+c^r72B|0XDqvF43sZ$1y$mX?##_Yool*TH;DlAdhR>vlfhZnZ zdqxye!=HgBNOeb~V1qJ@{TM+W1YiWSby$2i7n5eaLOXVx_TDJ>dDNP47yMX3hXI^nd^ z@Kx`wxuMO{+`?Irwqde-^=jm&Z#QJg8sD@b#>$xxnb+w=Ys?$4x>M`3^X)OztUAW)pXfl6QlyJ`%jXha5;^2?5u2{!q|-1pUGrQbLYPd)#-ojj~A_YHg_j z4ZX-R%GS!(C0BF8ZJl9MBOs1NcKxiHhTm7D8sU)(&D_sxZ_Q)EwN&Lurwuf$1bQY4 zdxz5l)fEy;@QC!0>fX{eZh?Jb8hu|x;*RoeSMP?CTmsqju;`J-4`w1mI?pX!=;-y-Tgj5Qbgbp&zGasjE(~ZiKH`#iAB@S?QF1VDR~4p zamy2%A5lKw*^Ry>ZLFKON=Cuu*P-woK2S89hR!_+M69Z>jr&&WFn>RZ5onL5sGHFq zQ{y!>%^4#x%cs6Axi}jzvlzTIeuQ-EZ+z$u>T6e_$kdZg-C+N>T@gvciU^$t z%XX0+=?mVxyyCVQC#D~(&_~uE9++`;`!%s^;<})2Kl4eVdh{l1r1A-7 zqgseP4+{%NhAs=C zLvnKbP>Rh97FPTYEA>ju_W7(dUt&iv&$D8m$ex4s5s97uIKF?F$I3qF>)k+=^=ZDN z`L5>sn%gyZfg=KuG3srOMI4Yy^pB>`(Lb74KQ4A@Prx6H8OT17en0=qZvw7rr0YWU z12ZyyRpbo%%9&Qtzkt7?J;X*KHTcLgy+r+p`V!qkO>|1Vp9j(nhLfc*p5bM|GF_K6 za;#?TkET8o9$5PJ=|4!vzmu@{JA^Pd_lDFJzH18DUU^emX5+!4G=1zff->0O{zsMH z(q%R~`T}r}N8%%U<$8NtB|;5(ldeKWDJfGc1;06_JJP&^yD7XosBZ(6zQnbJc>n@f zJ#ULw8yVmkyepBIA+e7u&yco%{`1k(dpRdp|4U@j-~=u#hv_?A`&e$b@nPO&5kQ*| zefD3<4({_B>BYjwISBX%c!-?MNga|}}-n^qFEK7AT_=Ok75%jk|kddJV(erYzz| z5O;H`ya#kJAc8|5o(gD#^~8cERyBq2Z8*8@fhmS(ol_ju*RIdGbCR*L#UPSAOFD3 z(vqtGkAFy<@ywuce*yt&no29$3!C73X`)$m&;!9pi~s?3Ex_vnowC088)o&*|MREk z#{coda*lxC{?!AHK!9zYJ!0V!ywKNU>9cV7@9F1xql4qj3+8gQ?W8p)%fG8p2Vsi`ZmxrS$!So=?mDuTxt&l?BXrI1co~>or-B^*3ZwGtO~q z@ID{#9r6aU{vP^4{0~JnXa}pyGBahD2 zbSB1gz%R9-v*@FAInf4-xQ^#*lXcF-rc$ThknnfsTkJz;#j_L2`vgI63~dRCK~eU4JyxwCN4J|Vkq<<5jg=fL z7iv6=&4DnNobp82M;T*#Dq0C@I|1QbvfNsg4l?y&N2k0+u8e4x9wfzTppr zR_tBtg#st&T;|o};(So)-VDvku1!C1e3qlV)Sk8yX2lIZe0{0T8=G;mVfW(iq?sYm zN!whvuW$Z+pnNX~n*t`a{{|%riXEm= zal?TFUnLJ7WPWqtKsm|XcVKkgfdl+w2j~y%Y1BRwY3(x(Qo^XQ!jgqHY-Pb}4)tDy zSqX8*6SwjQZvF@;QyPT3*nU(9`xV!vygYhp5VPvVZk@`w zxb^&3ZOY5SQ^>O*u-QcoK7;1wP>zNXc#*5qmRKO9)vRx9 zK^Z~h)jH~cOoek%MPFdXil`f6|FVUT(V837B}>_NvLu3aN6rq-;+rk(oymXUd1a-1gy zkI*${@tM_fj&lV_*u}VmOqe-9S0YZv6=DD^FV7&~3v7SyQ6;}b`RkD@l}FaCdqlbN zSu$~$`B8aj*&QFA{_u{aOVu~!AI#3hzSTD{SFbQGzh3;em2;TdC=d8-T}&IUV(KCs ziR8vtX#e}CAH<6&X`f~lo+q_@V{Hw=``>gyQ(%UN1CnR?=T~m?rqjZI#p|0k{^&hUibp`qP0K7tA z(Eanj5#YLr_Pr-|kAD1s;Oc1Z^$e}J^{hW!e|$@&GuFFsGS@TlqKDoXyX>=Hu6TIQ zsz!@{u(fTfIp$fk>;8rJ65V0u+I3$|?A52c2Nx_^v26Z~aAN5|7yDBA3*|l(ij*

Sy9Ne!fooR=*RK4{T3k+?bIy?ocaeVOMEP$ov3IYlf9Togu25F(9((hl9TV3{ z6~kMvzU9z?rsjKJT+y{{SzaDM11s?i5h($V;UxNH0=+&D=OVR(bOgRAJQxb(25ljN zsZ_H1h!t;j!sYqCfwO1N8tUGz3@e{A%W5X}tQ^{+&GS>IUO1(vx31>w6)h9G7Jtw2 z;qsN;9i)oMj5YDev5U8D-}Tx>JDB#aL;DpA*w6p6bRl&qW9}pv8(-rZM2uk6V8Yyq zso4>M(o2(13PcSK6e0|H{9yC$^TNsxzIy%xVcI97_i{s@ ze0AUZLen3{+kFM?=Fl#!)C^?3jRJnCYUhg37u*uY9Wu>mHr)7)Lr7s}DURQ}7{ddg zQ;Uf6Y&a3xzYV7(SCkd^@0y-JUzrgtEKhUb_>_NU(O4#ukh&v-_* zR>l49fPu`*uzaFtp|W}Mus0m`fRLzsc@;Q+??0;lNuWqcW zsb;0KXPQhwyLobIbD!~=Z<57?!-63_QMJYO09zaXA+9atyEg4{MHUj%yy*Jg503xP3p+{3p&t@DKqKfX3?JFoGsXmwCKU6IqC< zFY10k)6N|EzwM>lsG0n2WB+z8*ag1%kpK6|af)6WZv|yn&RotvPe}lRuU;1}6LG13 zYjpg)K#J3m6yc4i1?vTe5A|Ki9^nEFPQMS_8=hW?Sb%S~gcYrRB9aOjc zhQ6vt^Rv_qZ`0TEWAv5mp|4}Pe=eUn^$WV?I(+6k>aMuGe3UMz%?Rpej9<;@26g{O z^p&|VU?=L5;#kT~5K zpy&M0-M{;Gqq^q{JC31Pk~2rXm-gps>F+bN1yEpUE*a*#W8(m}=~Z32#21_xvrI&mSP8u%6? zgX)_}pmgEx#i42)lOn7nTn3JU1)Cu`np4e!!-`s{xQsTYmYxqZwu!3Aa1#e%g$lJr zN|cU7+BRZys7_^gg6ZYc>ryi`A?^5r3c8~JfTSuCouIzPDGXo4UElz?ev7F7on>pN zi#icxkv?pqWVpC(P(mRq1Rny=SrM(`46uIyQZrsASS8ACV+&9NjpOk#2G1c#DJe>n zb9dYo>;yn0Wdv6=wPWg>u)eXIe^HPbh7mlWhRBuMbbdG+d0VNvapsanKZqj55eaM< z-bh2ZD(A=t^neUkRy2BfQ$-XR0X#oiO=M#YvHi5_)kbg6U{6u&ftHd8T78kI@2dUl zo;$i{VKAOW76A90-YgHB<8fOEBDE$prP%DTatv>6Y@8ZTbXLYq0>?U|eaZvNml0Mc zNWo{7m&D*b%nM5yu2}7OiL!tU^MBGd?GuW(k0$*$}afo4V~TJW-(t&bXx?+#7P?) zwBhB;_O?V<@4db>&uie0b2h%Z#+8xft3>I_`PCA8;WOLXwJB2=oIu{RL&ts|vDF8w z6MyoCSmbiBtRrVEm(!cqF9`;!Hgcv+Pd?um4ui!gHAn0{@0#|nH#6W-RMm1KJ3TjW#r$66+vi+vL+1Py z>-}4Q`o@*PK+o1?vx1#x-F(dhvlG?Ux0wnlG<(|eM83h(6_=4FP^hj!b@pOuO00ce zavz!Sx}sS4PPpWa&RoRamyS%RM3RRg;M5XFr%;?-A6jD5vrJ_nr@NDh zBw9j%jk2h9QIU=y6GRV!eSOI7XeWLktOygE3V?c_4zN}y__0~8#^===7}4d9T5ML{ z=rKn8ZUMcK7yJ{!jmu~yt#?*17)!&U&g!-EfJH`DdIYKlg`rG)@Y@+{MRwq zVt2vg8U${n2=pQ{8hL;{pwvMy6||(5>PFP*Mr&*0oyY7uKCc2W@vqA&dW7Xk9lw9h zXn2?fDKdL_Y_-vyDulhv;_|KDaA9l`^H^m|bEe!^+0s(UJeFy0sZ^K$KFs}o9&>sV ze-|Oji|@V*+ImG)B&nG4SL?`BGN{Y?Q^n_6W;Qp^Y*D5+&1`9z*`%y|_g&@Z&`Md% z6^q5Igw@bpPHKLNd!R{u8tU>>{e|&p65>krAF}yk0%-xNbf;4S#2_Rpq!=VKH6}1` zplruD*Z~s(AEPmS{5!zNT`aUfw``*k0ukrI*+^Z$I5s7qLHdW_0(FYfLz7G)Mq>?> z31)l~H?#*N$%~pPT$Fx9gz-s2rZhqBk#B^1)-JuJ}KBwV7 zmFV{n1R~52Rh+lfAGEn>Oh~SC)lW8r&RtO9%wZ3Z(3J=420@F+g#1ZB;fW_gR z=RMPGB2THp)BDda2zHA$6kx8If40@QcgE0Oo3*oZDj&AE?33Ldu00|uXBlP$hRDcB z|A4PFPj3E86Ua4qQE>O6Q=?VJ`BXulw#8yrXDK!FiMbH5QD4P ziFy#@J)(fhCGdFVDF^aU;-H>cx&J9^T-1pJL89+`N#(y{w$a$^5< ze~@e=mvsk&LclXJWnVlNr+jxB8}JT~tJtR)a%=L)t9lc6c}xP;;%DzyzI zCpnXcYyF0-^ps*Yk2P3yDn_E?2OmuFsU=21Kwy`!wJk@TOjO6ACP7F?R+F~R$>D>f z@YN;6;M2E9N@0rx)<_5>Xb?3s%?v80Fmh8njTdv850qu154J)I9{sabu9}#Nd_e97 z9uXq6-`xASET%9%z`HO*P$S@sAg7Yq1R0Ki6C%s%09KJ47|HO$ef!vP2==L&L3n~t z)SWhzIl`xW)3ge*XvGA?H4|@@ARB|(?y781JG3xd3z}*veBDR|DFPdC%I`jbTqY=@ zd}8K2fMFS{)jniRd+!)yIHPRl^)y2_;DHCCsXc}edD$S%Oe~nrv;IU%a9(*hn?$yp zOFP3gm1DYBRsQ7w=(I-k#yqn>Cjnysf!b+>jJv~%dyx{U%R`vg3f(@}> zPST?~gLmnV+I+H~beQbqM${zfQT7;Ivv(Z5{SuSOV@w94m-?G?Bv*&}58!LJdj)pZ zB?D`2+W}ZHD*O6-&rd)sNKh`qLNshT(dFtQ;%BLO75D|aF{(@n)9JHFM*Ztt-(aSIp zt6#ljOJx3xU3O>|r`rbEa72$6lk|ZhZenhVe61Ga1Q`_f6g;1F&71 z!MP)hH_faB4Hof^pysH=;M}?|nUjp0DKe88$%}pXBgUtgh_wu1=#oWhY8Ai+YPd9wFL-o4^u;D_KVuh+Y;k%|E_0Ol7rgRoLf-l#>YXydj#32@3FY2g z5%jneb3M+R7{Umjs?oUNY6u4fvr!0VdEk;L@}|@#!67T zj6#d+%)QdQ3L>WHjna3@Un2fGl^WZVT9+Ezg`8z(#UE{^nA7caXZdV)*9dqm|HH7b zy%V&yk-6y)wAJDH>5m`B(abZc_4K?Hdl6k*@u$iqQK!EAvd*2|naz&u%$ki%)qjKn z?F(zLA#5{!5O8%?qn6btkEc?&e&*{jK-lWYtdsL;hjQ_U$=zo9RxA4+|o5L-ob7L}7p zwY=z4#zKA^22?`|)UtvX4Yht#Nflcx&l4!_Rj74yU0PSotQX}wXY!Dy>9yZl@w&k?=O#CW9;VW2A5;6{T(z#z#5 zaAlB;b;_W>8b~?TGf}8t7HR;@5ETPa-q#p(c`SBWEV>hn6~)*soHHOhj80^<2_jG- z$R+idfao&iJG=Vo++tR@iUp5??A1Aq7V)vsHAY-fTfJzv>3AC$Kh}FzU1YA3yWI0V zT>(a0oUL6@s6>{nF2we@eCPUTQNl=yHHeHg%B>ppaRCqva6T@?MMc&Z>@)ucgbYGTyq%pGSLT4cRl)CxA1b5-Sq?!F2!jH*Qerrv}c3CZCXJ*_;n8H1L|a1V1f ziMMlk8`~`;j4bjWzm<7r74;lOZ6o-kk$4OIOnn;%*+jF%z;+*Vki0FDC}ag>+nAuB z2Eh^3#-K)wkwd5DH~K0)Aj}}-Qy^EZ?sQqda^=`7l(mgLe24PMGhb_NoJjO+nh+FV zF3wsryOe=vm+)3srhamD%YvE!Aa}-0Wm8=-9pu@N*&7Ob&8*h%jd<*LQE)i>IiTg| zv-h-&T?gFj&AcU7T}=8?ZIdRo*=?wO-CF9Yjc7qz%w56=;EWMGnE^_Q&S|bk9BDn` zNH)aATM$lGg{qA0xXduAKF;ku!X=&BPjkqd*aq^?$kYW8|)`BojWq z@-O9!K1UJl+2jvoSOGR5J9S+PiiuP#-oAZtCZxPO_427qA6`fT{4D0h+qNyXNlv%& z_SDPC=-{4d2d-~fH#JL7y8ghlJo$XMbP);INi+{|>J>yHtN#zOBgFR0ulS!ZQm~xWJ z;jeoo2ftL+gH_v(1{>gOhjs{&2=k(7gMl%QnW2&hzm8=mJ@nv{Km7jgr9K~H;1@BG_}KofRVdXt zwEB`uC(LP-JNjSlVSm;<_HH9Z8z)YiOQ=YM+%V}3REU6*<&%NkL zFyJwxLdB;EvDnF;2Q-WJ_b70?=5a+i9E&mOU}5gEDSbKrYC)DvHqKbryu5Uw^7+={ zvbLT3r}U!{6wDQ*~midcyue>vw03w2M8 zlExogNx=xaPhWvVAW;^?lBnk~c^Y^_yI>XprAL{BW*!;yW*N)XsM=}3Ce{FcZ>?TN zS7HP`DhR^t!VlGj76K2j3UOo&g-FwJo+6NV2%5FQ!HQ`X)9QHgDRK+PXIs^cN-U8m zVijN(MQDxkr>Xu4xM#o3_Te<_TV_|zUjEJvPZ~GBad_N?=t&lX|)Dv2O(1~fBFNWyK)~9-u=-|R09(< z9Pq4Tz_a?`f4Nw5IjV+ye_U2F<6S(CT(I%c1IP>eZxx{tc!N3_!|(x=m4+qHs74~{ z?!i}$KQP%)Ejfx^K{&5fZODn;b`elKME;6405%DiKvh3xpA$~*YY>)DcoC@eAqm>ivW@+*@*Y!(gyTE~$u`Xva_ag#$ z#HROt*lubv7H^InuSMp~e*=ti#l}Z3=rg9W!sStAlX**6Ul&Z7B#|Yad_Y;*f7w%i zP!qYN-#xi=A`-jyAd&0zzAKf#|NhkO0r6$Pb6!8abC2>CE_dSg2VVR8C3^|;>qjo` zEq|@GqIM8jecQ@Z;GBhgbD=b3jnqgFol>qCVjrYTCyd_Cp@uiG7iP@#dctM%1^AEM zN~Vd}rZC4Jhs#44jjbeK?k^kWPO>KIkDmJVuU?<8tX3L6sUh`@1>>#*)cgrGA_lyX8s ze@~{gRFTDY1fZFyI{4UHY_CO*IAw4gcO2owY$uSuwFXfei>IQxqMB#u}#6zYLgl~VajqXNt zmL7yI$N(ZWVz&b)j#@%SYINCj1YCG66;q^GN0*m z5Q(^=@*~PLWsrHZ{D?{yu93-4fc@%+-c<=7=LYaWT&=lPbHC;(&5NkR4IPX+vmGgD z448c#$@+Gt2v;{ivni(ud9SbuAWwisK&BV%W)QZ`48GBJ6oCLN0q3av01zn-l{}yT zKsY6jqF80Pno5u;C14ZaDkhl4sS^oXDdr4G6!c_(&m6QX*Og+9GuAu=SQKqI?4^R^ z%sJz3vS{ktb;@{209~Mn;8LD>XzA5jeA|P-Y~vXid(U0Nuk2$7txyN}jK6%Ggf>ke zk23lR4I~8rPup^Mm6(1%MFxqWi!L1! z#buXF6@Y%bWydA&h=v*3eD2-QG9Gp&_~m~-(A`Rd)4e$vW^GDMcsiSS|Vv(%+$>IY16pLWUzvh|VJu5ihRsAOVy!hi06U z)XtrGhb=>k)Zv9T5Ti}03wWU$DN>BKTjwPH!oZ~Z`hfv1xBI)J`)}Djht&$4%+EP* z*Ut0iqTnnNR>~Kq1A(-UiKhMjw14bNZtc{D`IA-;+%r&L7?|HMjX%_1PwM;oR}ZkS z4AhrDt)DbdV6626@jZU=!vm;bXizARzuCn6kc>4Q5xO^x{RT#%p!q)9T=Xw((u`PS zH;DiI<;4W59fF-3_8}6M_%0%UNdE;&$DR$j*_=DZ`!=5WUfu;qi*Hv zh8FFVyGo@l-SlHjvVGIg#L9?{SX{AWZLZ|4ZtkxHs=^cUdV;7)9IBeuR5SSF_uhSP z-g#Fr#2*brQ$85+-ipa}yqv0-(7&8{uIKn{c1~ye@#(@$s*iG-o0Tc(>s!I|b&lqM z<`rZUAzn`D+x9oA$yxFk4qhn5D^8AKPwhT@oth2Up zQe2c=A=z%UOHS5JtdYS)gJd9N$?WqsUl}(sWP!NEb0ZHztTZna^uEm4-M+bW_Hvrd z0hYKVhh$?zZeuW$Z0Py3*PaaVn3t^#E!Yi904^NV4L3=wHt2O{8TheDk8E@BGh7~N zma$<)osicPHsK1(&DIh_lFOuQ*cj5K1h2Mr{>S$R39+~%=5BY)6EZX|onR0Ob~6z= zy5eT9*XZZvXm-Y|LQvH9H0$lnRpz*_#@Z-%k-FTunVvNd-#%}7&QexAy6g4BfZPD&f2pc(|M1T~QyGUCh?;4RnD1MZn&?_O(6d-88g$aYen=*LH8? z>aIW_x&B1soYr@Km@2l<%*-5`7nB&SZArK9zS4@(59MV-w`5mIO_qPw^+b481PmxV; zr0e{hLxvuGw$@@6B>h>dGkw#q9c_eaLfDA8(vFOIXdb52T)QyU>c(@|TT$(ub^1f= zOnSZK$*$3RbgW*dONuGV#sSuDlQ-}6x+nK;hRQ4Vy4o&Joj3$Jfge5QV@7oM4~J%I zEsoe?_XS_QSJf1sDXeGitby*XZ?+N9KyIOkAEU?J8TFv--`Go;Cbz%IWay}2S&d!n zC?+Rfd-fwUvLfHOytaB@V*T@=Duq%7dqaIANggppu&*tXYdf3P%{>3erAJ>_`(JmJ zI-FWZVqL4ch84RVWz z=VDGYimZ6v8-N9&HR|jJS!eJC6SlkX)^=yA*EmhdzBh6! zwpHKRSa*r?Ml*E6U{~vfl>>vRV(t8nwGP&2jP7V9=4)BZ6)3>Q&#klSWx+nQdQ0^d zy~E&`;@zQ~NEls%o<@tX(PjdkLJTY zDU(a!ML80YB+0#=U!bLV{u~oT8lV>Nh4Lrhf8a!#&q?Ef9_S$r$fueE3uY$}-A6SK zYo67-u6YlZ^C+@he58)#A@AZf3=%Y`xk1HAK1@eBjoE`-1A`hC3pH2hPA7+Gznbz2 zd@=#3x>TemfSwZ`XF59R3<}s5onB+Ad{UdDs{mKoV>!?RQ_)GMdZ1%ev0_)ZQM!vW z=x=-))r7|nfy_X&XcfQMMh#@h8Y4+iZK7195S#zQ)^`BLQC;osoxZa>v%UAe(yFXh zTO?UsvTVzeE%)AgFBoG}Y-3C{m}VOY5DXy+2@a4zfBNoe5FjCt06%FzBtRNi zJAU6C8IqUxyz=hs?43JzW^Os#WeL9NR^hgqz)JYd%yPalL1kk*->^`#QvYoBhi=Z zTLY8Xi38f`Z7TN0U z&}R9b^P!@G*)f=@J2H|#DseVTJ;&8X@^MxMj!*j_VKGX9T)4){`UD4bBxJe|)mf}; zP*!ZeO$@W_H4=&0V~%i!RXP4q7rfCjsP92v8+13=T%_X7G2ApCu}i#oWvIf6$D%f) z%77-JRm{Bwrz_`dv^QFs0(R~1&SfqsJ}bCVIT) z?f$5^*Ede!4%K=x9zq%cM|?ARX#tRx41>E9@;P%>yBZqD@I@rQWjg`hd#<>P6Y6-T zd76}T2q`Y`lw1d*64)=S<(kls;^#TUJ48F4&(+HqHq9|PR}r!*#{$Q$_?;fiUQxS| zyH&AS&GI=`#a5qG8yp#B4dyh4cgj9;yuPK6I_Pu2J~6VUc+FM^k)g3!k2$surTzNlTq{OdRDAN=|1H4Xmi)sYCZ z&DY3mZSpZ&B9V`@)u&%1FKERV4X1ypy>)oBO1@?|{qovZUVa&y&%b>7b&|QBwjUTH zZ4+#AOOUZ~li_UGOD={5mc}=|ZurFTIaZ7;WUVP=7s^Iqn1c`FOBY6_lP3M3!N_pM zz=HuZ#+VBO{swq3Sn9!mq((J}uRIveFjuHh4@Lulbkqs+&sY8n8k0di760++7Gcw+ z8V42VsM@UKM1fU2&6pNx)qJBTRFOqJyAp zcfhNtqn2z)ssgM~Gb;TO+6d^;m`08VhB&CP0~&F4(AZIjUY=TSXsvpUx-Q>H@lF&6 zb*9F$1B8>H`=#@l%blWlBsv*3usAhs3O#u2)MHR39ph1^j+p908+W~Ssn^Too2Soi zO-~e!yp1)+vc0L9bLUP^_0~j0WJWa#1F6>8BgK^HsBLR=G02FMbTXhxGuar?ZU>pK z6=87wX}9;%*LH1qD9ReKni-ME0!t0nAnLdkBuR|GJ%Nra6o^rP{v(T~ijh}UzC+}# z=IVEAXBXLgF;rXUai zu-+=L;#^hYj!9A{d_BBtT&TNWSS~qy)-e3aWc6j^$H!aE3T6zkSCW=W8B5ZijGDbb zIgZ98u3mA3(>{Aq;L5^sVNj9=yd=Ovvj>{MCNd70UD8PwVulU2MjK4oxJPbQ@;Y5+X|L7I z)t?~pk%QVpqel@rh=2et%|lY-BqI_WfveVJs>k{+33k!L!R~3q8z)Pm48R_&oJKGq zGu0zT?UX<`)h)+cSN4;jSq6#oG>ADCb8KR{JRwS@gtgL42?3Kh8%M4CH6LOiM)Ia-sLqdG84 zm9S>Jn~jV|fhFF^#)T#$ODC)prZ3Q0z?e&cgGO{+3|jCD(>KumW!P6;9=Lj|C$&Ga zTLf~De9b6o|E!*1+Nw_zuKJAjDhX)Mn}k2uwGWf`|Bl3@*rnA!URu3_p)gz)wkH9) z+}!FfZh-%99x*ecSumRYoc-WqLDYQgQ=_$~J|vtAOg*1h|Lk;QT4Vy=(G}#wUNWLB z)|48@6z%yb>=&m_QQI=a#%9tp51bfdxXDkTYyKKsY9rvSxB@od!{Eoc8_3CLh>5tM zPUV3@qOsMKM-0Q9!VIbXUmu;gA@D*pBS{jSx62Td+|8I-FqsSSQihg6$%HG8gD|x9 zLv>dH^$hT|!m+*3Ime2gDM-)M^xtRV9n?k9gwSkAE-8;l4?(s)cee}E$oGTr1{rl0xh z54lg%40Gm>oSM9kIZ1%iUO_kLN&J@N!%r)ZnUVNH^A(>%gr5f2A)O@(H0( zZ7s4EkseX4K4%fPaojf1^1dQ&XIW5JFal|SGf(>;ZaXI3mmpP=eo;B3iXjL!AyGY~ z3b+*ba|$>DGs-qmttjGnmL{OP4q`^#O*erSk!{!*q<6)Q_%eYC;U&vXL`3)w|8y{L5b!3!C(|o*Y|77#9?7Q5EWL$ zSxtsaa>(#?jNK;;&tbemsK5*aZ3S79sb&GMMGm$`TY@@gz$mIGVZ*?omKhKFCY{Ns zrW4ck66ElOXhI`JN@bk|8a6>{DZy+8?M4t;eLG!&OalU2q?4zjhuh_VWD$dEMP(D+ z-cQZ_9yii_>o&_VS5b4KP~mkfBTj;$<)*pNbiKvn{I^t5;i#n_t^jhuZ*~S|_AesK zn0L2nA1-t#QMOB6**imGj%x4byNjs+>rb~$Zq|PP_kra^Ufjj~y~Tc=n;rdLDjY0j zvMnI*3S}(?vQ~A6BR%S0WtYEb`h)BW_Bn%YvbZ42lM(PLcum$1Hy^T}df#@%rgikr6`Bw>O!6XWj zo!Qv&+^*fvcHAf-CEG3e{MSu_S-J6ZH3k2lqSzU`Pmz6T)ofOr#NpEtY(5JY5b|=J z`a{<|BR429*VBfFb>H(C&XxtU@p2la1P=n>91v0gBcP(13Kti;ijHVRz%LZcPE5TDhl0tKQ(=Z&nLHYv%5+OC}(aU_J^ zu2f%b6l1z^V2CCeMMPVC;=b7j?uHGAwFOO}-{L7!Eg1?*cEAajT;EX}vWLNNFmf!3~-!QAmH?;+v zLA(EyO=~A7xW9}Z1GD0*JfHjG*Hp*g4F7|=1E^a8qiPlzlMV2R35lq|RpB z*2iT5dXXNAB0}}Y*em%c5RiSCO!@dEG@hrfBK$o=1C??6uDoJj{RDP-tUi1GX6^Yc zyAt4Joud6fSpE4Y4a835?-))Wv}>Q)Z@B!DLq;|_`p@ToGh<|H<@(a9fk{7qlR3(8 z+FcZfXm|p0f=TD-pxRq%tY3haE(UHP`lzFli$ zT0VFW8)P=#wr}T5)yCbscae444di##Z|@?%+w}>)MD!i{PMp_wdei`ZANEZk1J^?9 zx(&9Sj}XJqN(RYXvX1N}SCFHyYab&g$>&Uk8PCjQ)-$`9dzgE1_o$`>TL^u}90>c2 z6DA;+6VW&N3$vJRYk>xWzDm_0%x+^Z+|;lBJh1Ol;|L<=P~L^AAnCw*LMJV1NJ7vC z{ZC6kjKJxrc^4C38WS8fD${pZY*2D zE&h_W15+?z{j6Z(XChmlnGt2H%V@Ir;OqbsFOrKItq4X(Vn!2~@*&`X1DAqZ5VVJ| zc$mlqn<_*YMr4!BJt6=uknbp(#R9#vO79i^6hPR8J`wqb%sgy!_`)&UIZ1NVz(dTi zOSP;-~eWs$#guI^!Xh8-b#%cwF?P$SWu^DBj4Q+;5 zL;~m=>9i_otIV5?tSj5u*f*{(=4O400P+Vw_K^h>=?ODa95oP?jkOMBEftK;K-htt zg*Ho34UmUDAlMHJEbHh*?#x`?Vs4tDT48HqthQJrc8AN8Ga|a0a1O7{?I@0j7`eeAOH#dzxObXtlv9kmZ6+m>1oRlDX(ki^Fo?IPoKdlO&})cs z4M-z^A%q}LFfr@#RD{fDCQSmbF>sbj)bbp&s4paf4#H_%vV=MD7)ilZ;&f*5cpP?y zKMd47%UKm3;Ti%9jbS=0CUJd07<(9QB4;#WqN6}Do<_uBAk~@y)CM$6F=0e-fp~2J zl&p@5+sunm3>L{G!3GvEJA-vdXe!5KWbQSl9p+!5M+jzX5MB_;>~Rqn3mj9e$5OHM zJHQn+zK}!a(1MW47TmtN+U|)g;!EI0bOItND2l_Tz*H16`&58LS@;*jn1^W6BoAz8 z5(b2`V0A*E;0zNX>pTouhu1Y2Fn>XY!XHGu6fcrg23o_|2dlAb=!VL0ZKa zcH*2@;GEsa=0I^c6lCV%F?m-~nBp@jaK@)>I{XX(NGKz8UazEd>oeV=c8(0VezC5& zD2Rvsf%X`vUoMo4Aegui)~LtWHti%$Q7mYC!BLGzLHbDN=*iKiASd@TAR95-wLQpO zDj2n&vh8T|wU2Tpg?oqR-w|OZdz5U^;-ljqB=?e=OmU+62CBm!=`~>J~ z2#*5hM>ptFSpe`Cih!X(C&*q@K~ir$E(?ojg}x|?KHZ5EvcR&^vy=h-$?G|yKraMC zOGyyZ8I@+7tsv7MTW$vO9}cTbCl4zNmP+Ut@l3fQ(3mN_5h`OqTq{>0z!Q0Wu$O# zXqpmQlN0(Vtq=)gn5HyIkD(f<4O?edpu!22a}qr5AXE~7`~-1Im+h!Xfl~jLC~#wV zScLS0a0bW%P`Xt-0$NKN@C9T8ryS%Nn2sn)ii$3{LY>nz!KbkU@(9Al%T&!8YfG2` zRRjaP9dm`z?h&j$GqQTAvWaH12F-l1&|x-r6@rYynMK891@EWXXB9%$fKpC0I;^VO z?i6A*NCqzQ7Hig6%gA2j(G4XzkHf(-xp9@CCDEBN)--}q#>$Dc#c?^y)@7Tn=MHaL zx=pPcSIl9Vg&4s$)EYA#2}`gAq%5q%>ERMV%;BwkjWL6;D$!`-YGR_pjzrmx#$?&b zXqhxD@0iZB9+*kob-d`xhQxU0j(=+ZyTaJi-e18e6{g`aaY2(?vG9x{f{ZEZ@EH?) zE)tZ*2x5^fY#o$cEOA5%8zV@I=E?SeCSDX9YdLgenJHyC7LL2BpU5zqahWnp*Iur+ zLBt^AdTM;c-y?=42x5}Lo9Y=gBDk zT%mpRk2^APF`RLWTsn;B>=4?B9g)?QdoWkAy+P=?+3|uhBvgJI8 z1^H`!%hYVw+?tx%omq0du!@I^PoU;@G!~d*GYPF~s9zmI7eQ+=H(-gZr@#P2C_61y%R&3Z=bk+oNrsf6hjc#sceCyWu zOwQfdzMxr5JECE0ap#5=lU#wmwS##d!qMC|ISjjFvL>9%#T{|G;;HdLB!pn)6QUla zXo*XZpJd(>0Z}1{q6=)mRq5|;w_h~<%FW5L&q~Z@4k0Hd0<13_5)er^-fFTL1%Dj2 zPrnDkm6*aA2noaU;gg-nE-xY)g~MYvva%l{0WhNk2^l2LFT()@$c0rvhmkmVGO>c@ z05(IobV@``o&eUxNJs#Ojt#OPmRH%xnTQGG3Y=mh$fB9ta&X!KdwcizvI_y{NQQvn z7el@<0hbX+Tvx8c+b{`W6LtJ9jIo{PSiQWH^Z?CW)Pr(PtFXmfn* z71iye-QXfBFzcUU{XPKx{wEFZ5i1gh-b0=vZ}u&PmQ5`IQLqhlu#$DNwMOx*7%N#$;mYwd7D)YmyIE>1#*-N<6K2w9=yg1_ zV`8Vv3Fc5J`80sfQyAMr5wNtDj0d!gh+UwuEHt)-?!t3~2MRX~Hv%mzmT6gdjA;Fc zc%fl23790PApkcKR?Y@CM~ysg56u9ew}s-GGkS}Wa0%9-E~Wq}2quB%GIr?xc6x9| zc-iE^Y#NJ1frVowYt$3XM@u1>UBDEj@)joM4hJrOqUOfEX2}w@TO)Rh)eBTBBDc+9 zm)(+#d7>5wkr0gGcaBD)K=ipyjTMQ=$TDC>COv7^xLkc*Y45KOzdtkA+&Tr^)snq7 zJbb-O!`J}16diX#IsHiCuGZ0B{3hz zEQguS*qVkH#t2{@SOGx^4)Qy}7q!BU%*Y7%Hwg}4fmz;WM+#wN_5eT^he5T3R*rTm z7PF#88zbx_a5@l=*)6e%Gmsp}r|UJT76Be&D0&b|7+aw}2;mNr0Mt=OldcdY~wn%T0Yvv$QorsdH&|LZ{i*9GaJ(yycm?kw9Kx+}VNp#u@%5tEs(jupu6A zh)&}r1#akL4KsL)ohFuQ?pl%oY&LaR}W)}H!Ue@M2hyFJ%7g?eU71g^GGn|?{E|*gom1C zPYP=Kzf8*>9ygyl#UYh%al2Ed;WNG9*q zx4Z|x9_0fCMhCsrV{%wHVQSaC}2;uJw8CJ@7rHs%+M(dZYEP1?=N5Edm*5K267o-F(G zfr)dv5?NcKtCpS86-j6xw$AA5j)lupCT8Nva|bKk-tPRuu6Smy_Rnaj)E}zkL#f!f zS@j*B-zE#GRG~#iyscnepYZ#V$wG2|6ko25<-N3{3vLyULV*w27qZ(bK7S~ahPF>H zA(?PSjKAUgomBV(Ef?cPR`h8Eh7rV@d23<_3Wco5;_fO-JgOt9gxRnVjrfok3Q{EC zei*ZuM{r*R9XG|1B-ZS=v1YeI=bl8fWg7J9Sp?<12t{dZs-~t&r_fo8G%^u(NaUw)c)r?(CfW z*4B}cFaP+Nos*Bz-Gp@nO7Y8SqQJ|Ip;^OA`WheC3-RyVwry}va`eLF1%umezkS=_ z1xa>qa?jwl&+nT?3-H`@`f=*T|M-2LU~f!@w7p^uZkbAQygn9q;v9pb@T ztDj~r9-$9#0sId&s%kC3_^jK;7WF$&=R&z8>GvzxK$Hwd2oyYK$&yUf3|UtRFb_U+GHK+=1jIqR%vs?UG#v+sWQGt~cY&ZaElQV#^5^p-K{VCd@?Z5iD zLx-LddXku+E{!%cMq@D&b~>v~F8UwU#A4CLhNyOFGRa<)EH)=KPd7?EBB_dWB39qf z8`J)fDm1518Ts`2Lx-L}WFTPcSS^?_CYIw`%XV0$V9J5L2%;ryOgecY1V*Ygj7h!J zhz13NdeBgE>_2w7={5{d_=(!4@KC-yl3F0r zFtE1c8^hi>i~y|5lvwU7dZqB1lxTZuO?_X?!kIG-y$G0OtoBQci6&2mAKFfCA>%%{ zePdI{;#=RRVwUa)+DV?XuCz4avs53XGRr40V`M9rGmGzh0vIOltqo`|&&&98fdlMhti3@Xb3WcXoXQb^q%(Q)y&cZ z2s0K|3z^ClWbrqDqP@>B_irjyh{AMmc$|!0?ukQW$%SS(!N~eOJ@u$zGNZkwy@Oi7 zmDpT4cO5)t!KXLBL`uzTe~5E7k~&CKM(w?ekkoShp6+}uRQ(|&B#GXX&O^&LqOq=U z-9>uah{dEdZFpS}B|&@l@hvkEu7-z}XlUCz zY^`7oI>)iM^sgY|O_!WHo^`8|q?U={-Dk!p;Bd_~#`1G#cXuqQbSk_f5t?|U1DP4? z8ZNjbZol(VRk1OOXUVyx-BU2Ig}J6Wum9Ahg?HG~Z2^xb>}gtckeKgZwQlnEnF|+6 zrWUK6@%6Xe${7b7e%#-*ReQI+r@pnjrzLy%*Yl~O2pLAyF4}^FeyXH z6=9S9N>b5fGl0MTV*!M@qe3U_FC_sg-HBN2?Pnx71I<)iOvml`4>We+OYsJaKL)Sv zFy}XJx%HNJZT3z9Z|`-LRH5((U2>cb22J@W0&>y~V}<(4f= zu5;e*dVKGmpSW*wUAvg>S$du0M%S9TvD}thQ9fTgx6Hi**d&_XlOk-d;Ksr zK3__|3^UKHKe}$+QEg~)sWfFusWchusYP2Oeulm|fIByaJaM?;R-zpZGQHq&=+ch> z|4}3DinNb4669N8Csn{g2UkY(7omCXi^1dO6#Pp#6RzTX6Kn zI>|{Ja!4S@i^&?u4cd_@81Abg{ITctP9`_?la2BVMuqfBWQlgJMS9mLtY-4zoc3LZ zaH(oEjkF{y+H%#QZEtDlTws*EOBundy}9s6qCuB!z* zStJbxi_U1INqc&Q_KlQL2?KO(qK7_@C->t zpOk^bjzA`B1nY8};a%bcTh~Iegsdhz$a%Qi6t&0#Y)wJPG)G0u21E>yYZ&L{3SUM* zNsLYakZll`lEMdxQCMP(unu@sL_iYbP9cvMdU`^CP_P5R&&6h3%_XQT zbh@C>V9Hbh4Mm3u7t2lfR?e4;`q!prSi0cbL7FaV0W3J(dA#W0!R&(*(5H_|b8H%* zmS&oZQh&kl1{-53Q_SS)XEDQqjTM)MJ~W2Crrx&v*fDUA=m&KGA47W!W;%+=p|3Ls z;Z!;no1W~Y4>*Iez<*%?@)J-Hl?< zJ?YlXdg-yk^gE8GVS*IKfSs-n9e_o`8^Gh6e$ak$Jc1dXB`q7|?+`e_zfg(;+9 zaW)vYxFm2XJDomXiX4sM2iTKvFwhE6W^u*jhBjF2V4981LM0MoW|LKWgUjmyrw0!M zgrdj+lrL7-wr#l;63>la%w(oBlca^im70!BabUa)muw16edmgbu-a#bl6H#%oLL{#u!KD@iucZa_#s66R~T@I==Qp&0oEHJW&j%x$51_tkT~;>LUNpKBnQR z`c;ix9WGzL19*p@--N5Cx2Ra8cLnxtlty{{VJF>1^>cc^sKQPUq+~JFh^Bvo8xGKM z96^hrl4fd*K;R{Q#=XbL2Gp8r__-225=e{F1|vtAXGn81-2-ApaTP)}&31<;5OO~|I&Tzt(2_mFxtD|)cXi{#CpsZ@KykSe8zfAL1}d0jH9C->S&s# z=j{Z)G4vbQ6qt`l6AAt9+ZmYqo<4i$a~&y%b#hRA8VZjbK84U4m2Vzb!R%y;3I@7?TDH^Bs)qSiJOEN}mGhHr(58Dq+E<4}puW zc(ARf^f?Vysj=^2B$X$5H?kG!A^YH_u8lM5du-u%7bE8R*jw6_NGcIs{Q{z2aPvu9QCL1Wj48ZW1 z%!PDj=gu7j^)XOd}-1h{g zVq6EpA83OIad99Es5hZA^OCs%7Gz8?Jv3##+0;O7ttSAk10WEtY}PJ{F_A|&t`%!Y zOcb+pnxno5$s>vsXa-X`q=~m-yGlZ?_#>$J2gnH70@Tbcox9U@?BsGl`=rbX-Utbe)F-5x%>Ueok=hpbug3Aq0?TX2n2t63?;Uw z^A!qVeCnf(;%Vt`pqj-y4r)M%iH=W?ekIO3=y0Z2mp*e2Xw_)zSaTbITcH)uu{Jgx zgvRbYE>~}N8Wc_RXZjT4X#kd~r&YHx^7@d5Z;k$x;F`*MeXm1wI5M z3yjS>4h-n%R?OEWzP`>#EiZ78a0;jPa(4dfyl+NI1>6s@fAHZDp{UrrOT04c3gx2# zI~)$k2_^;R)H&CeDfEL z6PUkZDIL;oef+oDh8qetb8+CRLcJA%fTFeJb8!uMJI1j4g1H;YeQOSSde!iD%EO2O z&L}(Q+&7wM>xbZJbq&{(fn^KHr&lgndfD=fm@rM~76RbtWC43=cL&XUvV;{MGXhg} zko=T;WrVs4yw!K%#FDfOus&o3GpfQe47Ck1qL|!aw>1-VdE*fen8j+nArf>ko+wgk zt>%=5oA*E0D6sLs=Agab?y-BzeJ@@BNeS0gqW~KS3kY?V&^nv^y(oHfYTB}?vL^c!`Jiu3ICUGP{?k13CU;256Yf<+|b=VUjFfK&v@ zI8XYtPC8<6{k| zozD`RDP71dT^U#Hc&sFFWKl1Kng`c%L2L7btEanDCg%*7v^5OtRQu}JIa#TA%~Cxbo!St&xH+B zC}%!K7o6S&a6V8w8l1oddqAITXcA1wCc0_@1cQp13uea-(hdT2>QYDCc%@jOYbMmG z2D_i^_~jp%b2~aDw@3Wz@84n`U9`||cSpVRi9FvM?Ny`pN=@8lPMSSN(b+p4WU!8~ zGuslXvBQrTdiugO_cRL4?ir^lTWZKnFTUvUjJ}xN%B%ugM`4CLq<{nUi*xD|OixF= zE$mVy5IXr1&W75+u0h`ENI3(l+*%Ww)Lph(JKHJ~@>wbi?!ugY8LpM1_H0KCSx!hL z=D~*OLYRPqFQqDuN-Ptr>=LbaR{hlo?-Wm6%eS%?Uv<>>UWELdyv&vP(Py0Oat?t+ zKl|AW{JyrH>Q&miUBGGqL5qY9Ets8`^h83aQ6w)PCd~f&utrSt6qEQ zq?3STH2;XyDCn+ANIUOOS7`hC@`=#UK_>C7zqFcw!?(Jt=RR5e)0U>2i2>fuP;5n9 zOm-d7s$P2~ke$h1N(`d8HNG;Up8n2KCAKQ*&a(Tz5QU-I&XTOS-*|Ak;+o>k^x?w5 zXpZap7kE|d@M28>+rd7t96V}x6|DQ9c+wY%3hbzKe%7s^95r0vT2vO$3XeMps!e@; z1ZI@xqoj)u%o#LSiuh$w+#wGZDOwwsr0W?GQV`HVDBJ8ga}K(@iwHFFE?v(k3Wavm zvE@fBqg!IlGeV-Ky_ErsEJzLVxPwJTQ zxptn`F>c&OURbtnN=WtBkI!anmy+L*cg`wDP1@UUYd_MySkgDCux6;!YF%}{B2An| zjMw$woXeGqKl9sK@@@~aF%?2e01vdo0fDnn7(*3 zR^Og%X_bsLhfNOQ#mE~F@Y`!Wv4pKwAzB;Drh^G@ToFhx>$f4VkXZnklSlh#{k91W zHBdpITiT^WzGh(2@VJyfE+`Dnn>1xG5$-6o7TVh;4lZcoY;Bz@Rv+lgFC3cMHL+!2 z^sprn@`++?UtI|3bc?ET9Ej%7|6ushz<(yRV;tKJ;}F@}1B==ucvF`^(>NQw@esxu zL7F9p2c63Rr2#gV3e5lT(~I7?*E?5*iy`6j0h5y-n+G3RtDswz)~ho;kRqXsl1z7HjVbHu5v(r=$D$ z`!q?@G&^~~`(WYJ`M-jD?bV%A$oBX-7Jf%{CUQIu*^QpkYsJ)IZ8t;yw(<+}!k-dn zk^Bi@bH?@`p@39GNi7XKt^tMB1k#+QVFTd?II0?%U94tPjhDD_M5)2h|h& z%Bq>!q3t4v+O&al=T~1)50i!$9zUol?Yvu9Ya*$e(^kRKqR5$V3Y)bLzi`X`wA3s4 z7I`5B!MyMRhz!UT&$oMR9uD|-5a)FxDgo5wc;+JfovVdQFn6Q>JVg z)=utxxmC7$!{PcXrgCW~S?n#QC1V6h8=P|0rk5#Zvo1^RH#Zb&nG`X*C+r}<(D&0I zQ|{`iTc=Ll+Dmq?zJlz_dG%c1YHfOqKtgLUm*f(_xiu}ROt-8u1=X=1U zF)yqiMb{77&)1`$FUQ)P1lF>GzCOt?47>X#!#U8XF9S0^U9Ux`uN?e+=zugWV2sN6 z4#Xg*lEfnd22X)`VCmJJ82asjP)&Ex)fx*C-f$OK>~Ww!(_W17bWV2YN8o4biuBZi zt%n|lZD$va^w!<3CHyQl5SD(rkgV#{8+XOva;-2?gPDtAlX_Q;y~hToD!;GXRLJETS#8w0&_*TFrmXX!)l$u z-#E0j>)T7eu1#3}=8reO_!`7Sv)K_4K1E|bCHE1sYTFls)|2koUS^tanXmP>(E%e@ z8ZfPi5s9C-d;Zy@Ey0DxCY4tllk9FJPkCVCrk>GF)-Hs%fQ@XDbDE8_v8!c1TY}Zg zEJRAxAIJ^rxf5%9Skp)T96H)c-YtejM;{+!Gul5Zn8NEAkzxr00Log4)H=F=*D^N0+!6@XEMeqrg(>fuS z0fE4LIWSmx+MyZWUVULOLE^!0Z)R@S0`}%*Lz~XMc-QJfSFNhPHdHPTmH5sScnj05 z!^LWv{7-hmw8DbBt{-Ve+N!ITlRu6en)8F=^tMcOr(T%3bo#-mzq)Aqk)Itp=fb`R zT8DabiqmPkYMGW_bA-9NGF&PRYn~$?oZUGx5bJ-WFsrRb^;>LSOI`c4Jb88X*G8_K z{#I)I?9o(txKbIW{hgBgPX^xLLf{ROup5oXjJ^Q-D8d+*$VI`@kDI}>%?{d)Ed)5q zbdFT816m%HmFO#-i2YyRX|M$?PKAjaK?e6PH`#f}_ttvq#M-qdPHE3*_iN9N{&?-$ zACHo~Yj?CSu7~NhVQ1btxO{D}dUXBH@XG$$npDtfmu!nxGY_oa8C*HOCYSO%9iqLV zVfCqxM|!vYi_7KNUQbuIH~5~{+ldc)e-ILN`W@V#j}cQIMdWug z?vcTP$4zbc0?ndCAHN5(xD95m7!+(9$gY7B@*n^^VG}d(Y3O0s6Fy%^ z-+{{%g*)l{=l^@+@e_~ZkNscmxA@fF<33(JVRUH1+O-qd2PUk(S(ZkJkTFpH`&$VG4*Jsc#M zbULASSKywB&5HEU6vzxL2i9fSGx1X%KO+Af6%WVU4F*ivX#+-uwSo?gr|f}a48Yb1 zj!g5=RFKjIXfQd;RFy$04foP<)rq=5a!IXs1A z8M*+UD#jI@u{mE)VCOM5T&ReFx(z8Bl9!o-gti@Cb^<&g3yPwb_5D35k2JvLIlXNrhG1_e!_N^dG zg_VT$4oaNG-{D3TlD1S^=5BT@c;gLN#z~~jzj@nsu=#X+|9?bIZ7gj3#cL8T@LC_W z;{U{iCB9Zfbj#*#cjj~AqJ_213l}cResjTt?1Kvy!s#f^<+$p#)oXuNzoGd@53Tc+ zLogCPK<@uFxo*KiZIiZn?gE$-K3+I|4_rrw?AAI;>=CdDZ8-DnWho67` zp&$JWJn_)G05}uR!P;%a$Tkq02<)08V@jYgg~QM32lZr>V02WL#(6*R=Q4D=@yXX zWE(l3TnZ-Jo5`KzUh*(`hP;8ZmK&f#K?_O5sSK#AsbxS!VDy62Ai#zNmcvf;3%c?l zc~>JtKWGoaqDc4a+^{HyZS>r){va-*GwbHGGY8-pma01*_ZcIZZrwt9IeH9-b0NYE z$HTw}(-e*U9~%(=u5qk#{Ej-PK20m5!v%92T7*p;SfQpgxCm$y@iU?Z#;yc)V;8kF zQlD}X+dAAGXH8&5NrP74jD0UXrd;Xk3b6OokO`>>>KXKJ#<^=(~kUKe1i8?(cb)DersT&%?wncZIUxcwZT-gRMi^>mv#T8ysA zW|oEf?n|Vc?r5mFYg(e)=v`!XuD+z)&=d*|sDe8Z6Qy8Xv~9d2W+NWZDCW`@1h$yn zHZEYcSxgq1*ak^?Y^u{P22{l-uzn?|nwOX2K0x)oMz3f|XJkI=NKaJwOf-^`BaY*< z9mEA@TV832MthZFZEVw>S6+qGYf2K>kf7U$i09_ox+c-89f(;vgLVE%l_A&|XCr_O zRA~;YPvC5^x$S9H0O-V;viG%^nGw4w%rVnc6`*hEO6O8adzBY|LgKZ#86CZvng zHkeg}V+)dY!fW-yEx>Ti>`PuC$F;xu0%iyL8gg#tY@>;Ctv45}1D&@J;^d5WmAB5M z1RdF8AmB1tXc{6)TP3p=FB6LKd^XAi?csRz(r2g4ThY2;sP~z@`5DO60nQ}V7Y~+| zY|H|VBiU#rqIdrKiS32R1c!Z`w{+UDbhXECK?XZG1w_Xi?d#VT-Ofz5ZgURwx`8lq z*(r<(Y06<93^n<3O_f-4F10P-OtkyTCd7Tag0fkO7wW7bj*U7UjcTYS1*5MG_D6>I z%a+=lk@LFi8qHjN(BB|iZFd0zu7+WqT-w#SQUoHK;f@{^5OM3^!$G5$GH-RHv+Y2H z+l(f~)qH95c;en`19}OuUfyg1yn=FPMqm?mCN$jWWCgi4!2Z>ab=YM3jmd0*gF~{p zkuS!sDrALVWx-}(jR@>-oOY|%Xq@aG56T+FA%_q^%r;n?(1ZANHy8jTP8$O7zyM%h z2JaghWa1|U6v1kj$Ql`!I*64ef?GhCP^3!x+_od?(^aDuH>C*R%al4I)e zp=QzHO+6x5+f#I2p|dGN!(HfnMlD2i`19~NQ14p<1GY)bC=EKQg%%%64Z!jzf{As5 zE4mu4`J49RAADbX=wC zkQkoUd+)(RsmT1{8QdT3o>|ilUi;jJ$F+yw*>mad$UUu>9cWIcZ!obOjhF${_tQ zgJ=o!H$vB_B{qS3Ox>0&z=`RkOiEU2vtTY+b8<%Ux9@2jN$4ifsyBhyMPQP@|s#W*Abnoib z%SFP z{ef>9xYMV!9nfWG85SEhBCp$i^dF}f8{-wN09TBbXOM^x(aN|)D#ufKa4hJJc9}DO z;EaOA_tkCz2wHjrJm@~K@IlkZl|o&@qKGhQ5^G@4ov_QJ$7h3Dl}HBZi?@5X-ZFc~ z$rkc{{_c0RKVARo$zcD!od-8B%&E2h&J_3=tN{JA!mwqvVHB`tsCBHVj_iKG4CGy{nSX1gc5<=Ip@z~T6>FAuiwzUasK{yzp-$+C7O?zywfiI;0CT^Uw>`E z492_I+*TXo0(T{cGqV;}X=WX81lXa2$aZkriF33kZXnW$&17ZJWHQKDv3B3EbVx!P=g8fVV$SyCNRd3e>rMD=>ps+RiQQnym05c5dD?` zt{J5uz_@9h704fBi#)ALN4uT*E{+LJXG9EI7AFws^KRfIcWqW{GX>!kckB$pyCh_J)-4lfMlT?lB3Wd`2pVKlPOfqJ{4Jdwy{U5dW%UkEFzA-YWgV+7407DU&4o%@|ixDT&KKNTl%HsVJ07zlLEP8!{4s6P81rvzDiw3 zGG^knr~a<}GTTkAeN21eM-KitKdw<)F?(_kBHd&mkPUz-W^#vP(b^>I1>ML{1abAk z)bnJ%oIrPh`d~NJSc9FiH4$vgFv#@|U`;#|otSG-rC`ES@@9b45;H!z2;PzTiNesfy80{;5p^56&9c-C8kjn{{xk+m0Ixr$h#5739AKl)apE z(79e51FHkhqCe{j?MU_vl~g%{^&zt4vN?k*=2ihbYZsio(`35)>MO~n zS4i#L+dIG~ORmTTlULfMs6k6n+kOPB zfd@JYtY9-%vVL3-6llG3QV%^kA62CFrHKN?VTXaNn$fW#uq?!(T2sv$h*!wV)OSNk zJ+VQ)%iS}32Pft#mtI=QiQJCar>4(7n>FStmtS51>CV}lv}HlxfPcL75f%t3Xy>aLPWu5ZCp*Lsk9d*vxA#?KP z@ymCLqj!t@nH|0DJ>vLfQmB1=jbQ^YyJx|Icph>DUW6=x2fdV{xjSEU4(u|dim1-Z~uSqLz)f!6#w~2x9NY;l7C^!2hY!o#VdfHHL}=lzw4=DNKy0V&FXUV zE#@}!c6o>VExBLbEbo`^5(b5}(jnn4ZbVqg9Omwr-hcGyQEoanz#Zlea3frsfM%dj zQra&}@0a_(wL{*as!Pqz1~kJusG8%}`23=^xX`J(7yGSfhFzFzov#YkQH_l=^G84a z*zUKlSDn`7YEj*z#?|%ep!FIvZO&5jEpiKOj`>@1ue=!-dY6Rea90X<3Dddd+)?J( z2!a!IihzGmiU5!T4AO5pMF5hGUNm|HnMI4Xn`{BgI*Ze`LM^HLaEf*6ka}yQ+Ssiw zQ+^?zE#Hg#S1(;;yl;{?DR~ulRd^ad;yS_}QKln>{gERK-Y2q0Slo8L!d=B}6(@-) z>40%AT4l%K-D-=%sPLGojj9t>^EgEfPUW$#y|xKf!8Y6Cv#qnaZ7VEA z>ppA3vfeUTy*aPsW6PAKPswLX_u>xbj0ePf2gS*$tN5#eBWTEB?ua^_oz7in~){8jvBVX~Mu?ic6dsX2^0-QCu0m)MB8AZZ59V?;{Ybu*nsh}%dU;rW*vZC zV*{Gv{ij+o?7sKy_r2+vp6;q!_ujg7!@1}D=RbPJu-+Ip6bv@gq**XWO=&bQ7{4qX zCZDB>3Xx9ce8}^cVBX*{Yy86&9%3U>1aF*FRSn`r7{t4o^Cj(xx!_zF@Q9CY096II z&N=t20A6sT@8n0O--MaxnHPm5Y#uMZ_=51czTW+%-}dY)DZd_NVH3aoqKlFYD7eWa zmxm4KWwp!z=Bc8(ny6NISlv$-ZDOFZgDt+8sMy z&n0tTn|p+NtC>G}4p6%6V`inDg0bA|cR}vH?bVHR^o{J0 zu%yssl1cz60bvg93XwIaTO(EQLH?@n6jY^R#t}B_M&6I?K zRRvTd6C40Ojp~ON6h=gm&^V(e#tF&?FQ{K=#lyK4Oz4z^)MNBAG3vcg0jh{diKq$< zO**BZGp8B=N7Z_(cL16l@#~n^y6NM`{ zSOpCMCuSNc7cdz75iM_!%yzgg?683gk98Yt`pK?oiVG@sRT$2a3hFCnz`MfEEj5HW z=7Z)7_Kk(@juafSd9BskhU)0XCw5xLhy6xmU;(4M1g0y{#mL#L36^;1O#;KPlAFPD zAaRKIs+V*cTiC0|DUIM-0#nn@b`up=BWQ288u*Zulw;a6ltWA0;5E|XMd2Ia+8>U~r zXrW)jd`n(jtGMlMx4YK45+=5rM6JIAtPLDvl7O@7@rI#*(ZfNIO_Z4u-2VY(b5wbQ z9~u(T#twAFyV90Xi&mqn_E;Tp%Z4=}8(}_KsW9*0x+Ml4yP`gjzb)=t((7mZ0iA8q zCb>P$fhf|x_n&FAl*cIw*f%_*zlvmOD3@lJskTRPWyJ$h-$7M@>$=4&sdEKWD? z8ZQhvK^zpw`T8=G9$@XDY3HrUHr~fC>ga$D1~FfRsL5|Ad)iDE;KM~dj|~w}VIE!g zIhpV z+(W!Pfxugk->gk1m1PnS*_vX7+zwC1rx0EBmrZXq{i$h=Sq}%^OTb%uKNxJDW?qJ@ zib3S6)ju`z)UgM>2?n4#IGs4H4n49UVlxf>D_%7BsE2z_tFGxJ%qPIzl%XuP*IdxC zQsxa_TAFlJIx!4#b-Q-Tx{NW&B}K`FJ-ADqvgourlQ9Wsb7}UIu={pF?W|6P*hkWN z;1F>LRlvj~;$4Kl5>*H_i)Dz%4A6>Gn?&M~COWnrj%%Pwk;s*-hiFbja+<90ONwVW znxHs3Mj5cE6XrzhJxNyn7^X}>ijrK-1?IXG%`|v(x+I#h z=?ZEMXb|9Kn{d{FzM_eqf@*wefDKRt#%wyk79OBqK1y1LPBLk6MhHh*ei!-@Wk5 z@%i?AP-4O4Z7yVuT8jj<(#!>h@<0+36jEpbh-8f)U7WJcbeP&q z+HBjyhuDcM5UaW|buGVTZkU(N$yQ0nMD0C`7Szp9&vWwl-agyQYoHOf*uj&wrYOoz#AtGtTPH4` z1W0@6>h@p!>o424t<~O^+p#N><2kTrX#}4)$7X=y>0gU!oYC8?V-|-Nd^A?4XwVFR zg~Za0$ne_MGG`WxElC}xt&aC+b7`HSxp~tRfJ36D63Xy#Ybm{akzH?WZXR&tmdriT zyC9ft#qLE&_q9fHS)D1KZJxJq?TYZiL~uc$5elj9Rb6Mzxez2o@AO#>VXf2eC9q6v;Y8$+&gffd6T*dr(-a*H!I&5b zws&P2UB`sk)!FUV*gJ~`9iYVK>0;95>1$4!otgbDF>YP!z#503*~6BEakJkHqA`FR zbovFehGrd5@s70vzex23B+(;@SOyV+Tnc~q-bS6bH6M10_T)h8b;?aT$zcMgDp393 zbY8V9-K=FRxf53%jP#=;=&a1Q3&Sa!WcEiRfWow`Jm9BcW}^<`rNnTOmo1K z;W14Q)a01vGvi(Ty>$6}JyR?Qp<>nB&~%+H9GU zL5!YkZ~JRb=ACDsE1NYMYx)G+W4BmJqpfXI4)}}YLtg#@IUE6wta-zi9E<$EV0+Ld zZ5;ImL&iM_e8(Jg8T4l7WP4$xY_a=8U-a^>Twf}_=&3}H!aHd|T}JYyYh zP1^>WD>(&~qhHIlUNm}q)9)YZ`z@2X^OEmYY_-<4jO84b2{s4JTKloxF0)sJ$)oI- zLVH(c&S9GDinwUVlthfy2_45l`9-mF6B%+_DzA$v)8dw!lS+PJi>1u zThF{JR~NS`Z~mq^+k~%#NEPJ@RR@|LW%F)uUMtcr}T4gJ#EYrDx1y)83} z35DfL8ObcMXU)A^X)}A}*0_`yu5d!1c;^zy)M=yG84otz|>&r=E(4?#u_8DYa=o9U1o7{#ie&`?mJdY&a7)& z*c)LFPX1)`z69*xl!)puIG5PiPoHsJ5{CR9~kH0mUiFxMz>aNKv&RJ4wOOmb; zf!4N&6?KoOA--RDID_b>ZexB5K;wNdWGc>kSnk`*=Rdgln6P+m7D(i6SA6&&E^XpI zeovWzF08-lA;c{JHb!uUF`g*uEMUa|v=ejPKmJbJ_dj*yQwd`DTu_mKW5btPJu2y`GZ{b>93#uOtS{a{>WhSNg}7Zzrscb%vOz4YKq2n>Jfb8 zP>?gO-i@fnWK0$@^wlb=HT*~AQ&jhV)EN^8zCZ#*?v#W2;_F69ovV_(^D@Tp;jicW zw?3{suDJaMjn^QEjfjH10E0Y&#f9z%o70? zc0bq@$Z($^bA?1 z>(Js?L5W&9{Meq4oBsaiErPv~4(aJRXo!3l{Cs?)!8K@f_$R4(gM=0EBRyi7pf(We zG+4TUQIOdm#Je}Y@$ai{-l2SO;OyrnMXLsh^y*mwSKuRT#fTOQ=RUUW(C2ISZ@i`* z9x*H(0c{@aU+9~75+HkpD-axZtfJuH)n^EzU%}2~lQ(W${nOc*4KIDOFOG2l0USTHL|i03uh&|n?Ing^+xmM9!Jy>QVH zb(I4jT&;deT>+H~wC*r3<3-&&h3~i)kPr8d{~#GaTvcYG2}a zwDe{dM_>>Un|=h{U_0hu;$7Dx#+?-&ESQUlatxt1;XjwauV4|tt=AV&n$vAOJEAQW*dDO5i#ibJN8|pv+aMvO8V;}D3dBCD&iz8L=8QTI=V7~zHmjG`cjY?V zUps8KJ1~*}0Y%+Uzhba_t3!i^2T-9T7B*A>7)tcH93kFT!AIvAYij=|MuYiWqDce=9L4=L(jgqPT6-w zx@Gj}z298@Ipx|PuAW``w;R99tUm^3gP(T}pG;4*jnt~;bTkO>UMw;CpszLGIndEP z%)L3@KGaq(f~yqxE)Dc?2+~0b0<-P0ahu znDX1d*BH-v-Q}e>K6qky5w|4OfAlBalhPF88KMud=#vWiq=YeGMk_Z4fW<{20Bnc^ zASnuS^7l%w5RgB7P5IYn**n>P;s4{KsIr;~gDz=eGrwL^-k;MSVW%1HM_>^fK(^|$ zJ8iT32EPA)*~x%qg{YxEPkNN}fk;aTn~(YK)KkQ>rOgICN_u$evX4`w41vxT6QNOt z$OmW+hgd=t+BaYuQiu3g?-8LbDLWwu*3|6;dOu1?!TR4L!;cqE6PPTy|BJNwTLEl@ zw$8s{&xRiTijkH}c9b1DUhlDM`|=jUY$2GDu-?Ho=naJ{08luh{kdh=uG4CAwUS46 zxjKrufhoH?t<6l0fL2>40f1x_O^8U10C{1ynu-lD>n1$yGpn+JQY>n9OS*8K>)F~H zW#T?(T4dl3WEngFXGj@r;LdO~?=Cag-NPb8)-%;2bedqgVG+W&xewxLds{yzUApJ% zn%QP!YEfc1&{fC>bi;*WCS%lw9pL@dOW{6^&Xus{ip^PrC%UG)zOtv&GZgll^t#-* zX~Fk;UwN$qHh3B9F0_22Ac2L)o{AM2rmIjJ;|$@^Qgo_kMPWmr@EFJXTdSTB&OuWd zba{0->vD!mrpL3r@n)BW@kt)LFHEAZihsWt`0nwh8g`(!G~LnkBJE8fOV%BD(9q-K z4^I`wXzBo6V8g&zu7HTS3Lay07f=(#s=&7cqJh07Ry!m{@1gV7?#4{!his2r9FXw~ zv>qaAZes!MCMgjaqTgY1R6AI?RCd^{#9}5zpd-XIQHQ3G`UyH7^)q1YlcEE@9Mp9h z3CMWR_(k1N6A53F)O+z6-4c2}*xHd?W#Fn)&!y=I8B#j>NE347BJ@^V!$^aU=0lgi2AzVgHD&@&zc8hPuPQHB;@)UQ zT-h4-LdHoIBqo!AKBK2I>V;CAd1S=z(bH?B14mQU~1COA7kWoz+=M2{&ikF!rX?fiN!ohYm;d(H!EAG;Fd zD^l3+-RwcA%ZT8eS9TUU&BX-AtoFrM1kMhme^ZH?O#?O<6GY2!bpg5NkU+aa@p^q6XWaS^Gsedxcj@n zP>*1x`?@US{&1ujEm_70oY!NKf^KL7FC zAO9HvE8jq$Kcnf-0KLyJn@KXHUZ(a2>Rr@*%4)BN?gRoO^$W2TF%XkD*O&lBCfNfL z^Z(ajwYO1DBu}dOP#P<;{p#P?e8wwiGxTqP&l5vn;pSn1X z3L!thXnM#bh`=YOZycEx8~OgD6|jdvevp1CbIjnV0u_(uF!EsTC5?CEt2$o*0@ppf zd11CWRX#x2Pd@L#kT$s6&9IedB`Y+iscv|gGA&Vk!fx^yHPG%F9AZck{?*8biailK zAN6W{b~B7&*v{x|f{*i877X}Zt~k5|gak5SxdgbF;mAKXVpvn(^UKik8J%uJfB*R!_&Reb}Jz*0bWP1YsSE-3D`S+}xZE>omHl z!o}CydC{xUFZroAYH7*mOr5}Sf=T0ZbgtAD zDkW}1I1G@uc)oI6`OzlmdgP=iKggat_XTSz;WO~M&##Rv9XI>-A1X#c9%XYGyvC{J z_Kr$Mw3H__oY}W<(6c!fJk~0-w3rdJ!wpsjal^6+j^6+;3QpgVskN3MW*`!ouw1al_ZG{w_A= z0;4=!aJbpfP_6&Jw)?A+)9;e`aIjWE%x_*B+MNR7I@k4iWv&hOwBi3W#fnZ)$Y=gE zX!4l#&Vjdl1&<8Z-%P^5xdo3MyM7B4tgWrsz{~DpbOp2Mc&WyDGe5ktP)xMO7IJLR za^cP4tdY}*XWmw|vPUm1XPpVo30ygJ+9D^__pKE>hcWhZ`sWIR~~G?*;=r}{Ctz;tuhWmKE zZ@I6vy=OEUHh@+G5jG?Nh;F^kVshtez1YjjBIXSXpPng=Xd)VZc#VH1GgM)PW~0X} zgNhwXH>MT62YQ77Vhv?-_UX>@g1MnrnccsBo!R@^Ys&Fo>t0i?f0?-i`44u~4&@^@ zyVoPmZ|@k;7{_}upy1qLUG~fO8CWMmQv>P!K4Pm9^w%4;zYB@30#%&cXSC{UJs) z1GSD`YcX?X*Qe@ccV@)YI*sk1((j7x^(^r|Fz)KNoM+z z`P>yO;-QJ_>UNLC?J*cD`+}KNr-f@t=DjA5$%&Q0Xo{WX5TlW<{xNZ|qdk^nF1*}1 zZ+L+;+S3_}FmoTSWWK!A>u4Xcb{BF?OSRLW@2X+|e0ofnndug6O(PaGI|V&&ZjMin={7FL`%F#6c(ud(8a6X%XRw(`WeqvDoQ>}2!k zfxA~cgg0d;zU4M=!{0w6KI=QsCK#A$W-+|9wm}uLmpO;IkhuuH zT30jItMOUygO>Lf%zrTd$-Kup5fUZAX4nGT!S=C(>=e6#T@Q4}A@(SHHKNYm%HGc2 z&EC&G#6H13$$p3ZA^SZ0XZCL#1VGNp)wy17gq!3RaI@S>ZZ)@_+rjPS&gBjYH-nSs zZsC66A>kXsw}j_}7loIF*M&EQKL~#mK7jRA7VV-}42e0hMeGuX#4&M7Tp%tNHvuQz z1SZBxH#zA_DIov2n7WPwkXUyR2uPG-B$6XRF$bnLg4EE6O;$_bVv=IS_mrxYVMm7N zBEY7^EX+!=6jZY~qrMy%Uapt~dM6eBjwL;2M9?wt3qU3ZV>k-LCm^BfQmmJ)!ud4@ z>$enjP`DBGrPf9Lq}HWgje;GH>VhexMs6AZt1?ujx)V8;sxBJ%)tFR4Kohm%81f+o zJ4wW|mFli;#tEo*jw!=gQ>w-awIc4#UPi?rUg3r91b{}3D{6Ju|Hv^}{3J^-L#bK1 zDk-2160vIC5f$OAkU|}4+A5c@Ux_)Kn0{PnMMu5th)UI(L~u{8UDw_I+Cb9DC*-=kz1*{ zBL*(I04B{kX3ToEY%c>9pNhHQXOEi1L>IL$Rg}`Zu;(hf>@gQA3c5EJZpRf1FnHoF zB<@B08;4krRzW|9&o;1sCX2)uhp5yD8dFFXdl^?0wV;HlC|ZCfd3-TKgu}2!FX?3K zj#`~~|DvZ_i5yrz)kxGBDZAuA*HRm)Y)AiTG*U?_#~jdURV&m);H;xIq9&>p(Ifv? z3nBRXC+$OgdDNe&0cbt>RQtf&8m$9oLBJ@`vrjh4;}3qtrpRr!9;|=GR5~n6D1J_nWz#e5wcHWh}J>+ zoQm0{SPl0A&i*Q`d{q#uQqRFL@Uh|%qhge46iX=Wo*UO9E3DZL>RKRqqtS;kQ;kYg zpdG^k&j4)=-{Knli4g~h1x5!8Cx#okBH9PH3QP#~MtEnJ&;%HESYXR_C;Cx|{xB+W z1CA&<5U!v>6D>j$Syi_oG;JV&B1%P}j$}9bTVt|8r%9nIc*2-fP(yN_L}pHuLgO4# zMX4^K-Ow@^LO4g`i*m&;nB=g*chsG(vICEwrkxZ@hI9Iq_K8C`uNicp*QW z!q;R`!m~!_p}WOX!X-s&6S@{<;vf1lcv*1wb=)YvxExXyBLHb_bn7%6>8>i6rAq+c zV0MhA>>>?KbXP|zM&k=36?p>Xor8yOsf@YARf$R9Xh-)(EwHUa4KPN_c+zMxbj~uS zV09*sqN+6xIYrU8BwT<7#DfLvJAHu>pDocNj8YGClxXB)oZtX`sFYn*)CkWTA-k)k zWVt{%^osBRF))I=;wURDwfBMaUG|2H-9|SLOa;6o5&o53-R(v2R>W2W2oVQi#Adx_ z=sWG~bTi94jUp==Vbzk59uaYIk>2f;5ZN9vaXkqSf;(Pdg?bI%Ffi&+60Lm+GKL2X zKt6E8bjoGodV66jUJwh!TS&a@C)8+`_b5Vz= zd*RrqFDKYbUI!xUam+`b0sD+lA%YJ|r(si)gsdhflxHbNK!;Et7^{r9A@KI`Gg>h8 zfv}Ddf5*Cygv~tTkllcMnk8@#A!=VHHwy`1#%*R@5d^v!8`&)Ip7V2wKE3{C zaN0@mpEF0nFNp@hCV2oJIZ3ungB>-`ZnXFYQ4c*I#TNwb0gFD5wzg_n#sVN`Nn4=X zh_VO=$nt*J;H(0iZ-AiE8f+lVl&x|_D<&bK^G4?eR_4=)aZF*3dFCEOa^{%!jz3d- z@GRU_wfKkfkso&IJ&=y+KmVY4gA+Fl1i#hj=i!!%Fv+n%EjWe%J{BE&m&s)D!Bw`> zHqEluHA#0tJ`=UnATF^+=Rmu)9-QH^aXXXBMV(4o z7F6E|3=s2yD--}U+jWlTmr2oU9Fl*QiX7WMX^-fT3qW+8%ud65bD5OtI{%PmGXhj5Ra%^=D~ zejhA{^RzrF#^RYGtT9ZcTBrlP_BLu=F}&5JiSTRy@Ds#z7TF{Z#z1~-G0u5;gf;}0 zla1mUs>T@WFo1Iu5YuK^)?z?8h3vu{jK-v(3`mNDLW95f=)UZiJ?SOEq>89t)d9)1sBdj0Y{_Fre9pdXnQoIO&GL8sW^4DHxJ) zFBnK_@4$^2wRj|RcH9g)rYNq{BSY~BwJpCL@x!!wGz;p5pv}k{T?7g`KwFfi=X zfJE2A)5IuX*{f-M<3|ts_W;!s+VXv(sGRH=&=tXx0X8qU+3#mfCP_z6lV$I@xt_%KK}Kot+q(1*==@XVLB1uD;2D$7AX?Aik!=B_6SlSKF|LEaeVavh8dIH3i|#Fob~1zG zYA9xLnHaQY42;L$tnCeS*mN~CD()XpW~vxs^f{1{7yaVQ!7v^=Jfbj#v~=k)1*4%c zvM{F6fq0uGia2KWsGJTq8)ZAl3a$4uq&b{%{}kY;hj| zgyL?ycwV_)y(wlDpbw3fAZBqUf+UD)u6BNb>j1o}7!u(PzmI2?gNOl$Cju(CuVIR{ zW^Ii7$Nae%ZU|I@;H{V<(1o-QT0v`|b_bepDn`Bo4+DdRMI1s59U$e=`*pn4foFwl zk4P!ZM;^`RHHb87SqBv)yUCc=Bd&%)kfD3T&pOeM-j88xX+=k7m22s-MNz~LcuZ>i z?ewJa8%M{*9T55X5U+2>p@Te@J!))%rNPid_eMW7p*5bZ+5>O}j;oo_Ns4<0^#N{+ zw*cAi7AN#(N+0ff4EIM9EL{r}1zn*wC&Cxt{<65eb;ufXBWj6MSO{pMr$X^CMAqWl zf~QP<3TM&9(HL|&elT;uV;KvR8fy;l7DhA6kAgu!XR+Yvphsh@%Ekx2hA9^!>0nq6ZZx=mTCu#!5HvnRhBDt_V53G*bSv?k{M0zt#<;cyB zE7bNuMi{$|JaN8JWt_riwYCsj)WWERc%#Ll@xena`g94mbH>+Ij=^dDV#-ZxHu ziB(XR&~z1S%=^UMD8&bEg%UhBp)-VD0XAJ^Q)NqHsyD(TxDksUp->?ncTqyfF&XK+PP{{c_es=-@5b6b(M?-)jhh=7=co#;@34V8O*lb-mcQD`Ho}W8dXlpC5m*(4} z-tcfg|NYoGLvu|-=S7txkqC1ndhRg$@$i8tb0ik~;OD_5&3QNn8*J7j!db%5QP8u3 zu^sb?UC_1p7Uv2_(3JrrQwPSYVF$ z{mK#lhPJt;wheyeu%FXZ)9kx_i>E+w>;-QcBzo^h}U6;;J##N&008fy6H#U$|%AO&06&^-KSBc&;FPrFWjBS+scR2S-m<+1rmFxrZ@`o2A|J-n;ym z@~5qDgdD2-U+AT$p!ksbkE{L|X{GIe315*A~n9sxuk3|-p+U~8gMtF#EQD8vFrvl1yw0B-*>`y`wa=ce&^s>R&NAU5^!}SFfISyG2`P$Na(J0=lbg^S5>`s|e<71oEt` z4W@^4O+4G9q=fImr|7MwlK>L7;A!xQhNVFbCf6gVr~ul}la~v+2gW7Y3^9c8oyH)| zJM{h3c^oB00*zr1KO+HDgLDNt68@{<>C`yW2*{~kNatLXH9}ou!;fz$r149$L&Myk z!X8_6QMso}QtL=oPyzq~9MD7H1=I)GByD`c*r0{Mu@v0^W^#h|H3}q69o<9;{k%~y ztgU6$;DWCrs3fq>|1R?b>^W>^nRU6+S|Ncb#gH-)tps~JzuhF7-5fZbbk#h}l<@!- zNeHQWwk>6BHUe=%YZ$!!v>XEJ@+O414l-s2Vul3xDYk`vSlnbwRx(;dZIufMmR=2f z>9A2?Wevm|Y?2XtIAgHmQ6s#(=%I);*sz8SM!hov3n+|pEb9-Re?>BR!I`Z=L906# zHGp+N18oTcJhL1~e7s$v#X*@e&Sjpki_@9N1E0~2M#?F@9bsx$Ztnues#0i0-rh^hm@RfiGMrl462>T?JHkf5>q)G@s=V-!A+tj54s;r54p6t(B#wuqd;E#z(t7^WPNq#WgBhbB=v^LV{tkliFd z-8Y7ofe(yESdxde7US3=ADwjx*b3unyR3=&tf5v@w4$G$J36~CwP9*k)alloe-Q!( zdv?txt;rJip1;hw5JB1r^+WdI%XPg*ovZ_k(Clc))3?L{TQ?xj9LB52gwqAgh1|#Q zE006ijWzvq)4#!guZbX7)WvDApm!3Og^s|i)<6`{FrWl#5_DDdJXzf+f%-c22{|;* zp}QxcW1}mApRxl|2{cHIr@&!qpanH&lxK%#uFQjt6)&|gWZD?sD)5GiqiofxxvU5@ zgBKM}CnzY2T5+`m3`8VsyoiW}IAyVw=bEYNjnBSw9% z72NHiutpzYMQQYAyXgxLT)1g<|EiE1bdK0lxvdsNEl1dancfAtNGqF1k zEo`o8y2sBo1>wnIk;kmjWPf{b-W6YeB}iJtyAaOJ*GaUB8{ zn*2twS+_nGMlhbxIpf>TxbFC|GsM=aW5y2U>+ndaI5NuCG!?^hCqA=y72+G)N6iu_ zlRElYZft1D{;L?Gl@E1XH@vq|?-g>z$LMo%x<9I&bge2ZypN zf}W+inBD*kMqZc5H_z<47vowoF!moESrhQO!e=c!EIO^S&Bn3dY8$sNOm@MizjN8W z8q8cI@GoweDz^<^(>)#^gTa@3vx|_fE>L0z2mHz+l4{a^* zqyB4bGt@8mc=}iUf9j1C1^?@%em(t$|DXKQr~mP%eo+r;uVJ_~pnhTm(+X^&B=&wr zJIu)%ZtI7?|Ehk+E!($GagSc9eDLeX4~;OKDa6>nvE|82XV~eZ-`p~|ikayCWo?o< z`qB?diF#3^%@;W7_y*m~?3KUy3~$(Z?;8gW|Hu7XvG?7*m2^CJJkD@uzs>}1ev%p9 ze%-#U*o0}mbPOCz$v3_ria-3#0_9TugHt0M;eX>^wM=OmWJ5MpSlH&yPd`73|3WRoPtW)Myr$ z8LnA*KO_#X3bX9tbv?sYjUd`m>o;G1^?fIdx#>yM*Gjd_rwML(FB;` z16|$styz6PWXR(3@W4QLd9kuCp2*IRudN(sMwBPB+04Ea9$kUy&SpB8*SsSIH>0>G zHtsw$(%C<7|m~7zQlZmc@zvB@3Ot@EW4523ETLc>?7Eq&DmMd`JK!WQwJpzDdI;3|2aijMPD2cG5vA2){k#rrp9;g9vVhm4`&cRHa2i zmQoVFjXXXGv4Wk8udebQ;R4!U4f zFvV@5_UNBTN&OJPB!Fbaq(_a_=!!{17?aRKQ6mS0Eec8E94ZF`9O@0{9+>sSBo;kb z2h~-SweLnwR7XknvJ&8&GzPaRjEt4U&sJ^*ps`DgfwoF;#P^?{pc= zjU=k@?I+eGXDu1owskMF#b*fUHSuWo5?O=b-GTwktX_C4$q2k{77!MR7n1Hb&UWR! z#kRnJ#3$jNPV=)%?-oj?E!&{r@HL(P=Wv?Gj9H3Wtw z0dZ9!mM3hk1p{)YGgr5}oxyNhU#jD1T>|;4g{>6HQoulY4=&M}Feq)fh|%vgwx0KK z6T=K0aqDtMc&%t1PC<@I4ERYu3t`^k(k{G6&eVaZVz}5~Q3Jid#K;C6dz_D1 zLC&KA#uj0il&3hq0rotgCRrAIiW62%CZKJ33=9*VWiT0VCdMDCwS`QQ0U?3(&e9;H zVM(+=wgyrIhK;!n&-(4#*NX_@6cCsQ$JvUKBhzEdfPPT6u{H?k76)%aKu`EDL=C_n z8u)OM7gJ8!92uB$a(UaCn@-mK8Ch~73=x(hqlgUx)U=$3Yjt-PS=N(nQ@&ifjvLzV z5=2|TNTs8%K((EaPb@z(?Z^EGePrc=iIB!mPHm`f+d2jIAAQWgg9Mw zZqc?IHfpR3i!&+C3_1|vjJ1{O*$frtxHudqY3^jECfL8Gb59ge{V+Yzu#xIza+ zJ2i{OY!%oDuYBjgWx;_(Pfh6He;|szH>B*0E|Ou4{~8KUgNmUPjxWl^7#&)Lir(2m9A2xdXI?{V|V2ZV{R;>|U_`b8@@dEVZ zLZ**Em#w#Wb6Pnn+Z<;gsBVR^of)=X7;$BMAxjVs(UWs5T2*2gIh@=Afv+b6 zLq(W3EC`q?g_5)Wh*Pk^Y}n@v=AGG0XUbqt0_bYhdiaSKcJKk6SMM}f4N^1&n}wEd zHisRuH`rYCWi)C_!5Dm>pY%tiK|Q9mZsbD{7U>QQ3^BY~c+9lgy;g z;@0`0E*Aq9zd`6XAc%uTMg%}Bqs4ThVYCa-;Y>{DdR_;lSXQ)J+!ANV+eDb&ctaT4 z7qbQyamgJhwtDz3&qn2>@`f_EQJk$iCd~XYhs)y<&7QdIg0re8$fskvvUg}Y%7Cd^ zclexAPz-yGp)fB-eR^HMl49@O+`>Ni+_AZiwiI8)T%@<_oxGvnfgy-k=B|74^|+2T zg}pvjm*f+I-VXOtvO_pv@HUH1JOS*Jgxj@2$uZE~Ytm|*Qtl?7788ZWsCNh#Zeq)z z!gg`miaWFKHRXqzoXf?!_s^u^m8#PckltP&swjHExD0C44$$r}I#T{4tQiKEXvH>6^1=QG z?1C*2HHn-lk`OsWq2lbawjjVdg(*fO>frwg_<^2nm-R_qz@_Jz858-R#!l#69hotB z!8qjO^Ey6bMl=$WNbm%s*%!3*`lUg4DPGjTF-X)L6tyvnF_Q6Da96M^qb8y>l3o`K zwu3jeMaTF*6Gem__WX8CxgO=c=fMC`dOqyECXHy9v&VR?_CB~Cu$GFM5%gbyqQP{P zF|-YCU1C!XdedJ*-|s@?=t;!k*bDv#_+|c# zAv_BN1E?&a%fa5n0gMeT#tldx7DtjEl2|LD$|hGD_2LH8F|D3X4!a#}p423?(6Ls) zdZHv*U@hjkgN#mj_3^_aBZnV--> z>|MEe;=%{lPE7RAWK7l9m?IZlxIdcS(6#1;Z$Hp672LS3rPP1!?iD`1cQ3M3y{rBW z+=Oo{e>=@hh%x14H2CKE=@Sz%r=ZUo>gO%pr~F0vaD%XV-W5IdL+?EIz_|k-+2eUE zRspZo-0`(X+U2iZ-h9T=dj|r+TiTrtlUcF%Dc`!rh*6Gs=u3VkzXyl5=M6qU-jo6=Vh1NR@*2@X-3!eaQ<-3q| zL6^ZHXvArKN7x17!{&qrisC)-bz+~#l#EAKgP;R*1PLe@GH^F3B~%RvJrjBq2o<3| zRr;>xMzR{Fe`KHvg1C+@wIVKUqp(J55Mxuw0g|L!NfxF=4aX+Pk5o$ilrH8Und30^ z3-zs$T0limY{Pug!>b*Nsz`z)Wd;KXCFhnXkN)|mpsva9Nj%c_;IqAq4^+Ire!bsl z?0@|=<&~Q9?hyftB)Q;db^xF(A&`#b@WWRhfiGFT25t&^9E?Pj?-(>aM^aN`*ndTW zE4J>MwgX&*ZKVh%v$hqpyY?q*6~XxLzg*A!<%+E{^LW0{mEC(_*N!}bG6To~i`oRKU~vY*^;pK{Y>{-{Mbiw^+~&DD7j6eK#^BP#%$-x8`>fG27~N5gx|GYI z>nK%iW+}fSm zU3sZjd8=3X+3T+j>V;QIPHXcLhASE!W>B#)CfR9oYrqO@k!((|&odgcz1egX*v}$s zGc)&X99+@ev3vX3t24fA&%8B@$5*ae&^@!MFm!nSca&#m;_3FS3r_4>fAx52)%=My zGnHZ_qjQ4|Iu@BdYhvpIM-E-S{^n~cIfNqc2Bsu?VD*pAU;LRxiJM~H3AdeLVy1*H z-+sn-&c6Jj!HZ&WZ01{h^ER~?%9DFPdwpqi!SIG{lm7&)kZ1XA-x@8hT)gkrO@kY| zk8XFPe-jVkDLad$=_#;+UBldk-mP{Nk+#Lu&Cnlh)e?f`SP7>O#9CDC(?qH+sr?84 ziGr~4ht#xbf{ai77{|Cqk5-R04mHlxIoi7e@Cy)MrQwG~r||o!kl!2bwhM`RKjGOo%=V-g^^=8r!Ky;~4d9^~9<1(&*^_=eq=lS0}b#*hOF; zaq11YKOh>Sh#Q1)NWKrXE>cIq%azAIg63q36H_OsF*(n2KxZRr5?LXW4b1~KMQA!) z%e~S*QZ`%XuiUTMaTEScQlQ$XMt21;&-eL$?he}-cRJE7|#KPf_F!9tD^3VS}H znlk96q#Os=7b2qK2;Ae`QvM5&)E{5yDuN>9Te^HwZ($|jPovF7d`vkUZ)v8PmXeK@;PIX_puE>-(!7) zH_dJqR{rIZqwjuoYaP@X?&JbA4+mlmVs0mh1GP6SHTVR`2!s@%_Q=>uN3roB^ABzR zh{6MCG>*-Y@dWz<>=5V;HX3|^4+QhKC5o zZ8*1S@Fc+rX+zLioI%&XMOq+LPE`UcC~}4&it-0g0iR*gL9wU>jsQ)A((wT{CNv=6 zhv-VDUpRoWP&8ijcIrPh4x>FLfMdl5z!+Rwz?Hb@lI2}q#<*(k_|bPC+B)R=x@B;| zHHTL2I=(CKTXOYJb{_rhq|9ygCVIYXE{%V4-M-@FTbFzm6j=Iy%ssj$H`x1+Ba+iM zPH{v35xS`NF+aiVW`{>&3kDao4yQaFF{(JIZFw&S8flE-gu;Vgpy9D(#pF?8lkr#- zmR)FgOFZ;Z7m9O_XFjf8}C&9eJi_(k*~jjG5uiQ>e+p}HZEAc{Tp+~ zj{aqJ@01rJCG*_h4!_Ezcdvis$P}|^qVP|9&UoyMGah^Sv2F34?9`D*)<1Odz@wR^ zx3%xRcF*_rtm+wN_B=gTurFFYFwPk7JpAT@>1TKDfBEJW3%F+_&~?Zoz;lfO5v4q6 z82^&;+Aj|+|HA8suDbmzOnS}g-uQigP+qz7!oNKGz=6TR0}nj=m$!gwRennyoWEr4 z-QT-s-MV|ecel4W);!Oh%Qa78T+iBL2xO`}_{1>`>Zgv54;_5yrN3Q#xAM;~AH3id zCUf8UpS^)GKeO-Xes1G#X8$wFJ2zbR{)Vr-e0*;0s{c5A#oX6-Fzc6%mOyO6Y-BF} z!(B|~)x+PJyy)Q#Tb~%*aNvx`enB^T=JI(*AK38lMUy*6r!QoNyI1UfdhhjnIzGQ_ z@6&rW+h<o`p0j0Q*9th2%$u=?C8DJCOfHu#N~e?%V7U*b|-E^mKJ@S@-fo!>w}z+!wA^(!5joJ#Z1u@Z7)O{6bIqkt^bt zUj37w-FV~AuHzR@e=2c(@sc|Gz5MX`%evWn>Zi_JID%|WpSfTu&T#%z;CZv(g7DKZ zE?`vt<}&)t&xJES{L2$h?L2Rno@sBhp1ICiS(a~mu48^j`;0O#>v=Bt zsg#~{;Kg9dtGwZgi7jC!ru_7i1QN1}Qi5hB-f21T1RmeN1{3|du;6>&rdY$?VB{h8{(*-6gnnXT%HH0yggQ>}-3QRTh4vBUb zR5(f@q3M&?X~V{;YEUAzj=;n;F2Q&824MSWoTLPJ{iDcF%0DHEQK>kKszLdyCRX<# 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

    1#@cCVE3;azHq1#whn4UC` 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
    ~ytzk%GMChkO5u<{c4g1#v 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%0A@LleEU|(dv^lhig)-HO675M8`z2E28 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�CtN9?lUv5eqG~QZGb?Bu?)5P4J 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
    !|9gL##QKK%G5Bk%Z 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 z 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 z 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
    G=^XrOnhjZ%=diE3cF{?-iEf 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%0DV47O;L^Y!SXUtd_5xCAc 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 z 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

    W>I2EYOFvJU^heK*w9dHu%sx` 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

    w-}2EESzEdA0W-{|+Vaxe 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 Ef3EZ-m;e9( literal 0 HcmV?d00001 diff --git a/debian/extra/libraries/font_symbols_nerdfont_mono_regular.lua b/debian/extra/libraries/font_symbols_nerdfont_mono_regular.lua new file mode 100644 index 0000000..16a0e26 --- /dev/null +++ b/debian/extra/libraries/font_symbols_nerdfont_mono_regular.lua @@ -0,0 +1,9372 @@ +-- To obtain the mapping: +--[[ +wget -qO - https://github.com/ryanoasis/nerd-fonts/raw/master/glyphnames.json \ +| jq -r 'with_entries(select(.key != "METADATA")) | keys_unsorted[] as $keys | "\($keys)\t\(.[$keys] | .code)"' \ +| awk ' + BEGIN { + printf "{\n" + } + { + printf " [\"%s\"] = 0x%s,\n", $1, $2 + } + END { + printf "}\n" + }' +--]] + +local codepoints = { + ["cod-account"] = 0xeb99, + ["cod-activate_breakpoints"] = 0xea97, + ["cod-add"] = 0xea60, + ["cod-archive"] = 0xea98, + ["cod-arrow_both"] = 0xea99, + ["cod-arrow_down"] = 0xea9a, + ["cod-arrow_left"] = 0xea9b, + ["cod-arrow_right"] = 0xea9c, + ["cod-arrow_small_down"] = 0xea9d, + ["cod-arrow_small_left"] = 0xea9e, + ["cod-arrow_small_right"] = 0xea9f, + ["cod-arrow_small_up"] = 0xeaa0, + ["cod-arrow_swap"] = 0xebcb, + ["cod-arrow_up"] = 0xeaa1, + ["cod-azure"] = 0xebd8, + ["cod-azure_devops"] = 0xebe8, + ["cod-beaker"] = 0xea79, + ["cod-beaker_stop"] = 0xebe1, + ["cod-bell"] = 0xeaa2, + ["cod-bell_dot"] = 0xeb9a, + ["cod-bold"] = 0xeaa3, + ["cod-book"] = 0xeaa4, + ["cod-bookmark"] = 0xeaa5, + ["cod-bracket_dot"] = 0xebe5, + ["cod-bracket_error"] = 0xebe6, + ["cod-briefcase"] = 0xeaac, + ["cod-broadcast"] = 0xeaad, + ["cod-browser"] = 0xeaae, + ["cod-bug"] = 0xeaaf, + ["cod-calendar"] = 0xeab0, + ["cod-call_incoming"] = 0xeb92, + ["cod-call_outgoing"] = 0xeb93, + ["cod-case_sensitive"] = 0xeab1, + ["cod-check"] = 0xeab2, + ["cod-check_all"] = 0xebb1, + ["cod-checklist"] = 0xeab3, + ["cod-chevron_down"] = 0xeab4, + ["cod-chevron_left"] = 0xeab5, + ["cod-chevron_right"] = 0xeab6, + ["cod-chevron_up"] = 0xeab7, + ["cod-chrome_close"] = 0xeab8, + ["cod-chrome_maximize"] = 0xeab9, + ["cod-chrome_minimize"] = 0xeaba, + ["cod-chrome_restore"] = 0xeabb, + ["cod-circle"] = 0xeabc, + ["cod-circle_filled"] = 0xea71, + ["cod-circle_large"] = 0xebb5, + ["cod-circle_large_filled"] = 0xebb4, + ["cod-circle_slash"] = 0xeabd, + ["cod-circle_small_filled"] = 0xeb8a, + ["cod-circuit_board"] = 0xeabe, + ["cod-clear_all"] = 0xeabf, + ["cod-clippy"] = 0xeac0, + ["cod-close"] = 0xea76, + ["cod-close_all"] = 0xeac1, + ["cod-cloud"] = 0xebaa, + ["cod-cloud_download"] = 0xeac2, + ["cod-cloud_upload"] = 0xeac3, + ["cod-code"] = 0xeac4, + ["cod-collapse_all"] = 0xeac5, + ["cod-color_mode"] = 0xeac6, + ["cod-combine"] = 0xebb6, + ["cod-comment"] = 0xea6b, + ["cod-comment_discussion"] = 0xeac7, + ["cod-compass"] = 0xebd5, + ["cod-compass_active"] = 0xebd7, + ["cod-compass_dot"] = 0xebd6, + ["cod-copy"] = 0xebcc, + ["cod-credit_card"] = 0xeac9, + ["cod-dash"] = 0xeacc, + ["cod-dashboard"] = 0xeacd, + ["cod-database"] = 0xeace, + ["cod-debug"] = 0xead8, + ["cod-debug_all"] = 0xebdc, + ["cod-debug_alt"] = 0xeb91, + ["cod-debug_alt_small"] = 0xeba8, + ["cod-debug_breakpoint_conditional"] = 0xeaa7, + ["cod-debug_breakpoint_conditional_unverified"] = 0xeaa6, + ["cod-debug_breakpoint_data"] = 0xeaa9, + ["cod-debug_breakpoint_data_unverified"] = 0xeaa8, + ["cod-debug_breakpoint_function"] = 0xeb88, + ["cod-debug_breakpoint_function_unverified"] = 0xeb87, + ["cod-debug_breakpoint_log"] = 0xeaab, + ["cod-debug_breakpoint_log_unverified"] = 0xeaaa, + ["cod-debug_breakpoint_unsupported"] = 0xeb8c, + ["cod-debug_console"] = 0xeb9b, + ["cod-debug_continue"] = 0xeacf, + ["cod-debug_continue_small"] = 0xebe0, + ["cod-debug_coverage"] = 0xebdd, + ["cod-debug_disconnect"] = 0xead0, + ["cod-debug_line_by_line"] = 0xebd0, + ["cod-debug_pause"] = 0xead1, + ["cod-debug_rerun"] = 0xebc0, + ["cod-debug_restart"] = 0xead2, + ["cod-debug_restart_frame"] = 0xeb90, + ["cod-debug_reverse_continue"] = 0xeb8e, + ["cod-debug_stackframe"] = 0xeb8b, + ["cod-debug_stackframe_active"] = 0xeb89, + ["cod-debug_start"] = 0xead3, + ["cod-debug_step_back"] = 0xeb8f, + ["cod-debug_step_into"] = 0xead4, + ["cod-debug_step_out"] = 0xead5, + ["cod-debug_step_over"] = 0xead6, + ["cod-debug_stop"] = 0xead7, + ["cod-desktop_download"] = 0xea78, + ["cod-device_camera"] = 0xeada, + ["cod-device_camera_video"] = 0xead9, + ["cod-device_mobile"] = 0xeadb, + ["cod-diff"] = 0xeae1, + ["cod-diff_added"] = 0xeadc, + ["cod-diff_ignored"] = 0xeadd, + ["cod-diff_modified"] = 0xeade, + ["cod-diff_removed"] = 0xeadf, + ["cod-diff_renamed"] = 0xeae0, + ["cod-discard"] = 0xeae2, + ["cod-edit"] = 0xea73, + ["cod-editor_layout"] = 0xeae3, + ["cod-ellipsis"] = 0xea7c, + ["cod-empty_window"] = 0xeae4, + ["cod-error"] = 0xea87, + ["cod-exclude"] = 0xeae5, + ["cod-expand_all"] = 0xeb95, + ["cod-export"] = 0xebac, + ["cod-extensions"] = 0xeae6, + ["cod-eye"] = 0xea70, + ["cod-eye_closed"] = 0xeae7, + ["cod-feedback"] = 0xeb96, + ["cod-file"] = 0xea7b, + ["cod-file_binary"] = 0xeae8, + ["cod-file_code"] = 0xeae9, + ["cod-file_media"] = 0xeaea, + ["cod-file_pdf"] = 0xeaeb, + ["cod-file_submodule"] = 0xeaec, + ["cod-file_symlink_directory"] = 0xeaed, + ["cod-file_symlink_file"] = 0xeaee, + ["cod-file_zip"] = 0xeaef, + ["cod-files"] = 0xeaf0, + ["cod-filter"] = 0xeaf1, + ["cod-filter_filled"] = 0xebce, + ["cod-flame"] = 0xeaf2, + ["cod-fold"] = 0xeaf5, + ["cod-fold_down"] = 0xeaf3, + ["cod-fold_up"] = 0xeaf4, + ["cod-folder"] = 0xea83, + ["cod-folder_active"] = 0xeaf6, + ["cod-folder_library"] = 0xebdf, + ["cod-folder_opened"] = 0xeaf7, + ["cod-gear"] = 0xeaf8, + ["cod-gift"] = 0xeaf9, + ["cod-gist_secret"] = 0xeafa, + ["cod-git_commit"] = 0xeafc, + ["cod-git_compare"] = 0xeafd, + ["cod-git_merge"] = 0xeafe, + ["cod-git_pull_request"] = 0xea64, + ["cod-git_pull_request_closed"] = 0xebda, + ["cod-git_pull_request_create"] = 0xebbc, + ["cod-git_pull_request_draft"] = 0xebdb, + ["cod-github"] = 0xea84, + ["cod-github_action"] = 0xeaff, + ["cod-github_alt"] = 0xeb00, + ["cod-github_inverted"] = 0xeba1, + ["cod-globe"] = 0xeb01, + ["cod-go_to_file"] = 0xea94, + ["cod-grabber"] = 0xeb02, + ["cod-graph"] = 0xeb03, + ["cod-graph_left"] = 0xebad, + ["cod-graph_line"] = 0xebe2, + ["cod-graph_scatter"] = 0xebe3, + ["cod-gripper"] = 0xeb04, + ["cod-group_by_ref_type"] = 0xeb97, + ["cod-heart"] = 0xeb05, + ["cod-history"] = 0xea82, + ["cod-home"] = 0xeb06, + ["cod-horizontal_rule"] = 0xeb07, + ["cod-hubot"] = 0xeb08, + ["cod-inbox"] = 0xeb09, + ["cod-info"] = 0xea74, + ["cod-inspect"] = 0xebd1, + ["cod-issue_draft"] = 0xebd9, + ["cod-issue_reopened"] = 0xeb0b, + ["cod-issues"] = 0xeb0c, + ["cod-italic"] = 0xeb0d, + ["cod-jersey"] = 0xeb0e, + ["cod-json"] = 0xeb0f, + ["cod-kebab_vertical"] = 0xeb10, + ["cod-key"] = 0xeb11, + ["cod-law"] = 0xeb12, + ["cod-layers"] = 0xebd2, + ["cod-layers_active"] = 0xebd4, + ["cod-layers_dot"] = 0xebd3, + ["cod-layout"] = 0xebeb, + ["cod-library"] = 0xeb9c, + ["cod-lightbulb"] = 0xea61, + ["cod-lightbulb_autofix"] = 0xeb13, + ["cod-link"] = 0xeb15, + ["cod-link_external"] = 0xeb14, + ["cod-list_filter"] = 0xeb83, + ["cod-list_flat"] = 0xeb84, + ["cod-list_ordered"] = 0xeb16, + ["cod-list_selection"] = 0xeb85, + ["cod-list_tree"] = 0xeb86, + ["cod-list_unordered"] = 0xeb17, + ["cod-live_share"] = 0xeb18, + ["cod-loading"] = 0xeb19, + ["cod-location"] = 0xeb1a, + ["cod-lock"] = 0xea75, + ["cod-lock_small"] = 0xebe7, + ["cod-magnet"] = 0xebae, + ["cod-mail"] = 0xeb1c, + ["cod-mail_read"] = 0xeb1b, + ["cod-markdown"] = 0xeb1d, + ["cod-megaphone"] = 0xeb1e, + ["cod-mention"] = 0xeb1f, + ["cod-menu"] = 0xeb94, + ["cod-merge"] = 0xebab, + ["cod-milestone"] = 0xeb20, + ["cod-mirror"] = 0xea69, + ["cod-mortar_board"] = 0xeb21, + ["cod-move"] = 0xeb22, + ["cod-multiple_windows"] = 0xeb23, + ["cod-mute"] = 0xeb24, + ["cod-new_file"] = 0xea7f, + ["cod-new_folder"] = 0xea80, + ["cod-newline"] = 0xebea, + ["cod-no_newline"] = 0xeb25, + ["cod-note"] = 0xeb26, + ["cod-notebook"] = 0xebaf, + ["cod-notebook_template"] = 0xebbf, + ["cod-octoface"] = 0xeb27, + ["cod-open_preview"] = 0xeb28, + ["cod-organization"] = 0xea7e, + ["cod-output"] = 0xeb9d, + ["cod-package"] = 0xeb29, + ["cod-paintcan"] = 0xeb2a, + ["cod-pass"] = 0xeba4, + ["cod-pass_filled"] = 0xebb3, + ["cod-person"] = 0xea67, + ["cod-person_add"] = 0xebcd, + ["cod-pie_chart"] = 0xebe4, + ["cod-pin"] = 0xeb2b, + ["cod-pinned"] = 0xeba0, + ["cod-pinned_dirty"] = 0xebb2, + ["cod-play"] = 0xeb2c, + ["cod-play_circle"] = 0xeba6, + ["cod-plug"] = 0xeb2d, + ["cod-preserve_case"] = 0xeb2e, + ["cod-preview"] = 0xeb2f, + ["cod-primitive_square"] = 0xea72, + ["cod-project"] = 0xeb30, + ["cod-pulse"] = 0xeb31, + ["cod-question"] = 0xeb32, + ["cod-quote"] = 0xeb33, + ["cod-radio_tower"] = 0xeb34, + ["cod-reactions"] = 0xeb35, + ["cod-record"] = 0xeba7, + ["cod-record_keys"] = 0xea65, + ["cod-redo"] = 0xebb0, + ["cod-references"] = 0xeb36, + ["cod-refresh"] = 0xeb37, + ["cod-regex"] = 0xeb38, + ["cod-remote"] = 0xeb3a, + ["cod-remote_explorer"] = 0xeb39, + ["cod-remove"] = 0xeb3b, + ["cod-replace"] = 0xeb3d, + ["cod-replace_all"] = 0xeb3c, + ["cod-reply"] = 0xea7d, + ["cod-repo"] = 0xea62, + ["cod-repo_clone"] = 0xeb3e, + ["cod-repo_force_push"] = 0xeb3f, + ["cod-repo_forked"] = 0xea63, + ["cod-repo_pull"] = 0xeb40, + ["cod-repo_push"] = 0xeb41, + ["cod-report"] = 0xeb42, + ["cod-request_changes"] = 0xeb43, + ["cod-rocket"] = 0xeb44, + ["cod-root_folder"] = 0xeb46, + ["cod-root_folder_opened"] = 0xeb45, + ["cod-rss"] = 0xeb47, + ["cod-ruby"] = 0xeb48, + ["cod-run_above"] = 0xebbd, + ["cod-run_all"] = 0xeb9e, + ["cod-run_below"] = 0xebbe, + ["cod-run_errors"] = 0xebde, + ["cod-save"] = 0xeb4b, + ["cod-save_all"] = 0xeb49, + ["cod-save_as"] = 0xeb4a, + ["cod-screen_full"] = 0xeb4c, + ["cod-screen_normal"] = 0xeb4d, + ["cod-search"] = 0xea6d, + ["cod-search_stop"] = 0xeb4e, + ["cod-server"] = 0xeb50, + ["cod-server_environment"] = 0xeba3, + ["cod-server_process"] = 0xeba2, + ["cod-settings"] = 0xeb52, + ["cod-settings_gear"] = 0xeb51, + ["cod-shield"] = 0xeb53, + ["cod-sign_in"] = 0xea6f, + ["cod-sign_out"] = 0xea6e, + ["cod-smiley"] = 0xeb54, + ["cod-sort_precedence"] = 0xeb55, + ["cod-source_control"] = 0xea68, + ["cod-split_horizontal"] = 0xeb56, + ["cod-split_vertical"] = 0xeb57, + ["cod-squirrel"] = 0xeb58, + ["cod-star_empty"] = 0xea6a, + ["cod-star_full"] = 0xeb59, + ["cod-star_half"] = 0xeb5a, + ["cod-stop_circle"] = 0xeba5, + ["cod-symbol_array"] = 0xea8a, + ["cod-symbol_boolean"] = 0xea8f, + ["cod-symbol_class"] = 0xeb5b, + ["cod-symbol_color"] = 0xeb5c, + ["cod-symbol_constant"] = 0xeb5d, + ["cod-symbol_enum"] = 0xea95, + ["cod-symbol_enum_member"] = 0xeb5e, + ["cod-symbol_event"] = 0xea86, + ["cod-symbol_field"] = 0xeb5f, + ["cod-symbol_file"] = 0xeb60, + ["cod-symbol_interface"] = 0xeb61, + ["cod-symbol_key"] = 0xea93, + ["cod-symbol_keyword"] = 0xeb62, + ["cod-symbol_method"] = 0xea8c, + ["cod-symbol_misc"] = 0xeb63, + ["cod-symbol_namespace"] = 0xea8b, + ["cod-symbol_numeric"] = 0xea90, + ["cod-symbol_operator"] = 0xeb64, + ["cod-symbol_parameter"] = 0xea92, + ["cod-symbol_property"] = 0xeb65, + ["cod-symbol_ruler"] = 0xea96, + ["cod-symbol_snippet"] = 0xeb66, + ["cod-symbol_string"] = 0xeb8d, + ["cod-symbol_structure"] = 0xea91, + ["cod-symbol_variable"] = 0xea88, + ["cod-sync"] = 0xea77, + ["cod-sync_ignored"] = 0xeb9f, + ["cod-table"] = 0xebb7, + ["cod-tag"] = 0xea66, + ["cod-tasklist"] = 0xeb67, + ["cod-telescope"] = 0xeb68, + ["cod-terminal"] = 0xea85, + ["cod-terminal_bash"] = 0xebca, + ["cod-terminal_cmd"] = 0xebc4, + ["cod-terminal_debian"] = 0xebc5, + ["cod-terminal_linux"] = 0xebc6, + ["cod-terminal_powershell"] = 0xebc7, + ["cod-terminal_tmux"] = 0xebc8, + ["cod-terminal_ubuntu"] = 0xebc9, + ["cod-text_size"] = 0xeb69, + ["cod-three_bars"] = 0xeb6a, + ["cod-thumbsdown"] = 0xeb6b, + ["cod-thumbsup"] = 0xeb6c, + ["cod-tools"] = 0xeb6d, + ["cod-trash"] = 0xea81, + ["cod-triangle_down"] = 0xeb6e, + ["cod-triangle_left"] = 0xeb6f, + ["cod-triangle_right"] = 0xeb70, + ["cod-triangle_up"] = 0xeb71, + ["cod-twitter"] = 0xeb72, + ["cod-type_hierarchy"] = 0xebb9, + ["cod-type_hierarchy_sub"] = 0xebba, + ["cod-type_hierarchy_super"] = 0xebbb, + ["cod-unfold"] = 0xeb73, + ["cod-ungroup_by_ref_type"] = 0xeb98, + ["cod-unlock"] = 0xeb74, + ["cod-unmute"] = 0xeb75, + ["cod-unverified"] = 0xeb76, + ["cod-variable_group"] = 0xebb8, + ["cod-verified"] = 0xeb77, + ["cod-verified_filled"] = 0xebe9, + ["cod-versions"] = 0xeb78, + ["cod-vm"] = 0xea7a, + ["cod-vm_active"] = 0xeb79, + ["cod-vm_connect"] = 0xeba9, + ["cod-vm_outline"] = 0xeb7a, + ["cod-vm_running"] = 0xeb7b, + ["cod-wand"] = 0xebcf, + ["cod-warning"] = 0xea6c, + ["cod-watch"] = 0xeb7c, + ["cod-whitespace"] = 0xeb7d, + ["cod-whole_word"] = 0xeb7e, + ["cod-window"] = 0xeb7f, + ["cod-word_wrap"] = 0xeb80, + ["cod-workspace_trusted"] = 0xebc1, + ["cod-workspace_unknown"] = 0xebc3, + ["cod-workspace_untrusted"] = 0xebc2, + ["cod-zoom_in"] = 0xeb81, + ["cod-zoom_out"] = 0xeb82, + ["custom-asm"] = 0xe6ab, + ["custom-c"] = 0xe61e, + ["custom-common_lisp"] = 0xe6b0, + ["custom-cpp"] = 0xe61d, + ["custom-crystal"] = 0xe62f, + ["custom-default"] = 0xe612, + ["custom-electron"] = 0xe62e, + ["custom-elixir"] = 0xe62d, + ["custom-elm"] = 0xe62c, + ["custom-emacs"] = 0xe632, + ["custom-fennel"] = 0xe6af, + ["custom-folder"] = 0xe5ff, + ["custom-folder_config"] = 0xe5fc, + ["custom-folder_git"] = 0xe5fb, + ["custom-folder_git_branch"] = 0xe5fb, + ["custom-folder_github"] = 0xe5fd, + ["custom-folder_npm"] = 0xe5fa, + ["custom-folder_oct"] = 0xe6ad, + ["custom-folder_open"] = 0xe5fe, + ["custom-go"] = 0xe626, + ["custom-home"] = 0xe617, + ["custom-kotlin"] = 0xe634, + ["custom-msdos"] = 0xe629, + ["custom-neovim"] = 0xe6ae, + ["custom-orgmode"] = 0xe633, + ["custom-play_arrow"] = 0xe602, + ["custom-puppet"] = 0xe631, + ["custom-purescript"] = 0xe630, + ["custom-scheme"] = 0xe6b1, + ["custom-toml"] = 0xe6b2, + ["custom-v_lang"] = 0xe6ac, + ["custom-vim"] = 0xe62b, + ["custom-windows"] = 0xe62a, + ["dev-android"] = 0xe70e, + ["dev-angular"] = 0xe753, + ["dev-appcelerator"] = 0xe7ab, + ["dev-apple"] = 0xe711, + ["dev-appstore"] = 0xe713, + ["dev-aptana"] = 0xe799, + ["dev-asterisk"] = 0xe7ac, + ["dev-atlassian"] = 0xe75b, + ["dev-atom"] = 0xe764, + ["dev-aws"] = 0xe7ad, + ["dev-backbone"] = 0xe752, + ["dev-bing_small"] = 0xe700, + ["dev-bintray"] = 0xe794, + ["dev-bitbucket"] = 0xe703, + ["dev-blackberry"] = 0xe723, + ["dev-bootstrap"] = 0xe747, + ["dev-bower"] = 0xe74d, + ["dev-brackets"] = 0xe79d, + ["dev-bugsense"] = 0xe78d, + ["dev-celluloid"] = 0xe76b, + ["dev-chart"] = 0xe760, + ["dev-chrome"] = 0xe743, + ["dev-cisco"] = 0xe765, + ["dev-clojure"] = 0xe768, + ["dev-clojure_alt"] = 0xe76a, + ["dev-cloud9"] = 0xe79f, + ["dev-coda"] = 0xe793, + ["dev-code"] = 0xe796, + ["dev-code_badge"] = 0xe7a3, + ["dev-codeigniter"] = 0xe780, + ["dev-codepen"] = 0xe716, + ["dev-codrops"] = 0xe72f, + ["dev-coffeescript"] = 0xe751, + ["dev-compass"] = 0xe761, + ["dev-composer"] = 0xe783, + ["dev-creativecommons"] = 0xe789, + ["dev-creativecommons_badge"] = 0xe78a, + ["dev-css3"] = 0xe749, + ["dev-css3_full"] = 0xe74a, + ["dev-css_tricks"] = 0xe701, + ["dev-cssdeck"] = 0xe72a, + ["dev-dart"] = 0xe798, + ["dev-database"] = 0xe706, + ["dev-debian"] = 0xe77d, + ["dev-digital_ocean"] = 0xe7ae, + ["dev-django"] = 0xe71d, + ["dev-dlang"] = 0xe7af, + ["dev-docker"] = 0xe7b0, + ["dev-doctrine"] = 0xe774, + ["dev-dojo"] = 0xe71c, + ["dev-dotnet"] = 0xe77f, + ["dev-dreamweaver"] = 0xe79c, + ["dev-dropbox"] = 0xe707, + ["dev-drupal"] = 0xe742, + ["dev-eclipse"] = 0xe79e, + ["dev-ember"] = 0xe71b, + ["dev-envato"] = 0xe75d, + ["dev-erlang"] = 0xe7b1, + ["dev-extjs"] = 0xe78e, + ["dev-firebase"] = 0xe787, + ["dev-firefox"] = 0xe745, + ["dev-fsharp"] = 0xe7a7, + ["dev-ghost"] = 0xe71f, + ["dev-ghost_small"] = 0xe714, + ["dev-git"] = 0xe702, + ["dev-git_branch"] = 0xe725, + ["dev-git_commit"] = 0xe729, + ["dev-git_compare"] = 0xe728, + ["dev-git_merge"] = 0xe727, + ["dev-git_pull_request"] = 0xe726, + ["dev-github"] = 0xe70a, + ["dev-github_alt"] = 0xe708, + ["dev-github_badge"] = 0xe709, + ["dev-github_full"] = 0xe717, + ["dev-gnu"] = 0xe779, + ["dev-go"] = 0xe724, + ["dev-google_cloud_platform"] = 0xe7b2, + ["dev-google_drive"] = 0xe731, + ["dev-grails"] = 0xe7b3, + ["dev-groovy"] = 0xe775, + ["dev-grunt"] = 0xe74c, + ["dev-gulp"] = 0xe763, + ["dev-hackernews"] = 0xe71a, + ["dev-haskell"] = 0xe777, + ["dev-heroku"] = 0xe77b, + ["dev-html5"] = 0xe736, + ["dev-html5_3d_effects"] = 0xe735, + ["dev-html5_connectivity"] = 0xe734, + ["dev-html5_device_access"] = 0xe733, + ["dev-html5_multimedia"] = 0xe732, + ["dev-ie"] = 0xe744, + ["dev-illustrator"] = 0xe7b4, + ["dev-intellij"] = 0xe7b5, + ["dev-ionic"] = 0xe7a9, + ["dev-java"] = 0xe738, + ["dev-javascript"] = 0xe74e, + ["dev-javascript_badge"] = 0xe781, + ["dev-javascript_shield"] = 0xe74f, + ["dev-jekyll_small"] = 0xe70d, + ["dev-jenkins"] = 0xe767, + ["dev-jira"] = 0xe75c, + ["dev-joomla"] = 0xe741, + ["dev-jquery"] = 0xe750, + ["dev-jquery_ui"] = 0xe754, + ["dev-komodo"] = 0xe792, + ["dev-krakenjs"] = 0xe785, + ["dev-krakenjs_badge"] = 0xe784, + ["dev-laravel"] = 0xe73f, + ["dev-less"] = 0xe758, + ["dev-linux"] = 0xe712, + ["dev-magento"] = 0xe740, + ["dev-mailchimp"] = 0xe79a, + ["dev-markdown"] = 0xe73e, + ["dev-materializecss"] = 0xe7b6, + ["dev-meteor"] = 0xe7a5, + ["dev-meteorfull"] = 0xe7a6, + ["dev-mitlicence"] = 0xe78b, + ["dev-modernizr"] = 0xe720, + ["dev-mongodb"] = 0xe7a4, + ["dev-mootools"] = 0xe790, + ["dev-mootools_badge"] = 0xe78f, + ["dev-mozilla"] = 0xe786, + ["dev-msql_server"] = 0xe77c, + ["dev-mysql"] = 0xe704, + ["dev-nancy"] = 0xe766, + ["dev-netbeans"] = 0xe79b, + ["dev-netmagazine"] = 0xe72e, + ["dev-nginx"] = 0xe776, + ["dev-nodejs"] = 0xe719, + ["dev-nodejs_small"] = 0xe718, + ["dev-npm"] = 0xe71e, + ["dev-onedrive"] = 0xe762, + ["dev-openshift"] = 0xe7b7, + ["dev-opensource"] = 0xe771, + ["dev-opera"] = 0xe746, + ["dev-perl"] = 0xe769, + ["dev-phonegap"] = 0xe730, + ["dev-photoshop"] = 0xe7b8, + ["dev-php"] = 0xe73d, + ["dev-postgresql"] = 0xe76e, + ["dev-prolog"] = 0xe7a1, + ["dev-python"] = 0xe73c, + ["dev-rackspace"] = 0xe7b9, + ["dev-raphael"] = 0xe75f, + ["dev-rasberry_pi"] = 0xe722, + ["dev-react"] = 0xe7ba, + ["dev-redhat"] = 0xe7bb, + ["dev-redis"] = 0xe76d, + ["dev-requirejs"] = 0xe770, + ["dev-responsive"] = 0xe797, + ["dev-ruby"] = 0xe739, + ["dev-ruby_on_rails"] = 0xe73b, + ["dev-ruby_rough"] = 0xe791, + ["dev-rust"] = 0xe7a8, + ["dev-safari"] = 0xe748, + ["dev-sass"] = 0xe74b, + ["dev-scala"] = 0xe737, + ["dev-scriptcs"] = 0xe7bc, + ["dev-scrum"] = 0xe7a0, + ["dev-senchatouch"] = 0xe78c, + ["dev-sizzlejs"] = 0xe788, + ["dev-smashing_magazine"] = 0xe72d, + ["dev-snap_svg"] = 0xe75e, + ["dev-sqllite"] = 0xe7c4, + ["dev-stackoverflow"] = 0xe710, + ["dev-streamline"] = 0xe705, + ["dev-stylus"] = 0xe759, + ["dev-sublime"] = 0xe7aa, + ["dev-swift"] = 0xe755, + ["dev-symfony"] = 0xe756, + ["dev-symfony_badge"] = 0xe757, + ["dev-techcrunch"] = 0xe72c, + ["dev-terminal"] = 0xe795, + ["dev-terminal_badge"] = 0xe7a2, + ["dev-travis"] = 0xe77e, + ["dev-trello"] = 0xe75a, + ["dev-typo3"] = 0xe772, + ["dev-ubuntu"] = 0xe73a, + ["dev-uikit"] = 0xe773, + ["dev-unity_small"] = 0xe721, + ["dev-vim"] = 0xe7c5, + ["dev-visualstudio"] = 0xe70c, + ["dev-w3c"] = 0xe76c, + ["dev-webplatform"] = 0xe76f, + ["dev-windows"] = 0xe70f, + ["dev-wordpress"] = 0xe70b, + ["dev-yahoo"] = 0xe715, + ["dev-yahoo_small"] = 0xe72b, + ["dev-yeoman"] = 0xe77a, + ["dev-yii"] = 0xe782, + ["dev-zend"] = 0xe778, + ["fa-500px"] = 0xf26e, + ["fa-address_book"] = 0xf2b9, + ["fa-address_book_o"] = 0xf2ba, + ["fa-address_card"] = 0xf2bb, + ["fa-address_card_o"] = 0xf2bc, + ["fa-adjust"] = 0xf042, + ["fa-adn"] = 0xf170, + ["fa-align_center"] = 0xf037, + ["fa-align_justify"] = 0xf039, + ["fa-align_left"] = 0xf036, + ["fa-align_right"] = 0xf038, + ["fa-amazon"] = 0xf270, + ["fa-ambulance"] = 0xf0f9, + ["fa-american_sign_language_interpreting"] = 0xf2a3, + ["fa-anchor"] = 0xf13d, + ["fa-android"] = 0xf17b, + ["fa-angellist"] = 0xf209, + ["fa-angle_double_down"] = 0xf103, + ["fa-angle_double_left"] = 0xf100, + ["fa-angle_double_right"] = 0xf101, + ["fa-angle_double_up"] = 0xf102, + ["fa-angle_down"] = 0xf107, + ["fa-angle_left"] = 0xf104, + ["fa-angle_right"] = 0xf105, + ["fa-angle_up"] = 0xf106, + ["fa-apple"] = 0xf179, + ["fa-archive"] = 0xf187, + ["fa-area_chart"] = 0xf1fe, + ["fa-arrow_circle_down"] = 0xf0ab, + ["fa-arrow_circle_left"] = 0xf0a8, + ["fa-arrow_circle_o_down"] = 0xf01a, + ["fa-arrow_circle_o_left"] = 0xf190, + ["fa-arrow_circle_o_right"] = 0xf18e, + ["fa-arrow_circle_o_up"] = 0xf01b, + ["fa-arrow_circle_right"] = 0xf0a9, + ["fa-arrow_circle_up"] = 0xf0aa, + ["fa-arrow_down"] = 0xf063, + ["fa-arrow_left"] = 0xf060, + ["fa-arrow_right"] = 0xf061, + ["fa-arrow_up"] = 0xf062, + ["fa-arrows"] = 0xf047, + ["fa-arrows_alt"] = 0xf0b2, + ["fa-arrows_h"] = 0xf07e, + ["fa-arrows_v"] = 0xf07d, + ["fa-asl_interpreting"] = 0xf2a3, + ["fa-assistive_listening_systems"] = 0xf2a2, + ["fa-asterisk"] = 0xf069, + ["fa-at"] = 0xf1fa, + ["fa-audio_description"] = 0xf29e, + ["fa-automobile"] = 0xf1b9, + ["fa-backward"] = 0xf04a, + ["fa-balance_scale"] = 0xf24e, + ["fa-ban"] = 0xf05e, + ["fa-bandcamp"] = 0xf2d5, + ["fa-bank"] = 0xf19c, + ["fa-bar_chart"] = 0xf080, + ["fa-bar_chart_o"] = 0xf080, + ["fa-barcode"] = 0xf02a, + ["fa-bars"] = 0xf0c9, + ["fa-bath"] = 0xf2cd, + ["fa-bathtub"] = 0xf2cd, + ["fa-battery"] = 0xf240, + ["fa-battery_0"] = 0xf244, + ["fa-battery_1"] = 0xf243, + ["fa-battery_2"] = 0xf242, + ["fa-battery_3"] = 0xf241, + ["fa-battery_4"] = 0xf240, + ["fa-battery_empty"] = 0xf244, + ["fa-battery_full"] = 0xf240, + ["fa-battery_half"] = 0xf242, + ["fa-battery_quarter"] = 0xf243, + ["fa-battery_three_quarters"] = 0xf241, + ["fa-bed"] = 0xf236, + ["fa-beer"] = 0xf0fc, + ["fa-behance"] = 0xf1b4, + ["fa-behance_square"] = 0xf1b5, + ["fa-bell"] = 0xf0f3, + ["fa-bell_o"] = 0xf0a2, + ["fa-bell_slash"] = 0xf1f6, + ["fa-bell_slash_o"] = 0xf1f7, + ["fa-bicycle"] = 0xf206, + ["fa-binoculars"] = 0xf1e5, + ["fa-birthday_cake"] = 0xf1fd, + ["fa-bitbucket"] = 0xf171, + ["fa-bitbucket_square"] = 0xf172, + ["fa-bitcoin"] = 0xf15a, + ["fa-black_tie"] = 0xf27e, + ["fa-blind"] = 0xf29d, + ["fa-bluetooth"] = 0xf293, + ["fa-bluetooth_b"] = 0xf294, + ["fa-bold"] = 0xf032, + ["fa-bolt"] = 0xf0e7, + ["fa-bomb"] = 0xf1e2, + ["fa-book"] = 0xf02d, + ["fa-bookmark"] = 0xf02e, + ["fa-bookmark_o"] = 0xf097, + ["fa-braille"] = 0xf2a1, + ["fa-briefcase"] = 0xf0b1, + ["fa-btc"] = 0xf15a, + ["fa-bug"] = 0xf188, + ["fa-building"] = 0xf1ad, + ["fa-building_o"] = 0xf0f7, + ["fa-bullhorn"] = 0xf0a1, + ["fa-bullseye"] = 0xf140, + ["fa-bus"] = 0xf207, + ["fa-buysellads"] = 0xf20d, + ["fa-cab"] = 0xf1ba, + ["fa-calculator"] = 0xf1ec, + ["fa-calendar"] = 0xf073, + ["fa-calendar_check_o"] = 0xf274, + ["fa-calendar_minus_o"] = 0xf272, + ["fa-calendar_o"] = 0xf133, + ["fa-calendar_plus_o"] = 0xf271, + ["fa-calendar_times_o"] = 0xf273, + ["fa-camera"] = 0xf030, + ["fa-camera_retro"] = 0xf083, + ["fa-car"] = 0xf1b9, + ["fa-caret_down"] = 0xf0d7, + ["fa-caret_left"] = 0xf0d9, + ["fa-caret_right"] = 0xf0da, + ["fa-caret_square_o_down"] = 0xf150, + ["fa-caret_square_o_left"] = 0xf191, + ["fa-caret_square_o_right"] = 0xf152, + ["fa-caret_square_o_up"] = 0xf151, + ["fa-caret_up"] = 0xf0d8, + ["fa-cart_arrow_down"] = 0xf218, + ["fa-cart_plus"] = 0xf217, + ["fa-cc"] = 0xf20a, + ["fa-cc_amex"] = 0xf1f3, + ["fa-cc_diners_club"] = 0xf24c, + ["fa-cc_discover"] = 0xf1f2, + ["fa-cc_jcb"] = 0xf24b, + ["fa-cc_mastercard"] = 0xf1f1, + ["fa-cc_paypal"] = 0xf1f4, + ["fa-cc_stripe"] = 0xf1f5, + ["fa-cc_visa"] = 0xf1f0, + ["fa-certificate"] = 0xf0a3, + ["fa-chain"] = 0xf0c1, + ["fa-chain_broken"] = 0xf127, + ["fa-check"] = 0xf00c, + ["fa-check_circle"] = 0xf058, + ["fa-check_circle_o"] = 0xf05d, + ["fa-check_square"] = 0xf14a, + ["fa-check_square_o"] = 0xf046, + ["fa-chevron_circle_down"] = 0xf13a, + ["fa-chevron_circle_left"] = 0xf137, + ["fa-chevron_circle_right"] = 0xf138, + ["fa-chevron_circle_up"] = 0xf139, + ["fa-chevron_down"] = 0xf078, + ["fa-chevron_left"] = 0xf053, + ["fa-chevron_right"] = 0xf054, + ["fa-chevron_up"] = 0xf077, + ["fa-child"] = 0xf1ae, + ["fa-chrome"] = 0xf268, + ["fa-circle"] = 0xf111, + ["fa-circle_o"] = 0xf10c, + ["fa-circle_o_notch"] = 0xf1ce, + ["fa-circle_thin"] = 0xf1db, + ["fa-clipboard"] = 0xf0ea, + ["fa-clock_o"] = 0xf017, + ["fa-clone"] = 0xf24d, + ["fa-close"] = 0xf00d, + ["fa-cloud"] = 0xf0c2, + ["fa-cloud_download"] = 0xf0ed, + ["fa-cloud_upload"] = 0xf0ee, + ["fa-cny"] = 0xf157, + ["fa-code"] = 0xf121, + ["fa-code_fork"] = 0xf126, + ["fa-codepen"] = 0xf1cb, + ["fa-codiepie"] = 0xf284, + ["fa-coffee"] = 0xf0f4, + ["fa-cog"] = 0xf013, + ["fa-cogs"] = 0xf085, + ["fa-columns"] = 0xf0db, + ["fa-comment"] = 0xf075, + ["fa-comment_o"] = 0xf0e5, + ["fa-commenting"] = 0xf27a, + ["fa-commenting_o"] = 0xf27b, + ["fa-comments"] = 0xf086, + ["fa-comments_o"] = 0xf0e6, + ["fa-compass"] = 0xf14e, + ["fa-compress"] = 0xf066, + ["fa-connectdevelop"] = 0xf20e, + ["fa-contao"] = 0xf26d, + ["fa-copy"] = 0xf0c5, + ["fa-copyright"] = 0xf1f9, + ["fa-creative_commons"] = 0xf25e, + ["fa-credit_card"] = 0xf09d, + ["fa-credit_card_alt"] = 0xf283, + ["fa-crop"] = 0xf125, + ["fa-crosshairs"] = 0xf05b, + ["fa-css3"] = 0xf13c, + ["fa-cube"] = 0xf1b2, + ["fa-cubes"] = 0xf1b3, + ["fa-cut"] = 0xf0c4, + ["fa-cutlery"] = 0xf0f5, + ["fa-dashboard"] = 0xf0e4, + ["fa-dashcube"] = 0xf210, + ["fa-database"] = 0xf1c0, + ["fa-deaf"] = 0xf2a4, + ["fa-deafness"] = 0xf2a4, + ["fa-dedent"] = 0xf03b, + ["fa-delicious"] = 0xf1a5, + ["fa-desktop"] = 0xf108, + ["fa-deviantart"] = 0xf1bd, + ["fa-diamond"] = 0xf219, + ["fa-digg"] = 0xf1a6, + ["fa-dollar"] = 0xf155, + ["fa-dot_circle_o"] = 0xf192, + ["fa-download"] = 0xf019, + ["fa-dribbble"] = 0xf17d, + ["fa-drivers_license"] = 0xf2c2, + ["fa-drivers_license_o"] = 0xf2c3, + ["fa-dropbox"] = 0xf16b, + ["fa-drupal"] = 0xf1a9, + ["fa-edge"] = 0xf282, + ["fa-edit"] = 0xf044, + ["fa-eercast"] = 0xf2da, + ["fa-eject"] = 0xf052, + ["fa-ellipsis_h"] = 0xf141, + ["fa-ellipsis_v"] = 0xf142, + ["fa-empire"] = 0xf1d1, + ["fa-envelope"] = 0xf0e0, + ["fa-envelope_o"] = 0xf003, + ["fa-envelope_open"] = 0xf2b6, + ["fa-envelope_open_o"] = 0xf2b7, + ["fa-envelope_square"] = 0xf199, + ["fa-envira"] = 0xf299, + ["fa-eraser"] = 0xf12d, + ["fa-etsy"] = 0xf2d7, + ["fa-eur"] = 0xf153, + ["fa-euro"] = 0xf153, + ["fa-exchange"] = 0xf0ec, + ["fa-exclamation"] = 0xf12a, + ["fa-exclamation_circle"] = 0xf06a, + ["fa-exclamation_triangle"] = 0xf071, + ["fa-expand"] = 0xf065, + ["fa-expeditedssl"] = 0xf23e, + ["fa-external_link"] = 0xf08e, + ["fa-external_link_square"] = 0xf14c, + ["fa-eye"] = 0xf06e, + ["fa-eye_slash"] = 0xf070, + ["fa-eyedropper"] = 0xf1fb, + ["fa-fa"] = 0xf2b4, + ["fa-facebook"] = 0xf09a, + ["fa-facebook_f"] = 0xf09a, + ["fa-facebook_official"] = 0xf230, + ["fa-facebook_square"] = 0xf082, + ["fa-fast_backward"] = 0xf049, + ["fa-fast_forward"] = 0xf050, + ["fa-fax"] = 0xf1ac, + ["fa-feed"] = 0xf09e, + ["fa-female"] = 0xf182, + ["fa-fighter_jet"] = 0xf0fb, + ["fa-file"] = 0xf15b, + ["fa-file_archive_o"] = 0xf1c6, + ["fa-file_audio_o"] = 0xf1c7, + ["fa-file_code_o"] = 0xf1c9, + ["fa-file_excel_o"] = 0xf1c3, + ["fa-file_image_o"] = 0xf1c5, + ["fa-file_movie_o"] = 0xf1c8, + ["fa-file_o"] = 0xf016, + ["fa-file_pdf_o"] = 0xf1c1, + ["fa-file_photo_o"] = 0xf1c5, + ["fa-file_picture_o"] = 0xf1c5, + ["fa-file_powerpoint_o"] = 0xf1c4, + ["fa-file_sound_o"] = 0xf1c7, + ["fa-file_text"] = 0xf15c, + ["fa-file_text_o"] = 0xf0f6, + ["fa-file_video_o"] = 0xf1c8, + ["fa-file_word_o"] = 0xf1c2, + ["fa-file_zip_o"] = 0xf1c6, + ["fa-files_o"] = 0xf0c5, + ["fa-film"] = 0xf008, + ["fa-filter"] = 0xf0b0, + ["fa-fire"] = 0xf06d, + ["fa-fire_extinguisher"] = 0xf134, + ["fa-firefox"] = 0xf269, + ["fa-first_order"] = 0xf2b0, + ["fa-flag"] = 0xf024, + ["fa-flag_checkered"] = 0xf11e, + ["fa-flag_o"] = 0xf11d, + ["fa-flash"] = 0xf0e7, + ["fa-flask"] = 0xf0c3, + ["fa-flickr"] = 0xf16e, + ["fa-floppy_o"] = 0xf0c7, + ["fa-folder"] = 0xf07b, + ["fa-folder_o"] = 0xf114, + ["fa-folder_open"] = 0xf07c, + ["fa-folder_open_o"] = 0xf115, + ["fa-font"] = 0xf031, + ["fa-font_awesome"] = 0xf2b4, + ["fa-fonticons"] = 0xf280, + ["fa-fort_awesome"] = 0xf286, + ["fa-forumbee"] = 0xf211, + ["fa-forward"] = 0xf04e, + ["fa-foursquare"] = 0xf180, + ["fa-free_code_camp"] = 0xf2c5, + ["fa-frown_o"] = 0xf119, + ["fa-futbol_o"] = 0xf1e3, + ["fa-gamepad"] = 0xf11b, + ["fa-gavel"] = 0xf0e3, + ["fa-gbp"] = 0xf154, + ["fa-ge"] = 0xf1d1, + ["fa-gear"] = 0xf013, + ["fa-gears"] = 0xf085, + ["fa-genderless"] = 0xf22d, + ["fa-get_pocket"] = 0xf265, + ["fa-gg"] = 0xf260, + ["fa-gg_circle"] = 0xf261, + ["fa-gift"] = 0xf06b, + ["fa-git"] = 0xf1d3, + ["fa-git_square"] = 0xf1d2, + ["fa-github"] = 0xf09b, + ["fa-github_alt"] = 0xf113, + ["fa-github_square"] = 0xf092, + ["fa-gitlab"] = 0xf296, + ["fa-gittip"] = 0xf184, + ["fa-glass"] = 0xf000, + ["fa-glide"] = 0xf2a5, + ["fa-glide_g"] = 0xf2a6, + ["fa-globe"] = 0xf0ac, + ["fa-google"] = 0xf1a0, + ["fa-google_plus"] = 0xf0d5, + ["fa-google_plus_circle"] = 0xf2b3, + ["fa-google_plus_official"] = 0xf2b3, + ["fa-google_plus_square"] = 0xf0d4, + ["fa-google_wallet"] = 0xf1ee, + ["fa-graduation_cap"] = 0xf19d, + ["fa-gratipay"] = 0xf184, + ["fa-grav"] = 0xf2d6, + ["fa-group"] = 0xf0c0, + ["fa-h_square"] = 0xf0fd, + ["fa-hacker_news"] = 0xf1d4, + ["fa-hand_grab_o"] = 0xf255, + ["fa-hand_lizard_o"] = 0xf258, + ["fa-hand_o_down"] = 0xf0a7, + ["fa-hand_o_left"] = 0xf0a5, + ["fa-hand_o_right"] = 0xf0a4, + ["fa-hand_o_up"] = 0xf0a6, + ["fa-hand_paper_o"] = 0xf256, + ["fa-hand_peace_o"] = 0xf25b, + ["fa-hand_pointer_o"] = 0xf25a, + ["fa-hand_rock_o"] = 0xf255, + ["fa-hand_scissors_o"] = 0xf257, + ["fa-hand_spock_o"] = 0xf259, + ["fa-hand_stop_o"] = 0xf256, + ["fa-handshake_o"] = 0xf2b5, + ["fa-hard_of_hearing"] = 0xf2a4, + ["fa-hashtag"] = 0xf292, + ["fa-hdd_o"] = 0xf0a0, + ["fa-header"] = 0xf1dc, + ["fa-headphones"] = 0xf025, + ["fa-heart"] = 0xf004, + ["fa-heart_o"] = 0xf08a, + ["fa-heartbeat"] = 0xf21e, + ["fa-history"] = 0xf1da, + ["fa-home"] = 0xf015, + ["fa-hospital_o"] = 0xf0f8, + ["fa-hotel"] = 0xf236, + ["fa-hourglass"] = 0xf254, + ["fa-hourglass_1"] = 0xf251, + ["fa-hourglass_2"] = 0xf252, + ["fa-hourglass_3"] = 0xf253, + ["fa-hourglass_end"] = 0xf253, + ["fa-hourglass_half"] = 0xf252, + ["fa-hourglass_o"] = 0xf250, + ["fa-hourglass_start"] = 0xf251, + ["fa-houzz"] = 0xf27c, + ["fa-html5"] = 0xf13b, + ["fa-i_cursor"] = 0xf246, + ["fa-id_badge"] = 0xf2c1, + ["fa-id_card"] = 0xf2c2, + ["fa-id_card_o"] = 0xf2c3, + ["fa-ils"] = 0xf20b, + ["fa-image"] = 0xf03e, + ["fa-imdb"] = 0xf2d8, + ["fa-inbox"] = 0xf01c, + ["fa-indent"] = 0xf03c, + ["fa-industry"] = 0xf275, + ["fa-info"] = 0xf129, + ["fa-info_circle"] = 0xf05a, + ["fa-inr"] = 0xf156, + ["fa-instagram"] = 0xf16d, + ["fa-institution"] = 0xf19c, + ["fa-internet_explorer"] = 0xf26b, + ["fa-intersex"] = 0xf224, + ["fa-ioxhost"] = 0xf208, + ["fa-italic"] = 0xf033, + ["fa-joomla"] = 0xf1aa, + ["fa-jpy"] = 0xf157, + ["fa-jsfiddle"] = 0xf1cc, + ["fa-key"] = 0xf084, + ["fa-keyboard_o"] = 0xf11c, + ["fa-krw"] = 0xf159, + ["fa-language"] = 0xf1ab, + ["fa-laptop"] = 0xf109, + ["fa-lastfm"] = 0xf202, + ["fa-lastfm_square"] = 0xf203, + ["fa-leaf"] = 0xf06c, + ["fa-leanpub"] = 0xf212, + ["fa-legal"] = 0xf0e3, + ["fa-lemon_o"] = 0xf094, + ["fa-level_down"] = 0xf149, + ["fa-level_up"] = 0xf148, + ["fa-life_bouy"] = 0xf1cd, + ["fa-life_buoy"] = 0xf1cd, + ["fa-life_ring"] = 0xf1cd, + ["fa-life_saver"] = 0xf1cd, + ["fa-lightbulb_o"] = 0xf0eb, + ["fa-line_chart"] = 0xf201, + ["fa-link"] = 0xf0c1, + ["fa-linkedin"] = 0xf0e1, + ["fa-linkedin_square"] = 0xf08c, + ["fa-linode"] = 0xf2b8, + ["fa-linux"] = 0xf17c, + ["fa-list"] = 0xf03a, + ["fa-list_alt"] = 0xf022, + ["fa-list_ol"] = 0xf0cb, + ["fa-list_ul"] = 0xf0ca, + ["fa-location_arrow"] = 0xf124, + ["fa-lock"] = 0xf023, + ["fa-long_arrow_down"] = 0xf175, + ["fa-long_arrow_left"] = 0xf177, + ["fa-long_arrow_right"] = 0xf178, + ["fa-long_arrow_up"] = 0xf176, + ["fa-low_vision"] = 0xf2a8, + ["fa-magic"] = 0xf0d0, + ["fa-magnet"] = 0xf076, + ["fa-mail_forward"] = 0xf064, + ["fa-mail_reply"] = 0xf112, + ["fa-mail_reply_all"] = 0xf122, + ["fa-male"] = 0xf183, + ["fa-map"] = 0xf279, + ["fa-map_marker"] = 0xf041, + ["fa-map_o"] = 0xf278, + ["fa-map_pin"] = 0xf276, + ["fa-map_signs"] = 0xf277, + ["fa-mars"] = 0xf222, + ["fa-mars_double"] = 0xf227, + ["fa-mars_stroke"] = 0xf229, + ["fa-mars_stroke_h"] = 0xf22b, + ["fa-mars_stroke_v"] = 0xf22a, + ["fa-maxcdn"] = 0xf136, + ["fa-meanpath"] = 0xf20c, + ["fa-medium"] = 0xf23a, + ["fa-medkit"] = 0xf0fa, + ["fa-meetup"] = 0xf2e0, + ["fa-meh_o"] = 0xf11a, + ["fa-mercury"] = 0xf223, + ["fa-microchip"] = 0xf2db, + ["fa-microphone"] = 0xf130, + ["fa-microphone_slash"] = 0xf131, + ["fa-minus"] = 0xf068, + ["fa-minus_circle"] = 0xf056, + ["fa-minus_square"] = 0xf146, + ["fa-minus_square_o"] = 0xf147, + ["fa-mixcloud"] = 0xf289, + ["fa-mobile"] = 0xf10b, + ["fa-mobile_phone"] = 0xf10b, + ["fa-modx"] = 0xf285, + ["fa-money"] = 0xf0d6, + ["fa-moon_o"] = 0xf186, + ["fa-mortar_board"] = 0xf19d, + ["fa-motorcycle"] = 0xf21c, + ["fa-mouse_pointer"] = 0xf245, + ["fa-music"] = 0xf001, + ["fa-navicon"] = 0xf0c9, + ["fa-neuter"] = 0xf22c, + ["fa-newspaper_o"] = 0xf1ea, + ["fa-object_group"] = 0xf247, + ["fa-object_ungroup"] = 0xf248, + ["fa-odnoklassniki"] = 0xf263, + ["fa-odnoklassniki_square"] = 0xf264, + ["fa-opencart"] = 0xf23d, + ["fa-openid"] = 0xf19b, + ["fa-opera"] = 0xf26a, + ["fa-optin_monster"] = 0xf23c, + ["fa-outdent"] = 0xf03b, + ["fa-pagelines"] = 0xf18c, + ["fa-paint_brush"] = 0xf1fc, + ["fa-paper_plane"] = 0xf1d8, + ["fa-paper_plane_o"] = 0xf1d9, + ["fa-paperclip"] = 0xf0c6, + ["fa-paragraph"] = 0xf1dd, + ["fa-paste"] = 0xf0ea, + ["fa-pause"] = 0xf04c, + ["fa-pause_circle"] = 0xf28b, + ["fa-pause_circle_o"] = 0xf28c, + ["fa-paw"] = 0xf1b0, + ["fa-paypal"] = 0xf1ed, + ["fa-pencil"] = 0xf040, + ["fa-pencil_square"] = 0xf14b, + ["fa-pencil_square_o"] = 0xf044, + ["fa-percent"] = 0xf295, + ["fa-phone"] = 0xf095, + ["fa-phone_square"] = 0xf098, + ["fa-photo"] = 0xf03e, + ["fa-picture_o"] = 0xf03e, + ["fa-pie_chart"] = 0xf200, + ["fa-pied_piper"] = 0xf2ae, + ["fa-pied_piper_alt"] = 0xf1a8, + ["fa-pied_piper_pp"] = 0xf1a7, + ["fa-pinterest"] = 0xf0d2, + ["fa-pinterest_p"] = 0xf231, + ["fa-pinterest_square"] = 0xf0d3, + ["fa-plane"] = 0xf072, + ["fa-play"] = 0xf04b, + ["fa-play_circle"] = 0xf144, + ["fa-play_circle_o"] = 0xf01d, + ["fa-plug"] = 0xf1e6, + ["fa-plus"] = 0xf067, + ["fa-plus_circle"] = 0xf055, + ["fa-plus_square"] = 0xf0fe, + ["fa-plus_square_o"] = 0xf196, + ["fa-podcast"] = 0xf2ce, + ["fa-power_off"] = 0xf011, + ["fa-print"] = 0xf02f, + ["fa-product_hunt"] = 0xf288, + ["fa-puzzle_piece"] = 0xf12e, + ["fa-qq"] = 0xf1d6, + ["fa-qrcode"] = 0xf029, + ["fa-question"] = 0xf128, + ["fa-question_circle"] = 0xf059, + ["fa-question_circle_o"] = 0xf29c, + ["fa-quora"] = 0xf2c4, + ["fa-quote_left"] = 0xf10d, + ["fa-quote_right"] = 0xf10e, + ["fa-ra"] = 0xf1d0, + ["fa-random"] = 0xf074, + ["fa-ravelry"] = 0xf2d9, + ["fa-rebel"] = 0xf1d0, + ["fa-recycle"] = 0xf1b8, + ["fa-reddit"] = 0xf1a1, + ["fa-reddit_alien"] = 0xf281, + ["fa-reddit_square"] = 0xf1a2, + ["fa-refresh"] = 0xf021, + ["fa-registered"] = 0xf25d, + ["fa-remove"] = 0xf00d, + ["fa-renren"] = 0xf18b, + ["fa-reorder"] = 0xf0c9, + ["fa-repeat"] = 0xf01e, + ["fa-reply"] = 0xf112, + ["fa-reply_all"] = 0xf122, + ["fa-resistance"] = 0xf1d0, + ["fa-retweet"] = 0xf079, + ["fa-rmb"] = 0xf157, + ["fa-road"] = 0xf018, + ["fa-rocket"] = 0xf135, + ["fa-rotate_left"] = 0xf0e2, + ["fa-rotate_right"] = 0xf01e, + ["fa-rouble"] = 0xf158, + ["fa-rss"] = 0xf09e, + ["fa-rss_square"] = 0xf143, + ["fa-rub"] = 0xf158, + ["fa-ruble"] = 0xf158, + ["fa-rupee"] = 0xf156, + ["fa-s15"] = 0xf2cd, + ["fa-safari"] = 0xf267, + ["fa-save"] = 0xf0c7, + ["fa-scissors"] = 0xf0c4, + ["fa-scribd"] = 0xf28a, + ["fa-search"] = 0xf002, + ["fa-search_minus"] = 0xf010, + ["fa-search_plus"] = 0xf00e, + ["fa-sellsy"] = 0xf213, + ["fa-send"] = 0xf1d8, + ["fa-send_o"] = 0xf1d9, + ["fa-server"] = 0xf233, + ["fa-share"] = 0xf064, + ["fa-share_alt"] = 0xf1e0, + ["fa-share_alt_square"] = 0xf1e1, + ["fa-share_square"] = 0xf14d, + ["fa-share_square_o"] = 0xf045, + ["fa-shekel"] = 0xf20b, + ["fa-sheqel"] = 0xf20b, + ["fa-shield"] = 0xf132, + ["fa-ship"] = 0xf21a, + ["fa-shirtsinbulk"] = 0xf214, + ["fa-shopping_bag"] = 0xf290, + ["fa-shopping_basket"] = 0xf291, + ["fa-shopping_cart"] = 0xf07a, + ["fa-shower"] = 0xf2cc, + ["fa-sign_in"] = 0xf090, + ["fa-sign_language"] = 0xf2a7, + ["fa-sign_out"] = 0xf08b, + ["fa-signal"] = 0xf012, + ["fa-signing"] = 0xf2a7, + ["fa-simplybuilt"] = 0xf215, + ["fa-sitemap"] = 0xf0e8, + ["fa-skyatlas"] = 0xf216, + ["fa-skype"] = 0xf17e, + ["fa-slack"] = 0xf198, + ["fa-sliders"] = 0xf1de, + ["fa-slideshare"] = 0xf1e7, + ["fa-smile_o"] = 0xf118, + ["fa-snapchat"] = 0xf2ab, + ["fa-snapchat_ghost"] = 0xf2ac, + ["fa-snapchat_square"] = 0xf2ad, + ["fa-snowflake_o"] = 0xf2dc, + ["fa-soccer_ball_o"] = 0xf1e3, + ["fa-sort"] = 0xf0dc, + ["fa-sort_alpha_asc"] = 0xf15d, + ["fa-sort_alpha_desc"] = 0xf15e, + ["fa-sort_amount_asc"] = 0xf160, + ["fa-sort_amount_desc"] = 0xf161, + ["fa-sort_asc"] = 0xf0de, + ["fa-sort_desc"] = 0xf0dd, + ["fa-sort_down"] = 0xf0dd, + ["fa-sort_numeric_asc"] = 0xf162, + ["fa-sort_numeric_desc"] = 0xf163, + ["fa-sort_up"] = 0xf0de, + ["fa-soundcloud"] = 0xf1be, + ["fa-space_shuttle"] = 0xf197, + ["fa-spinner"] = 0xf110, + ["fa-spoon"] = 0xf1b1, + ["fa-spotify"] = 0xf1bc, + ["fa-square"] = 0xf0c8, + ["fa-square_o"] = 0xf096, + ["fa-stack_exchange"] = 0xf18d, + ["fa-stack_overflow"] = 0xf16c, + ["fa-star"] = 0xf005, + ["fa-star_half"] = 0xf089, + ["fa-star_half_empty"] = 0xf123, + ["fa-star_half_full"] = 0xf123, + ["fa-star_half_o"] = 0xf123, + ["fa-star_o"] = 0xf006, + ["fa-steam"] = 0xf1b6, + ["fa-steam_square"] = 0xf1b7, + ["fa-step_backward"] = 0xf048, + ["fa-step_forward"] = 0xf051, + ["fa-stethoscope"] = 0xf0f1, + ["fa-sticky_note"] = 0xf249, + ["fa-sticky_note_o"] = 0xf24a, + ["fa-stop"] = 0xf04d, + ["fa-stop_circle"] = 0xf28d, + ["fa-stop_circle_o"] = 0xf28e, + ["fa-street_view"] = 0xf21d, + ["fa-strikethrough"] = 0xf0cc, + ["fa-stumbleupon"] = 0xf1a4, + ["fa-stumbleupon_circle"] = 0xf1a3, + ["fa-subscript"] = 0xf12c, + ["fa-subway"] = 0xf239, + ["fa-suitcase"] = 0xf0f2, + ["fa-sun_o"] = 0xf185, + ["fa-superpowers"] = 0xf2dd, + ["fa-superscript"] = 0xf12b, + ["fa-support"] = 0xf1cd, + ["fa-table"] = 0xf0ce, + ["fa-tablet"] = 0xf10a, + ["fa-tachometer"] = 0xf0e4, + ["fa-tag"] = 0xf02b, + ["fa-tags"] = 0xf02c, + ["fa-tasks"] = 0xf0ae, + ["fa-taxi"] = 0xf1ba, + ["fa-telegram"] = 0xf2c6, + ["fa-television"] = 0xf26c, + ["fa-tencent_weibo"] = 0xf1d5, + ["fa-terminal"] = 0xf120, + ["fa-text_height"] = 0xf034, + ["fa-text_width"] = 0xf035, + ["fa-th"] = 0xf00a, + ["fa-th_large"] = 0xf009, + ["fa-th_list"] = 0xf00b, + ["fa-themeisle"] = 0xf2b2, + ["fa-thermometer"] = 0xf2c7, + ["fa-thermometer_0"] = 0xf2cb, + ["fa-thermometer_1"] = 0xf2ca, + ["fa-thermometer_2"] = 0xf2c9, + ["fa-thermometer_3"] = 0xf2c8, + ["fa-thermometer_4"] = 0xf2c7, + ["fa-thermometer_empty"] = 0xf2cb, + ["fa-thermometer_full"] = 0xf2c7, + ["fa-thermometer_half"] = 0xf2c9, + ["fa-thermometer_quarter"] = 0xf2ca, + ["fa-thermometer_three_quarters"] = 0xf2c8, + ["fa-thumb_tack"] = 0xf08d, + ["fa-thumbs_down"] = 0xf165, + ["fa-thumbs_o_down"] = 0xf088, + ["fa-thumbs_o_up"] = 0xf087, + ["fa-thumbs_up"] = 0xf164, + ["fa-ticket"] = 0xf145, + ["fa-times"] = 0xf00d, + ["fa-times_circle"] = 0xf057, + ["fa-times_circle_o"] = 0xf05c, + ["fa-times_rectangle"] = 0xf2d3, + ["fa-times_rectangle_o"] = 0xf2d4, + ["fa-tint"] = 0xf043, + ["fa-toggle_down"] = 0xf150, + ["fa-toggle_left"] = 0xf191, + ["fa-toggle_off"] = 0xf204, + ["fa-toggle_on"] = 0xf205, + ["fa-toggle_right"] = 0xf152, + ["fa-toggle_up"] = 0xf151, + ["fa-trademark"] = 0xf25c, + ["fa-train"] = 0xf238, + ["fa-transgender"] = 0xf224, + ["fa-transgender_alt"] = 0xf225, + ["fa-trash"] = 0xf1f8, + ["fa-trash_o"] = 0xf014, + ["fa-tree"] = 0xf1bb, + ["fa-trello"] = 0xf181, + ["fa-tripadvisor"] = 0xf262, + ["fa-trophy"] = 0xf091, + ["fa-truck"] = 0xf0d1, + ["fa-try"] = 0xf195, + ["fa-tty"] = 0xf1e4, + ["fa-tumblr"] = 0xf173, + ["fa-tumblr_square"] = 0xf174, + ["fa-turkish_lira"] = 0xf195, + ["fa-tv"] = 0xf26c, + ["fa-twitch"] = 0xf1e8, + ["fa-twitter"] = 0xf099, + ["fa-twitter_square"] = 0xf081, + ["fa-umbrella"] = 0xf0e9, + ["fa-underline"] = 0xf0cd, + ["fa-undo"] = 0xf0e2, + ["fa-universal_access"] = 0xf29a, + ["fa-university"] = 0xf19c, + ["fa-unlink"] = 0xf127, + ["fa-unlock"] = 0xf09c, + ["fa-unlock_alt"] = 0xf13e, + ["fa-unsorted"] = 0xf0dc, + ["fa-upload"] = 0xf093, + ["fa-usb"] = 0xf287, + ["fa-usd"] = 0xf155, + ["fa-user"] = 0xf007, + ["fa-user_circle"] = 0xf2bd, + ["fa-user_circle_o"] = 0xf2be, + ["fa-user_md"] = 0xf0f0, + ["fa-user_o"] = 0xf2c0, + ["fa-user_plus"] = 0xf234, + ["fa-user_secret"] = 0xf21b, + ["fa-user_times"] = 0xf235, + ["fa-users"] = 0xf0c0, + ["fa-vcard"] = 0xf2bb, + ["fa-vcard_o"] = 0xf2bc, + ["fa-venus"] = 0xf221, + ["fa-venus_double"] = 0xf226, + ["fa-venus_mars"] = 0xf228, + ["fa-viacoin"] = 0xf237, + ["fa-viadeo"] = 0xf2a9, + ["fa-viadeo_square"] = 0xf2aa, + ["fa-video_camera"] = 0xf03d, + ["fa-vimeo"] = 0xf27d, + ["fa-vimeo_square"] = 0xf194, + ["fa-vine"] = 0xf1ca, + ["fa-vk"] = 0xf189, + ["fa-volume_control_phone"] = 0xf2a0, + ["fa-volume_down"] = 0xf027, + ["fa-volume_off"] = 0xf026, + ["fa-volume_up"] = 0xf028, + ["fa-warning"] = 0xf071, + ["fa-wechat"] = 0xf1d7, + ["fa-weibo"] = 0xf18a, + ["fa-weixin"] = 0xf1d7, + ["fa-whatsapp"] = 0xf232, + ["fa-wheelchair"] = 0xf193, + ["fa-wheelchair_alt"] = 0xf29b, + ["fa-wifi"] = 0xf1eb, + ["fa-wikipedia_w"] = 0xf266, + ["fa-window_close"] = 0xf2d3, + ["fa-window_close_o"] = 0xf2d4, + ["fa-window_maximize"] = 0xf2d0, + ["fa-window_minimize"] = 0xf2d1, + ["fa-window_restore"] = 0xf2d2, + ["fa-windows"] = 0xf17a, + ["fa-won"] = 0xf159, + ["fa-wordpress"] = 0xf19a, + ["fa-wpbeginner"] = 0xf297, + ["fa-wpexplorer"] = 0xf2de, + ["fa-wpforms"] = 0xf298, + ["fa-wrench"] = 0xf0ad, + ["fa-xing"] = 0xf168, + ["fa-xing_square"] = 0xf169, + ["fa-y_combinator"] = 0xf23b, + ["fa-y_combinator_square"] = 0xf1d4, + ["fa-yahoo"] = 0xf19e, + ["fa-yc"] = 0xf23b, + ["fa-yc_square"] = 0xf1d4, + ["fa-yelp"] = 0xf1e9, + ["fa-yen"] = 0xf157, + ["fa-yoast"] = 0xf2b1, + ["fa-youtube"] = 0xf167, + ["fa-youtube_play"] = 0xf16a, + ["fa-youtube_square"] = 0xf166, + ["fae-apple_fruit"] = 0xe29e, + ["fae-atom"] = 0xe27f, + ["fae-bacteria"] = 0xe280, + ["fae-banana"] = 0xe281, + ["fae-bath"] = 0xe282, + ["fae-bed"] = 0xe283, + ["fae-benzene"] = 0xe284, + ["fae-bigger"] = 0xe285, + ["fae-biohazard"] = 0xe286, + ["fae-blogger_circle"] = 0xe287, + ["fae-blogger_square"] = 0xe288, + ["fae-bones"] = 0xe289, + ["fae-book_open"] = 0xe28a, + ["fae-book_open_o"] = 0xe28b, + ["fae-brain"] = 0xe28c, + ["fae-bread"] = 0xe28d, + ["fae-butterfly"] = 0xe28e, + ["fae-carot"] = 0xe28f, + ["fae-cc_by"] = 0xe290, + ["fae-cc_cc"] = 0xe291, + ["fae-cc_nc"] = 0xe292, + ["fae-cc_nc_eu"] = 0xe293, + ["fae-cc_nc_jp"] = 0xe294, + ["fae-cc_nd"] = 0xe295, + ["fae-cc_remix"] = 0xe296, + ["fae-cc_sa"] = 0xe297, + ["fae-cc_share"] = 0xe298, + ["fae-cc_zero"] = 0xe299, + ["fae-checklist_o"] = 0xe29a, + ["fae-cheese"] = 0xe264, + ["fae-cherry"] = 0xe29b, + ["fae-chess_bishop"] = 0xe29c, + ["fae-chess_horse"] = 0xe25f, + ["fae-chess_king"] = 0xe260, + ["fae-chess_pawn"] = 0xe261, + ["fae-chess_queen"] = 0xe262, + ["fae-chess_tower"] = 0xe263, + ["fae-chicken_thigh"] = 0xe29f, + ["fae-chilli"] = 0xe265, + ["fae-chip"] = 0xe266, + ["fae-cicling"] = 0xe267, + ["fae-cloud"] = 0xe268, + ["fae-cockroach"] = 0xe269, + ["fae-coffe_beans"] = 0xe26a, + ["fae-coins"] = 0xe26b, + ["fae-comb"] = 0xe26c, + ["fae-comet"] = 0xe26d, + ["fae-crown"] = 0xe26e, + ["fae-cup_coffe"] = 0xe26f, + ["fae-dice"] = 0xe270, + ["fae-disco"] = 0xe271, + ["fae-dna"] = 0xe272, + ["fae-donut"] = 0xe273, + ["fae-dress"] = 0xe274, + ["fae-drop"] = 0xe275, + ["fae-ello"] = 0xe276, + ["fae-envelope_open"] = 0xe277, + ["fae-envelope_open_o"] = 0xe278, + ["fae-equal"] = 0xe279, + ["fae-equal_bigger"] = 0xe27a, + ["fae-feedly"] = 0xe27b, + ["fae-file_export"] = 0xe27c, + ["fae-file_import"] = 0xe27d, + ["fae-fingerprint"] = 0xe23f, + ["fae-floppy"] = 0xe240, + ["fae-footprint"] = 0xe241, + ["fae-freecodecamp"] = 0xe242, + ["fae-galaxy"] = 0xe243, + ["fae-galery"] = 0xe244, + ["fae-gift_card"] = 0xe2a0, + ["fae-glass"] = 0xe245, + ["fae-google_drive"] = 0xe246, + ["fae-google_play"] = 0xe247, + ["fae-gps"] = 0xe248, + ["fae-grav"] = 0xe249, + ["fae-guitar"] = 0xe24a, + ["fae-gut"] = 0xe24b, + ["fae-halter"] = 0xe24c, + ["fae-hamburger"] = 0xe24d, + ["fae-hat"] = 0xe24e, + ["fae-hexagon"] = 0xe24f, + ["fae-high_heel"] = 0xe250, + ["fae-hotdog"] = 0xe251, + ["fae-ice_cream"] = 0xe252, + ["fae-id_card"] = 0xe253, + ["fae-imdb"] = 0xe254, + ["fae-infinity"] = 0xe255, + ["fae-injection"] = 0xe2a1, + ["fae-isle"] = 0xe2a2, + ["fae-java"] = 0xe256, + ["fae-layers"] = 0xe257, + ["fae-lips"] = 0xe258, + ["fae-lipstick"] = 0xe259, + ["fae-liver"] = 0xe25a, + ["fae-lollipop"] = 0xe2a3, + ["fae-loyalty_card"] = 0xe2a4, + ["fae-lung"] = 0xe25b, + ["fae-makeup_brushes"] = 0xe25c, + ["fae-maximize"] = 0xe25d, + ["fae-meat"] = 0xe2a5, + ["fae-medicine"] = 0xe221, + ["fae-microscope"] = 0xe222, + ["fae-milk_bottle"] = 0xe223, + ["fae-minimize"] = 0xe224, + ["fae-molecule"] = 0xe225, + ["fae-moon_cloud"] = 0xe226, + ["fae-mountains"] = 0xe2a6, + ["fae-mushroom"] = 0xe227, + ["fae-mustache"] = 0xe228, + ["fae-mysql"] = 0xe229, + ["fae-nintendo"] = 0xe22a, + ["fae-orange"] = 0xe2a7, + ["fae-palette_color"] = 0xe22b, + ["fae-peach"] = 0xe2a8, + ["fae-pear"] = 0xe2a9, + ["fae-pi"] = 0xe22c, + ["fae-pizza"] = 0xe22d, + ["fae-planet"] = 0xe22e, + ["fae-plant"] = 0xe22f, + ["fae-playstation"] = 0xe230, + ["fae-poison"] = 0xe231, + ["fae-popcorn"] = 0xe232, + ["fae-popsicle"] = 0xe233, + ["fae-pulse"] = 0xe234, + ["fae-python"] = 0xe235, + ["fae-quora_circle"] = 0xe236, + ["fae-quora_square"] = 0xe237, + ["fae-radioactive"] = 0xe238, + ["fae-raining"] = 0xe239, + ["fae-real_heart"] = 0xe23a, + ["fae-refrigerator"] = 0xe23b, + ["fae-restore"] = 0xe23c, + ["fae-ring"] = 0xe23d, + ["fae-ruby"] = 0xe23e, + ["fae-ruby_o"] = 0xe21e, + ["fae-ruler"] = 0xe21f, + ["fae-shirt"] = 0xe218, + ["fae-slash"] = 0xe216, + ["fae-smaller"] = 0xe200, + ["fae-snowing"] = 0xe201, + ["fae-soda"] = 0xe202, + ["fae-sofa"] = 0xe203, + ["fae-soup"] = 0xe204, + ["fae-spermatozoon"] = 0xe205, + ["fae-spin_double"] = 0xe206, + ["fae-stomach"] = 0xe207, + ["fae-storm"] = 0xe208, + ["fae-sun_cloud"] = 0xe21d, + ["fae-sushi"] = 0xe21a, + ["fae-tacos"] = 0xe219, + ["fae-telegram"] = 0xe217, + ["fae-telegram_circle"] = 0xe215, + ["fae-telescope"] = 0xe209, + ["fae-thermometer"] = 0xe20a, + ["fae-thermometer_high"] = 0xe20b, + ["fae-thermometer_low"] = 0xe20c, + ["fae-thin_close"] = 0xe20d, + ["fae-toilet"] = 0xe20e, + ["fae-tools"] = 0xe20f, + ["fae-tooth"] = 0xe210, + ["fae-tree"] = 0xe21c, + ["fae-triangle_ruler"] = 0xe21b, + ["fae-umbrella"] = 0xe220, + ["fae-uterus"] = 0xe211, + ["fae-virus"] = 0xe214, + ["fae-w3c"] = 0xe212, + ["fae-walking"] = 0xe213, + ["fae-wallet"] = 0xe25e, + ["fae-wind"] = 0xe27e, + ["fae-xbox"] = 0xe29d, + ["iec-power"] = 0x23fb, + ["iec-power_off"] = 0x2b58, + ["iec-power_on"] = 0x23fd, + ["iec-sleep_mode"] = 0x23fe, + ["iec-toggle_power"] = 0x23fc, + ["indent-dotted_guide"] = 0xe621, + ["indent-line"] = 0xe621, + ["indentation-line"] = 0xe621, + ["linux-almalinux"] = 0xf31d, + ["linux-alpine"] = 0xf300, + ["linux-aosc"] = 0xf301, + ["linux-apple"] = 0xf302, + ["linux-archcraft"] = 0xf345, + ["linux-archlabs"] = 0xf31e, + ["linux-archlinux"] = 0xf303, + ["linux-arcolinux"] = 0xf346, + ["linux-arduino"] = 0xf34b, + ["linux-artix"] = 0xf31f, + ["linux-awesome"] = 0xf354, + ["linux-biglinux"] = 0xf347, + ["linux-bspwm"] = 0xf355, + ["linux-budgie"] = 0xf320, + ["linux-centos"] = 0xf304, + ["linux-cinnamon"] = 0xf35f, + ["linux-codeberg"] = 0xf330, + ["linux-coreos"] = 0xf305, + ["linux-crystal"] = 0xf348, + ["linux-debian"] = 0xf306, + ["linux-deepin"] = 0xf321, + ["linux-devuan"] = 0xf307, + ["linux-docker"] = 0xf308, + ["linux-dwm"] = 0xf356, + ["linux-elementary"] = 0xf309, + ["linux-endeavour"] = 0xf322, + ["linux-enlightenment"] = 0xf357, + ["linux-fdroid"] = 0xf36a, + ["linux-fedora"] = 0xf30a, + ["linux-fedora_inverse"] = 0xf30b, + ["linux-ferris"] = 0xf323, + ["linux-flathub"] = 0xf324, + ["linux-fluxbox"] = 0xf358, + ["linux-forgejo"] = 0xf335, + ["linux-fosdem"] = 0xf36b, + ["linux-freebsd"] = 0xf30c, + ["linux-freecad"] = 0xf336, + ["linux-freedesktop"] = 0xf360, + ["linux-garuda"] = 0xf337, + ["linux-gentoo"] = 0xf30d, + ["linux-gimp"] = 0xf338, + ["linux-gitea"] = 0xf339, + ["linux-gnome"] = 0xf361, + ["linux-gnu_guix"] = 0xf325, + ["linux-gtk"] = 0xf362, + ["linux-hyperbola"] = 0xf33a, + ["linux-hyprland"] = 0xf359, + ["linux-i3"] = 0xf35a, + ["linux-illumos"] = 0xf326, + ["linux-inkscape"] = 0xf33b, + ["linux-jwm"] = 0xf35b, + ["linux-kali_linux"] = 0xf327, + ["linux-kde_neon"] = 0xf331, + ["linux-kde_plasma"] = 0xf332, + ["linux-kdenlive"] = 0xf33c, + ["linux-kicad"] = 0xf34c, + ["linux-krita"] = 0xf33d, + ["linux-kubuntu"] = 0xf333, + ["linux-kubuntu_inverse"] = 0xf334, + ["linux-linuxmint"] = 0xf30e, + ["linux-linuxmint_inverse"] = 0xf30f, + ["linux-locos"] = 0xf349, + ["linux-lxde"] = 0xf363, + ["linux-lxle"] = 0xf33e, + ["linux-lxqt"] = 0xf364, + ["linux-mageia"] = 0xf310, + ["linux-mandriva"] = 0xf311, + ["linux-manjaro"] = 0xf312, + ["linux-mate"] = 0xf365, + ["linux-mpv"] = 0xf36e, + ["linux-mxlinux"] = 0xf33f, + ["linux-neovim"] = 0xf36f, + ["linux-nixos"] = 0xf313, + ["linux-octoprint"] = 0xf34d, + ["linux-openbsd"] = 0xf328, + ["linux-openscad"] = 0xf34e, + ["linux-opensuse"] = 0xf314, + ["linux-osh"] = 0xf34f, + ["linux-oshwa"] = 0xf350, + ["linux-osi"] = 0xf36c, + ["linux-parabola"] = 0xf340, + ["linux-parrot"] = 0xf329, + ["linux-pop_os"] = 0xf32a, + ["linux-prusaslicer"] = 0xf351, + ["linux-puppy"] = 0xf341, + ["linux-qtile"] = 0xf35c, + ["linux-qubesos"] = 0xf342, + ["linux-raspberry_pi"] = 0xf315, + ["linux-redhat"] = 0xf316, + ["linux-reprap"] = 0xf352, + ["linux-riscv"] = 0xf353, + ["linux-rocky_linux"] = 0xf32b, + ["linux-sabayon"] = 0xf317, + ["linux-slackware"] = 0xf318, + ["linux-slackware_inverse"] = 0xf319, + ["linux-snappy"] = 0xf32c, + ["linux-solus"] = 0xf32d, + ["linux-sway"] = 0xf35d, + ["linux-tails"] = 0xf343, + ["linux-thunderbird"] = 0xf370, + ["linux-tor"] = 0xf371, + ["linux-trisquel"] = 0xf344, + ["linux-tux"] = 0xf31a, + ["linux-ubuntu"] = 0xf31b, + ["linux-ubuntu_inverse"] = 0xf31c, + ["linux-vanilla"] = 0xf366, + ["linux-void"] = 0xf32e, + ["linux-vscodium"] = 0xf372, + ["linux-wayland"] = 0xf367, + ["linux-wikimedia"] = 0xf36d, + ["linux-xerolinux"] = 0xf34a, + ["linux-xfce"] = 0xf368, + ["linux-xmonad"] = 0xf35e, + ["linux-xorg"] = 0xf369, + ["linux-zorin"] = 0xf32f, + ["md-ab_testing"] = 0xf01c9, + ["md-abacus"] = 0xf16e0, + ["md-abjad_arabic"] = 0xf1328, + ["md-abjad_hebrew"] = 0xf1329, + ["md-abugida_devanagari"] = 0xf132a, + ["md-abugida_thai"] = 0xf132b, + ["md-access_point"] = 0xf0003, + ["md-access_point_check"] = 0xf1538, + ["md-access_point_minus"] = 0xf1539, + ["md-access_point_network"] = 0xf0002, + ["md-access_point_network_off"] = 0xf0be1, + ["md-access_point_off"] = 0xf1511, + ["md-access_point_plus"] = 0xf153a, + ["md-access_point_remove"] = 0xf153b, + ["md-account"] = 0xf0004, + ["md-account_alert"] = 0xf0005, + ["md-account_alert_outline"] = 0xf0b50, + ["md-account_arrow_down"] = 0xf1868, + ["md-account_arrow_down_outline"] = 0xf1869, + ["md-account_arrow_left"] = 0xf0b51, + ["md-account_arrow_left_outline"] = 0xf0b52, + ["md-account_arrow_right"] = 0xf0b53, + ["md-account_arrow_right_outline"] = 0xf0b54, + ["md-account_arrow_up"] = 0xf1867, + ["md-account_arrow_up_outline"] = 0xf186a, + ["md-account_box"] = 0xf0006, + ["md-account_box_multiple"] = 0xf0934, + ["md-account_box_multiple_outline"] = 0xf100a, + ["md-account_box_outline"] = 0xf0007, + ["md-account_cancel"] = 0xf12df, + ["md-account_cancel_outline"] = 0xf12e0, + ["md-account_cash"] = 0xf1097, + ["md-account_cash_outline"] = 0xf1098, + ["md-account_check"] = 0xf0008, + ["md-account_check_outline"] = 0xf0be2, + ["md-account_child"] = 0xf0a89, + ["md-account_child_circle"] = 0xf0a8a, + ["md-account_child_outline"] = 0xf10c8, + ["md-account_circle"] = 0xf0009, + ["md-account_circle_outline"] = 0xf0b55, + ["md-account_clock"] = 0xf0b56, + ["md-account_clock_outline"] = 0xf0b57, + ["md-account_cog"] = 0xf1370, + ["md-account_cog_outline"] = 0xf1371, + ["md-account_convert"] = 0xf000a, + ["md-account_convert_outline"] = 0xf1301, + ["md-account_cowboy_hat"] = 0xf0e9b, + ["md-account_cowboy_hat_outline"] = 0xf17f3, + ["md-account_details"] = 0xf0631, + ["md-account_details_outline"] = 0xf1372, + ["md-account_edit"] = 0xf06bc, + ["md-account_edit_outline"] = 0xf0ffb, + ["md-account_eye"] = 0xf0420, + ["md-account_eye_outline"] = 0xf127b, + ["md-account_filter"] = 0xf0936, + ["md-account_filter_outline"] = 0xf0f9d, + ["md-account_group"] = 0xf0849, + ["md-account_group_outline"] = 0xf0b58, + ["md-account_hard_hat"] = 0xf05b5, + ["md-account_hard_hat_outline"] = 0xf1a1f, + ["md-account_heart"] = 0xf0899, + ["md-account_heart_outline"] = 0xf0be3, + ["md-account_injury"] = 0xf1815, + ["md-account_injury_outline"] = 0xf1816, + ["md-account_key"] = 0xf000b, + ["md-account_key_outline"] = 0xf0be4, + ["md-account_lock"] = 0xf115e, + ["md-account_lock_open"] = 0xf1960, + ["md-account_lock_open_outline"] = 0xf1961, + ["md-account_lock_outline"] = 0xf115f, + ["md-account_minus"] = 0xf000d, + ["md-account_minus_outline"] = 0xf0aec, + ["md-account_multiple"] = 0xf000e, + ["md-account_multiple_check"] = 0xf08c5, + ["md-account_multiple_check_outline"] = 0xf11fe, + ["md-account_multiple_minus"] = 0xf05d3, + ["md-account_multiple_minus_outline"] = 0xf0be5, + ["md-account_multiple_outline"] = 0xf000f, + ["md-account_multiple_plus"] = 0xf0010, + ["md-account_multiple_plus_outline"] = 0xf0800, + ["md-account_multiple_remove"] = 0xf120a, + ["md-account_multiple_remove_outline"] = 0xf120b, + ["md-account_music"] = 0xf0803, + ["md-account_music_outline"] = 0xf0ce9, + ["md-account_network"] = 0xf0011, + ["md-account_network_outline"] = 0xf0be6, + ["md-account_off"] = 0xf0012, + ["md-account_off_outline"] = 0xf0be7, + ["md-account_outline"] = 0xf0013, + ["md-account_plus"] = 0xf0014, + ["md-account_plus_outline"] = 0xf0801, + ["md-account_question"] = 0xf0b59, + ["md-account_question_outline"] = 0xf0b5a, + ["md-account_reactivate"] = 0xf152b, + ["md-account_reactivate_outline"] = 0xf152c, + ["md-account_remove"] = 0xf0015, + ["md-account_remove_outline"] = 0xf0aed, + ["md-account_school"] = 0xf1a20, + ["md-account_school_outline"] = 0xf1a21, + ["md-account_search"] = 0xf0016, + ["md-account_search_outline"] = 0xf0935, + ["md-account_settings"] = 0xf0630, + ["md-account_settings_outline"] = 0xf10c9, + ["md-account_star"] = 0xf0017, + ["md-account_star_outline"] = 0xf0be8, + ["md-account_supervisor"] = 0xf0a8b, + ["md-account_supervisor_circle"] = 0xf0a8c, + ["md-account_supervisor_circle_outline"] = 0xf14ec, + ["md-account_supervisor_outline"] = 0xf112d, + ["md-account_switch"] = 0xf0019, + ["md-account_switch_outline"] = 0xf04cb, + ["md-account_sync"] = 0xf191b, + ["md-account_sync_outline"] = 0xf191c, + ["md-account_tie"] = 0xf0ce3, + ["md-account_tie_hat"] = 0xf1898, + ["md-account_tie_hat_outline"] = 0xf1899, + ["md-account_tie_outline"] = 0xf10ca, + ["md-account_tie_voice"] = 0xf1308, + ["md-account_tie_voice_off"] = 0xf130a, + ["md-account_tie_voice_off_outline"] = 0xf130b, + ["md-account_tie_voice_outline"] = 0xf1309, + ["md-account_tie_woman"] = 0xf1a8c, + ["md-account_voice"] = 0xf05cb, + ["md-account_voice_off"] = 0xf0ed4, + ["md-account_wrench"] = 0xf189a, + ["md-account_wrench_outline"] = 0xf189b, + ["md-adjust"] = 0xf001a, + ["md-advertisements"] = 0xf192a, + ["md-advertisements_off"] = 0xf192b, + ["md-air_conditioner"] = 0xf001b, + ["md-air_filter"] = 0xf0d43, + ["md-air_horn"] = 0xf0dac, + ["md-air_humidifier"] = 0xf1099, + ["md-air_humidifier_off"] = 0xf1466, + ["md-air_purifier"] = 0xf0d44, + ["md-airbag"] = 0xf0be9, + ["md-airballoon"] = 0xf001c, + ["md-airballoon_outline"] = 0xf100b, + ["md-airplane"] = 0xf001d, + ["md-airplane_alert"] = 0xf187a, + ["md-airplane_check"] = 0xf187b, + ["md-airplane_clock"] = 0xf187c, + ["md-airplane_cog"] = 0xf187d, + ["md-airplane_edit"] = 0xf187e, + ["md-airplane_landing"] = 0xf05d4, + ["md-airplane_marker"] = 0xf187f, + ["md-airplane_minus"] = 0xf1880, + ["md-airplane_off"] = 0xf001e, + ["md-airplane_plus"] = 0xf1881, + ["md-airplane_remove"] = 0xf1882, + ["md-airplane_search"] = 0xf1883, + ["md-airplane_settings"] = 0xf1884, + ["md-airplane_takeoff"] = 0xf05d5, + ["md-airport"] = 0xf084b, + ["md-alarm"] = 0xf0020, + ["md-alarm_bell"] = 0xf078e, + ["md-alarm_check"] = 0xf0021, + ["md-alarm_light"] = 0xf078f, + ["md-alarm_light_off"] = 0xf171e, + ["md-alarm_light_off_outline"] = 0xf171f, + ["md-alarm_light_outline"] = 0xf0bea, + ["md-alarm_multiple"] = 0xf0022, + ["md-alarm_note"] = 0xf0e71, + ["md-alarm_note_off"] = 0xf0e72, + ["md-alarm_off"] = 0xf0023, + ["md-alarm_panel"] = 0xf15c4, + ["md-alarm_panel_outline"] = 0xf15c5, + ["md-alarm_plus"] = 0xf0024, + ["md-alarm_snooze"] = 0xf068e, + ["md-album"] = 0xf0025, + ["md-alert"] = 0xf0026, + ["md-alert_box"] = 0xf0027, + ["md-alert_box_outline"] = 0xf0ce4, + ["md-alert_circle"] = 0xf0028, + ["md-alert_circle_check"] = 0xf11ed, + ["md-alert_circle_check_outline"] = 0xf11ee, + ["md-alert_circle_outline"] = 0xf05d6, + ["md-alert_decagram"] = 0xf06bd, + ["md-alert_decagram_outline"] = 0xf0ce5, + ["md-alert_minus"] = 0xf14bb, + ["md-alert_minus_outline"] = 0xf14be, + ["md-alert_octagon"] = 0xf0029, + ["md-alert_octagon_outline"] = 0xf0ce6, + ["md-alert_octagram"] = 0xf0767, + ["md-alert_octagram_outline"] = 0xf0ce7, + ["md-alert_outline"] = 0xf002a, + ["md-alert_plus"] = 0xf14ba, + ["md-alert_plus_outline"] = 0xf14bd, + ["md-alert_remove"] = 0xf14bc, + ["md-alert_remove_outline"] = 0xf14bf, + ["md-alert_rhombus"] = 0xf11ce, + ["md-alert_rhombus_outline"] = 0xf11cf, + ["md-alien"] = 0xf089a, + ["md-alien_outline"] = 0xf10cb, + ["md-align_horizontal_center"] = 0xf11c3, + ["md-align_horizontal_distribute"] = 0xf1962, + ["md-align_horizontal_left"] = 0xf11c2, + ["md-align_horizontal_right"] = 0xf11c4, + ["md-align_vertical_bottom"] = 0xf11c5, + ["md-align_vertical_center"] = 0xf11c6, + ["md-align_vertical_distribute"] = 0xf1963, + ["md-align_vertical_top"] = 0xf11c7, + ["md-all_inclusive"] = 0xf06be, + ["md-all_inclusive_box"] = 0xf188d, + ["md-all_inclusive_box_outline"] = 0xf188e, + ["md-allergy"] = 0xf1258, + ["md-alpha"] = 0xf002b, + ["md-alpha_a"] = 0xf0aee, + ["md-alpha_a_box"] = 0xf0b08, + ["md-alpha_a_box_outline"] = 0xf0beb, + ["md-alpha_a_circle"] = 0xf0bec, + ["md-alpha_a_circle_outline"] = 0xf0bed, + ["md-alpha_b"] = 0xf0aef, + ["md-alpha_b_box"] = 0xf0b09, + ["md-alpha_b_box_outline"] = 0xf0bee, + ["md-alpha_b_circle"] = 0xf0bef, + ["md-alpha_b_circle_outline"] = 0xf0bf0, + ["md-alpha_c"] = 0xf0af0, + ["md-alpha_c_box"] = 0xf0b0a, + ["md-alpha_c_box_outline"] = 0xf0bf1, + ["md-alpha_c_circle"] = 0xf0bf2, + ["md-alpha_c_circle_outline"] = 0xf0bf3, + ["md-alpha_d"] = 0xf0af1, + ["md-alpha_d_box"] = 0xf0b0b, + ["md-alpha_d_box_outline"] = 0xf0bf4, + ["md-alpha_d_circle"] = 0xf0bf5, + ["md-alpha_d_circle_outline"] = 0xf0bf6, + ["md-alpha_e"] = 0xf0af2, + ["md-alpha_e_box"] = 0xf0b0c, + ["md-alpha_e_box_outline"] = 0xf0bf7, + ["md-alpha_e_circle"] = 0xf0bf8, + ["md-alpha_e_circle_outline"] = 0xf0bf9, + ["md-alpha_f"] = 0xf0af3, + ["md-alpha_f_box"] = 0xf0b0d, + ["md-alpha_f_box_outline"] = 0xf0bfa, + ["md-alpha_f_circle"] = 0xf0bfb, + ["md-alpha_f_circle_outline"] = 0xf0bfc, + ["md-alpha_g"] = 0xf0af4, + ["md-alpha_g_box"] = 0xf0b0e, + ["md-alpha_g_box_outline"] = 0xf0bfd, + ["md-alpha_g_circle"] = 0xf0bfe, + ["md-alpha_g_circle_outline"] = 0xf0bff, + ["md-alpha_h"] = 0xf0af5, + ["md-alpha_h_box"] = 0xf0b0f, + ["md-alpha_h_box_outline"] = 0xf0c00, + ["md-alpha_h_circle"] = 0xf0c01, + ["md-alpha_h_circle_outline"] = 0xf0c02, + ["md-alpha_i"] = 0xf1088, + ["md-alpha_i_box"] = 0xf0b10, + ["md-alpha_i_box_outline"] = 0xf0c03, + ["md-alpha_i_circle"] = 0xf0c04, + ["md-alpha_i_circle_outline"] = 0xf0c05, + ["md-alpha_j"] = 0xf0af7, + ["md-alpha_j_box"] = 0xf0b11, + ["md-alpha_j_box_outline"] = 0xf0c06, + ["md-alpha_j_circle"] = 0xf0c07, + ["md-alpha_j_circle_outline"] = 0xf0c08, + ["md-alpha_k"] = 0xf0af8, + ["md-alpha_k_box"] = 0xf0b12, + ["md-alpha_k_box_outline"] = 0xf0c09, + ["md-alpha_k_circle"] = 0xf0c0a, + ["md-alpha_k_circle_outline"] = 0xf0c0b, + ["md-alpha_l"] = 0xf13a6, + ["md-alpha_l_box"] = 0xf0b13, + ["md-alpha_l_box_outline"] = 0xf0c0c, + ["md-alpha_l_circle"] = 0xf0c0d, + ["md-alpha_l_circle_outline"] = 0xf0c0e, + ["md-alpha_m"] = 0xf0afa, + ["md-alpha_m_box"] = 0xf0b14, + ["md-alpha_m_box_outline"] = 0xf0c0f, + ["md-alpha_m_circle"] = 0xf0c10, + ["md-alpha_m_circle_outline"] = 0xf0c11, + ["md-alpha_n"] = 0xf0afb, + ["md-alpha_n_box"] = 0xf0b15, + ["md-alpha_n_box_outline"] = 0xf0c12, + ["md-alpha_n_circle"] = 0xf0c13, + ["md-alpha_n_circle_outline"] = 0xf0c14, + ["md-alpha_o"] = 0xf0b39, + ["md-alpha_o_box"] = 0xf0b16, + ["md-alpha_o_box_outline"] = 0xf0c15, + ["md-alpha_o_circle"] = 0xf0c9e, + ["md-alpha_o_circle_outline"] = 0xf0c9f, + ["md-alpha_p"] = 0xf0afd, + ["md-alpha_p_box"] = 0xf0b17, + ["md-alpha_p_box_outline"] = 0xf0c18, + ["md-alpha_p_circle"] = 0xf0c19, + ["md-alpha_p_circle_outline"] = 0xf0c1a, + ["md-alpha_q"] = 0xf0afe, + ["md-alpha_q_box"] = 0xf0b18, + ["md-alpha_q_box_outline"] = 0xf0c1b, + ["md-alpha_q_circle"] = 0xf0c1c, + ["md-alpha_q_circle_outline"] = 0xf0c1d, + ["md-alpha_r"] = 0xf0aff, + ["md-alpha_r_box"] = 0xf0b19, + ["md-alpha_r_box_outline"] = 0xf0c1e, + ["md-alpha_r_circle"] = 0xf0c1f, + ["md-alpha_r_circle_outline"] = 0xf0c20, + ["md-alpha_s"] = 0xf0b00, + ["md-alpha_s_box"] = 0xf0b1a, + ["md-alpha_s_box_outline"] = 0xf0c21, + ["md-alpha_s_circle"] = 0xf0c22, + ["md-alpha_s_circle_outline"] = 0xf0c23, + ["md-alpha_t"] = 0xf0b01, + ["md-alpha_t_box"] = 0xf0b1b, + ["md-alpha_t_box_outline"] = 0xf0c24, + ["md-alpha_t_circle"] = 0xf0c25, + ["md-alpha_t_circle_outline"] = 0xf0c26, + ["md-alpha_u"] = 0xf0b02, + ["md-alpha_u_box"] = 0xf0b1c, + ["md-alpha_u_box_outline"] = 0xf0c27, + ["md-alpha_u_circle"] = 0xf0c28, + ["md-alpha_u_circle_outline"] = 0xf0c29, + ["md-alpha_v"] = 0xf108c, + ["md-alpha_v_box"] = 0xf0b1d, + ["md-alpha_v_box_outline"] = 0xf0c2a, + ["md-alpha_v_circle"] = 0xf0c2b, + ["md-alpha_v_circle_outline"] = 0xf0c2c, + ["md-alpha_w"] = 0xf0b04, + ["md-alpha_w_box"] = 0xf0b1e, + ["md-alpha_w_box_outline"] = 0xf0c2d, + ["md-alpha_w_circle"] = 0xf0c2e, + ["md-alpha_w_circle_outline"] = 0xf0c2f, + ["md-alpha_x"] = 0xf1091, + ["md-alpha_x_box"] = 0xf0b1f, + ["md-alpha_x_box_outline"] = 0xf0c30, + ["md-alpha_x_circle"] = 0xf0c31, + ["md-alpha_x_circle_outline"] = 0xf0c32, + ["md-alpha_y"] = 0xf0b06, + ["md-alpha_y_box"] = 0xf0b20, + ["md-alpha_y_box_outline"] = 0xf0c33, + ["md-alpha_y_circle"] = 0xf0c34, + ["md-alpha_y_circle_outline"] = 0xf0c35, + ["md-alpha_z"] = 0xf0b07, + ["md-alpha_z_box"] = 0xf0b21, + ["md-alpha_z_box_outline"] = 0xf0c36, + ["md-alpha_z_circle"] = 0xf0c37, + ["md-alpha_z_circle_outline"] = 0xf0c38, + ["md-alphabet_aurebesh"] = 0xf132c, + ["md-alphabet_cyrillic"] = 0xf132d, + ["md-alphabet_greek"] = 0xf132e, + ["md-alphabet_latin"] = 0xf132f, + ["md-alphabet_piqad"] = 0xf1330, + ["md-alphabet_tengwar"] = 0xf1337, + ["md-alphabetical"] = 0xf002c, + ["md-alphabetical_off"] = 0xf100c, + ["md-alphabetical_variant"] = 0xf100d, + ["md-alphabetical_variant_off"] = 0xf100e, + ["md-altimeter"] = 0xf05d7, + ["md-ambulance"] = 0xf002f, + ["md-ammunition"] = 0xf0ce8, + ["md-ampersand"] = 0xf0a8d, + ["md-amplifier"] = 0xf0030, + ["md-amplifier_off"] = 0xf11b5, + ["md-anchor"] = 0xf0031, + ["md-android"] = 0xf0032, + ["md-android_messages"] = 0xf0d45, + ["md-android_studio"] = 0xf0034, + ["md-angle_acute"] = 0xf0937, + ["md-angle_obtuse"] = 0xf0938, + ["md-angle_right"] = 0xf0939, + ["md-angular"] = 0xf06b2, + ["md-angularjs"] = 0xf06bf, + ["md-animation"] = 0xf05d8, + ["md-animation_outline"] = 0xf0a8f, + ["md-animation_play"] = 0xf093a, + ["md-animation_play_outline"] = 0xf0a90, + ["md-ansible"] = 0xf109a, + ["md-antenna"] = 0xf1119, + ["md-anvil"] = 0xf089b, + ["md-apache_kafka"] = 0xf100f, + ["md-api"] = 0xf109b, + ["md-api_off"] = 0xf1257, + ["md-apple"] = 0xf0035, + ["md-apple_finder"] = 0xf0036, + ["md-apple_icloud"] = 0xf0038, + ["md-apple_ios"] = 0xf0037, + ["md-apple_keyboard_caps"] = 0xf0632, + ["md-apple_keyboard_command"] = 0xf0633, + ["md-apple_keyboard_control"] = 0xf0634, + ["md-apple_keyboard_option"] = 0xf0635, + ["md-apple_keyboard_shift"] = 0xf0636, + ["md-apple_safari"] = 0xf0039, + ["md-application"] = 0xf08c6, + ["md-application_array"] = 0xf10f5, + ["md-application_array_outline"] = 0xf10f6, + ["md-application_braces"] = 0xf10f7, + ["md-application_braces_outline"] = 0xf10f8, + ["md-application_brackets"] = 0xf0c8b, + ["md-application_brackets_outline"] = 0xf0c8c, + ["md-application_cog"] = 0xf0675, + ["md-application_cog_outline"] = 0xf1577, + ["md-application_edit"] = 0xf00ae, + ["md-application_edit_outline"] = 0xf0619, + ["md-application_export"] = 0xf0dad, + ["md-application_import"] = 0xf0dae, + ["md-application_outline"] = 0xf0614, + ["md-application_parentheses"] = 0xf10f9, + ["md-application_parentheses_outline"] = 0xf10fa, + ["md-application_settings"] = 0xf0b60, + ["md-application_settings_outline"] = 0xf1555, + ["md-application_variable"] = 0xf10fb, + ["md-application_variable_outline"] = 0xf10fc, + ["md-approximately_equal"] = 0xf0f9e, + ["md-approximately_equal_box"] = 0xf0f9f, + ["md-apps"] = 0xf003b, + ["md-apps_box"] = 0xf0d46, + ["md-arch"] = 0xf08c7, + ["md-archive"] = 0xf003c, + ["md-archive_alert"] = 0xf14fd, + ["md-archive_alert_outline"] = 0xf14fe, + ["md-archive_arrow_down"] = 0xf1259, + ["md-archive_arrow_down_outline"] = 0xf125a, + ["md-archive_arrow_up"] = 0xf125b, + ["md-archive_arrow_up_outline"] = 0xf125c, + ["md-archive_cancel"] = 0xf174b, + ["md-archive_cancel_outline"] = 0xf174c, + ["md-archive_check"] = 0xf174d, + ["md-archive_check_outline"] = 0xf174e, + ["md-archive_clock"] = 0xf174f, + ["md-archive_clock_outline"] = 0xf1750, + ["md-archive_cog"] = 0xf1751, + ["md-archive_cog_outline"] = 0xf1752, + ["md-archive_edit"] = 0xf1753, + ["md-archive_edit_outline"] = 0xf1754, + ["md-archive_eye"] = 0xf1755, + ["md-archive_eye_outline"] = 0xf1756, + ["md-archive_lock"] = 0xf1757, + ["md-archive_lock_open"] = 0xf1758, + ["md-archive_lock_open_outline"] = 0xf1759, + ["md-archive_lock_outline"] = 0xf175a, + ["md-archive_marker"] = 0xf175b, + ["md-archive_marker_outline"] = 0xf175c, + ["md-archive_minus"] = 0xf175d, + ["md-archive_minus_outline"] = 0xf175e, + ["md-archive_music"] = 0xf175f, + ["md-archive_music_outline"] = 0xf1760, + ["md-archive_off"] = 0xf1761, + ["md-archive_off_outline"] = 0xf1762, + ["md-archive_outline"] = 0xf120e, + ["md-archive_plus"] = 0xf1763, + ["md-archive_plus_outline"] = 0xf1764, + ["md-archive_refresh"] = 0xf1765, + ["md-archive_refresh_outline"] = 0xf1766, + ["md-archive_remove"] = 0xf1767, + ["md-archive_remove_outline"] = 0xf1768, + ["md-archive_search"] = 0xf1769, + ["md-archive_search_outline"] = 0xf176a, + ["md-archive_settings"] = 0xf176b, + ["md-archive_settings_outline"] = 0xf176c, + ["md-archive_star"] = 0xf176d, + ["md-archive_star_outline"] = 0xf176e, + ["md-archive_sync"] = 0xf176f, + ["md-archive_sync_outline"] = 0xf1770, + ["md-arm_flex"] = 0xf0fd7, + ["md-arm_flex_outline"] = 0xf0fd6, + ["md-arrange_bring_forward"] = 0xf003d, + ["md-arrange_bring_to_front"] = 0xf003e, + ["md-arrange_send_backward"] = 0xf003f, + ["md-arrange_send_to_back"] = 0xf0040, + ["md-arrow_all"] = 0xf0041, + ["md-arrow_bottom_left"] = 0xf0042, + ["md-arrow_bottom_left_bold_box"] = 0xf1964, + ["md-arrow_bottom_left_bold_box_outline"] = 0xf1965, + ["md-arrow_bottom_left_bold_outline"] = 0xf09b7, + ["md-arrow_bottom_left_thick"] = 0xf09b8, + ["md-arrow_bottom_left_thin"] = 0xf19b6, + ["md-arrow_bottom_left_thin_circle_outline"] = 0xf1596, + ["md-arrow_bottom_right"] = 0xf0043, + ["md-arrow_bottom_right_bold_box"] = 0xf1966, + ["md-arrow_bottom_right_bold_box_outline"] = 0xf1967, + ["md-arrow_bottom_right_bold_outline"] = 0xf09b9, + ["md-arrow_bottom_right_thick"] = 0xf09ba, + ["md-arrow_bottom_right_thin"] = 0xf19b7, + ["md-arrow_bottom_right_thin_circle_outline"] = 0xf1595, + ["md-arrow_collapse"] = 0xf0615, + ["md-arrow_collapse_all"] = 0xf0044, + ["md-arrow_collapse_down"] = 0xf0792, + ["md-arrow_collapse_horizontal"] = 0xf084c, + ["md-arrow_collapse_left"] = 0xf0793, + ["md-arrow_collapse_right"] = 0xf0794, + ["md-arrow_collapse_up"] = 0xf0795, + ["md-arrow_collapse_vertical"] = 0xf084d, + ["md-arrow_decision"] = 0xf09bb, + ["md-arrow_decision_auto"] = 0xf09bc, + ["md-arrow_decision_auto_outline"] = 0xf09bd, + ["md-arrow_decision_outline"] = 0xf09be, + ["md-arrow_down"] = 0xf0045, + ["md-arrow_down_bold"] = 0xf072e, + ["md-arrow_down_bold_box"] = 0xf072f, + ["md-arrow_down_bold_box_outline"] = 0xf0730, + ["md-arrow_down_bold_circle"] = 0xf0047, + ["md-arrow_down_bold_circle_outline"] = 0xf0048, + ["md-arrow_down_bold_hexagon_outline"] = 0xf0049, + ["md-arrow_down_bold_outline"] = 0xf09bf, + ["md-arrow_down_box"] = 0xf06c0, + ["md-arrow_down_circle"] = 0xf0cdb, + ["md-arrow_down_circle_outline"] = 0xf0cdc, + ["md-arrow_down_drop_circle"] = 0xf004a, + ["md-arrow_down_drop_circle_outline"] = 0xf004b, + ["md-arrow_down_left"] = 0xf17a1, + ["md-arrow_down_left_bold"] = 0xf17a2, + ["md-arrow_down_right"] = 0xf17a3, + ["md-arrow_down_right_bold"] = 0xf17a4, + ["md-arrow_down_thick"] = 0xf0046, + ["md-arrow_down_thin"] = 0xf19b3, + ["md-arrow_down_thin_circle_outline"] = 0xf1599, + ["md-arrow_expand"] = 0xf0616, + ["md-arrow_expand_all"] = 0xf004c, + ["md-arrow_expand_down"] = 0xf0796, + ["md-arrow_expand_horizontal"] = 0xf084e, + ["md-arrow_expand_left"] = 0xf0797, + ["md-arrow_expand_right"] = 0xf0798, + ["md-arrow_expand_up"] = 0xf0799, + ["md-arrow_expand_vertical"] = 0xf084f, + ["md-arrow_horizontal_lock"] = 0xf115b, + ["md-arrow_left"] = 0xf004d, + ["md-arrow_left_bold"] = 0xf0731, + ["md-arrow_left_bold_box"] = 0xf0732, + ["md-arrow_left_bold_box_outline"] = 0xf0733, + ["md-arrow_left_bold_circle"] = 0xf004f, + ["md-arrow_left_bold_circle_outline"] = 0xf0050, + ["md-arrow_left_bold_hexagon_outline"] = 0xf0051, + ["md-arrow_left_bold_outline"] = 0xf09c0, + ["md-arrow_left_bottom"] = 0xf17a5, + ["md-arrow_left_bottom_bold"] = 0xf17a6, + ["md-arrow_left_box"] = 0xf06c1, + ["md-arrow_left_circle"] = 0xf0cdd, + ["md-arrow_left_circle_outline"] = 0xf0cde, + ["md-arrow_left_drop_circle"] = 0xf0052, + ["md-arrow_left_drop_circle_outline"] = 0xf0053, + ["md-arrow_left_right"] = 0xf0e73, + ["md-arrow_left_right_bold"] = 0xf0e74, + ["md-arrow_left_right_bold_outline"] = 0xf09c1, + ["md-arrow_left_thick"] = 0xf004e, + ["md-arrow_left_thin"] = 0xf19b1, + ["md-arrow_left_thin_circle_outline"] = 0xf159a, + ["md-arrow_left_top"] = 0xf17a7, + ["md-arrow_left_top_bold"] = 0xf17a8, + ["md-arrow_projectile"] = 0xf1840, + ["md-arrow_projectile_multiple"] = 0xf183f, + ["md-arrow_right"] = 0xf0054, + ["md-arrow_right_bold"] = 0xf0734, + ["md-arrow_right_bold_box"] = 0xf0735, + ["md-arrow_right_bold_box_outline"] = 0xf0736, + ["md-arrow_right_bold_circle"] = 0xf0056, + ["md-arrow_right_bold_circle_outline"] = 0xf0057, + ["md-arrow_right_bold_hexagon_outline"] = 0xf0058, + ["md-arrow_right_bold_outline"] = 0xf09c2, + ["md-arrow_right_bottom"] = 0xf17a9, + ["md-arrow_right_bottom_bold"] = 0xf17aa, + ["md-arrow_right_box"] = 0xf06c2, + ["md-arrow_right_circle"] = 0xf0cdf, + ["md-arrow_right_circle_outline"] = 0xf0ce0, + ["md-arrow_right_drop_circle"] = 0xf0059, + ["md-arrow_right_drop_circle_outline"] = 0xf005a, + ["md-arrow_right_thick"] = 0xf0055, + ["md-arrow_right_thin"] = 0xf19b0, + ["md-arrow_right_thin_circle_outline"] = 0xf1598, + ["md-arrow_right_top"] = 0xf17ab, + ["md-arrow_right_top_bold"] = 0xf17ac, + ["md-arrow_split_horizontal"] = 0xf093b, + ["md-arrow_split_vertical"] = 0xf093c, + ["md-arrow_top_left"] = 0xf005b, + ["md-arrow_top_left_bold_box"] = 0xf1968, + ["md-arrow_top_left_bold_box_outline"] = 0xf1969, + ["md-arrow_top_left_bold_outline"] = 0xf09c3, + ["md-arrow_top_left_bottom_right"] = 0xf0e75, + ["md-arrow_top_left_bottom_right_bold"] = 0xf0e76, + ["md-arrow_top_left_thick"] = 0xf09c4, + ["md-arrow_top_left_thin"] = 0xf19b5, + ["md-arrow_top_left_thin_circle_outline"] = 0xf1593, + ["md-arrow_top_right"] = 0xf005c, + ["md-arrow_top_right_bold_box"] = 0xf196a, + ["md-arrow_top_right_bold_box_outline"] = 0xf196b, + ["md-arrow_top_right_bold_outline"] = 0xf09c5, + ["md-arrow_top_right_bottom_left"] = 0xf0e77, + ["md-arrow_top_right_bottom_left_bold"] = 0xf0e78, + ["md-arrow_top_right_thick"] = 0xf09c6, + ["md-arrow_top_right_thin"] = 0xf19b4, + ["md-arrow_top_right_thin_circle_outline"] = 0xf1594, + ["md-arrow_u_down_left"] = 0xf17ad, + ["md-arrow_u_down_left_bold"] = 0xf17ae, + ["md-arrow_u_down_right"] = 0xf17af, + ["md-arrow_u_down_right_bold"] = 0xf17b0, + ["md-arrow_u_left_bottom"] = 0xf17b1, + ["md-arrow_u_left_bottom_bold"] = 0xf17b2, + ["md-arrow_u_left_top"] = 0xf17b3, + ["md-arrow_u_left_top_bold"] = 0xf17b4, + ["md-arrow_u_right_bottom"] = 0xf17b5, + ["md-arrow_u_right_bottom_bold"] = 0xf17b6, + ["md-arrow_u_right_top"] = 0xf17b7, + ["md-arrow_u_right_top_bold"] = 0xf17b8, + ["md-arrow_u_up_left"] = 0xf17b9, + ["md-arrow_u_up_left_bold"] = 0xf17ba, + ["md-arrow_u_up_right"] = 0xf17bb, + ["md-arrow_u_up_right_bold"] = 0xf17bc, + ["md-arrow_up"] = 0xf005d, + ["md-arrow_up_bold"] = 0xf0737, + ["md-arrow_up_bold_box"] = 0xf0738, + ["md-arrow_up_bold_box_outline"] = 0xf0739, + ["md-arrow_up_bold_circle"] = 0xf005f, + ["md-arrow_up_bold_circle_outline"] = 0xf0060, + ["md-arrow_up_bold_hexagon_outline"] = 0xf0061, + ["md-arrow_up_bold_outline"] = 0xf09c7, + ["md-arrow_up_box"] = 0xf06c3, + ["md-arrow_up_circle"] = 0xf0ce1, + ["md-arrow_up_circle_outline"] = 0xf0ce2, + ["md-arrow_up_down"] = 0xf0e79, + ["md-arrow_up_down_bold"] = 0xf0e7a, + ["md-arrow_up_down_bold_outline"] = 0xf09c8, + ["md-arrow_up_drop_circle"] = 0xf0062, + ["md-arrow_up_drop_circle_outline"] = 0xf0063, + ["md-arrow_up_left"] = 0xf17bd, + ["md-arrow_up_left_bold"] = 0xf17be, + ["md-arrow_up_right"] = 0xf17bf, + ["md-arrow_up_right_bold"] = 0xf17c0, + ["md-arrow_up_thick"] = 0xf005e, + ["md-arrow_up_thin"] = 0xf19b2, + ["md-arrow_up_thin_circle_outline"] = 0xf1597, + ["md-arrow_vertical_lock"] = 0xf115c, + ["md-artstation"] = 0xf0b5b, + ["md-aspect_ratio"] = 0xf0a24, + ["md-assistant"] = 0xf0064, + ["md-asterisk"] = 0xf06c4, + ["md-asterisk_circle_outline"] = 0xf1a27, + ["md-at"] = 0xf0065, + ["md-atlassian"] = 0xf0804, + ["md-atm"] = 0xf0d47, + ["md-atom"] = 0xf0768, + ["md-atom_variant"] = 0xf0e7b, + ["md-attachment"] = 0xf0066, + ["md-attachment_check"] = 0xf1ac1, + ["md-attachment_lock"] = 0xf19c4, + ["md-attachment_minus"] = 0xf1ac2, + ["md-attachment_off"] = 0xf1ac3, + ["md-attachment_plus"] = 0xf1ac4, + ["md-attachment_remove"] = 0xf1ac5, + ["md-audio_input_rca"] = 0xf186b, + ["md-audio_input_stereo_minijack"] = 0xf186c, + ["md-audio_input_xlr"] = 0xf186d, + ["md-audio_video"] = 0xf093d, + ["md-audio_video_off"] = 0xf11b6, + ["md-augmented_reality"] = 0xf0850, + ["md-auto_download"] = 0xf137e, + ["md-auto_fix"] = 0xf0068, + ["md-auto_upload"] = 0xf0069, + ["md-autorenew"] = 0xf006a, + ["md-autorenew_off"] = 0xf19e7, + ["md-av_timer"] = 0xf006b, + ["md-aws"] = 0xf0e0f, + ["md-axe"] = 0xf08c8, + ["md-axe_battle"] = 0xf1842, + ["md-axis"] = 0xf0d48, + ["md-axis_arrow"] = 0xf0d49, + ["md-axis_arrow_info"] = 0xf140e, + ["md-axis_arrow_lock"] = 0xf0d4a, + ["md-axis_lock"] = 0xf0d4b, + ["md-axis_x_arrow"] = 0xf0d4c, + ["md-axis_x_arrow_lock"] = 0xf0d4d, + ["md-axis_x_rotate_clockwise"] = 0xf0d4e, + ["md-axis_x_rotate_counterclockwise"] = 0xf0d4f, + ["md-axis_x_y_arrow_lock"] = 0xf0d50, + ["md-axis_y_arrow"] = 0xf0d51, + ["md-axis_y_arrow_lock"] = 0xf0d52, + ["md-axis_y_rotate_clockwise"] = 0xf0d53, + ["md-axis_y_rotate_counterclockwise"] = 0xf0d54, + ["md-axis_z_arrow"] = 0xf0d55, + ["md-axis_z_arrow_lock"] = 0xf0d56, + ["md-axis_z_rotate_clockwise"] = 0xf0d57, + ["md-axis_z_rotate_counterclockwise"] = 0xf0d58, + ["md-babel"] = 0xf0a25, + ["md-baby"] = 0xf006c, + ["md-baby_bottle"] = 0xf0f39, + ["md-baby_bottle_outline"] = 0xf0f3a, + ["md-baby_buggy"] = 0xf13e0, + ["md-baby_carriage"] = 0xf068f, + ["md-baby_carriage_off"] = 0xf0fa0, + ["md-baby_face"] = 0xf0e7c, + ["md-baby_face_outline"] = 0xf0e7d, + ["md-backburger"] = 0xf006d, + ["md-backspace"] = 0xf006e, + ["md-backspace_outline"] = 0xf0b5c, + ["md-backspace_reverse"] = 0xf0e7e, + ["md-backspace_reverse_outline"] = 0xf0e7f, + ["md-backup_restore"] = 0xf006f, + ["md-bacteria"] = 0xf0ed5, + ["md-bacteria_outline"] = 0xf0ed6, + ["md-badge_account"] = 0xf0da7, + ["md-badge_account_alert"] = 0xf0da8, + ["md-badge_account_alert_outline"] = 0xf0da9, + ["md-badge_account_horizontal"] = 0xf0e0d, + ["md-badge_account_horizontal_outline"] = 0xf0e0e, + ["md-badge_account_outline"] = 0xf0daa, + ["md-badminton"] = 0xf0851, + ["md-bag_carry_on"] = 0xf0f3b, + ["md-bag_carry_on_check"] = 0xf0d65, + ["md-bag_carry_on_off"] = 0xf0f3c, + ["md-bag_checked"] = 0xf0f3d, + ["md-bag_personal"] = 0xf0e10, + ["md-bag_personal_off"] = 0xf0e11, + ["md-bag_personal_off_outline"] = 0xf0e12, + ["md-bag_personal_outline"] = 0xf0e13, + ["md-bag_suitcase"] = 0xf158b, + ["md-bag_suitcase_off"] = 0xf158d, + ["md-bag_suitcase_off_outline"] = 0xf158e, + ["md-bag_suitcase_outline"] = 0xf158c, + ["md-baguette"] = 0xf0f3e, + ["md-balcony"] = 0xf1817, + ["md-balloon"] = 0xf0a26, + ["md-ballot"] = 0xf09c9, + ["md-ballot_outline"] = 0xf09ca, + ["md-ballot_recount"] = 0xf0c39, + ["md-ballot_recount_outline"] = 0xf0c3a, + ["md-bandage"] = 0xf0daf, + ["md-bank"] = 0xf0070, + ["md-bank_check"] = 0xf1655, + ["md-bank_minus"] = 0xf0db0, + ["md-bank_off"] = 0xf1656, + ["md-bank_off_outline"] = 0xf1657, + ["md-bank_outline"] = 0xf0e80, + ["md-bank_plus"] = 0xf0db1, + ["md-bank_remove"] = 0xf0db2, + ["md-bank_transfer"] = 0xf0a27, + ["md-bank_transfer_in"] = 0xf0a28, + ["md-bank_transfer_out"] = 0xf0a29, + ["md-barcode"] = 0xf0071, + ["md-barcode_off"] = 0xf1236, + ["md-barcode_scan"] = 0xf0072, + ["md-barley"] = 0xf0073, + ["md-barley_off"] = 0xf0b5d, + ["md-barn"] = 0xf0b5e, + ["md-barrel"] = 0xf0074, + ["md-barrel_outline"] = 0xf1a28, + ["md-baseball"] = 0xf0852, + ["md-baseball_bat"] = 0xf0853, + ["md-baseball_diamond"] = 0xf15ec, + ["md-baseball_diamond_outline"] = 0xf15ed, + ["md-bash"] = 0xf1183, + ["md-basket"] = 0xf0076, + ["md-basket_check"] = 0xf18e5, + ["md-basket_check_outline"] = 0xf18e6, + ["md-basket_fill"] = 0xf0077, + ["md-basket_minus"] = 0xf1523, + ["md-basket_minus_outline"] = 0xf1524, + ["md-basket_off"] = 0xf1525, + ["md-basket_off_outline"] = 0xf1526, + ["md-basket_outline"] = 0xf1181, + ["md-basket_plus"] = 0xf1527, + ["md-basket_plus_outline"] = 0xf1528, + ["md-basket_remove"] = 0xf1529, + ["md-basket_remove_outline"] = 0xf152a, + ["md-basket_unfill"] = 0xf0078, + ["md-basketball"] = 0xf0806, + ["md-basketball_hoop"] = 0xf0c3b, + ["md-basketball_hoop_outline"] = 0xf0c3c, + ["md-bat"] = 0xf0b5f, + ["md-bathtub"] = 0xf1818, + ["md-bathtub_outline"] = 0xf1819, + ["md-battery"] = 0xf0079, + ["md-battery_10"] = 0xf007a, + ["md-battery_10_bluetooth"] = 0xf093e, + ["md-battery_20"] = 0xf007b, + ["md-battery_20_bluetooth"] = 0xf093f, + ["md-battery_30"] = 0xf007c, + ["md-battery_30_bluetooth"] = 0xf0940, + ["md-battery_40"] = 0xf007d, + ["md-battery_40_bluetooth"] = 0xf0941, + ["md-battery_50"] = 0xf007e, + ["md-battery_50_bluetooth"] = 0xf0942, + ["md-battery_60"] = 0xf007f, + ["md-battery_60_bluetooth"] = 0xf0943, + ["md-battery_70"] = 0xf0080, + ["md-battery_70_bluetooth"] = 0xf0944, + ["md-battery_80"] = 0xf0081, + ["md-battery_80_bluetooth"] = 0xf0945, + ["md-battery_90"] = 0xf0082, + ["md-battery_90_bluetooth"] = 0xf0946, + ["md-battery_alert"] = 0xf0083, + ["md-battery_alert_bluetooth"] = 0xf0947, + ["md-battery_alert_variant"] = 0xf10cc, + ["md-battery_alert_variant_outline"] = 0xf10cd, + ["md-battery_arrow_down"] = 0xf17de, + ["md-battery_arrow_down_outline"] = 0xf17df, + ["md-battery_arrow_up"] = 0xf17e0, + ["md-battery_arrow_up_outline"] = 0xf17e1, + ["md-battery_bluetooth"] = 0xf0948, + ["md-battery_bluetooth_variant"] = 0xf0949, + ["md-battery_charging"] = 0xf0084, + ["md-battery_charging_10"] = 0xf089c, + ["md-battery_charging_100"] = 0xf0085, + ["md-battery_charging_20"] = 0xf0086, + ["md-battery_charging_30"] = 0xf0087, + ["md-battery_charging_40"] = 0xf0088, + ["md-battery_charging_50"] = 0xf089d, + ["md-battery_charging_60"] = 0xf0089, + ["md-battery_charging_70"] = 0xf089e, + ["md-battery_charging_80"] = 0xf008a, + ["md-battery_charging_90"] = 0xf008b, + ["md-battery_charging_high"] = 0xf12a6, + ["md-battery_charging_low"] = 0xf12a4, + ["md-battery_charging_medium"] = 0xf12a5, + ["md-battery_charging_outline"] = 0xf089f, + ["md-battery_charging_wireless"] = 0xf0807, + ["md-battery_charging_wireless_10"] = 0xf0808, + ["md-battery_charging_wireless_20"] = 0xf0809, + ["md-battery_charging_wireless_30"] = 0xf080a, + ["md-battery_charging_wireless_40"] = 0xf080b, + ["md-battery_charging_wireless_50"] = 0xf080c, + ["md-battery_charging_wireless_60"] = 0xf080d, + ["md-battery_charging_wireless_70"] = 0xf080e, + ["md-battery_charging_wireless_80"] = 0xf080f, + ["md-battery_charging_wireless_90"] = 0xf0810, + ["md-battery_charging_wireless_alert"] = 0xf0811, + ["md-battery_charging_wireless_outline"] = 0xf0812, + ["md-battery_check"] = 0xf17e2, + ["md-battery_check_outline"] = 0xf17e3, + ["md-battery_clock"] = 0xf19e5, + ["md-battery_clock_outline"] = 0xf19e6, + ["md-battery_heart"] = 0xf120f, + ["md-battery_heart_outline"] = 0xf1210, + ["md-battery_heart_variant"] = 0xf1211, + ["md-battery_high"] = 0xf12a3, + ["md-battery_lock"] = 0xf179c, + ["md-battery_lock_open"] = 0xf179d, + ["md-battery_low"] = 0xf12a1, + ["md-battery_medium"] = 0xf12a2, + ["md-battery_minus"] = 0xf17e4, + ["md-battery_minus_outline"] = 0xf17e5, + ["md-battery_minus_variant"] = 0xf008c, + ["md-battery_negative"] = 0xf008d, + ["md-battery_off"] = 0xf125d, + ["md-battery_off_outline"] = 0xf125e, + ["md-battery_outline"] = 0xf008e, + ["md-battery_plus"] = 0xf17e6, + ["md-battery_plus_outline"] = 0xf17e7, + ["md-battery_plus_variant"] = 0xf008f, + ["md-battery_positive"] = 0xf0090, + ["md-battery_remove"] = 0xf17e8, + ["md-battery_remove_outline"] = 0xf17e9, + ["md-battery_sync"] = 0xf1834, + ["md-battery_sync_outline"] = 0xf1835, + ["md-battery_unknown"] = 0xf0091, + ["md-battery_unknown_bluetooth"] = 0xf094a, + ["md-beach"] = 0xf0092, + ["md-beaker"] = 0xf0cea, + ["md-beaker_alert"] = 0xf1229, + ["md-beaker_alert_outline"] = 0xf122a, + ["md-beaker_check"] = 0xf122b, + ["md-beaker_check_outline"] = 0xf122c, + ["md-beaker_minus"] = 0xf122d, + ["md-beaker_minus_outline"] = 0xf122e, + ["md-beaker_outline"] = 0xf0690, + ["md-beaker_plus"] = 0xf122f, + ["md-beaker_plus_outline"] = 0xf1230, + ["md-beaker_question"] = 0xf1231, + ["md-beaker_question_outline"] = 0xf1232, + ["md-beaker_remove"] = 0xf1233, + ["md-beaker_remove_outline"] = 0xf1234, + ["md-bed"] = 0xf02e3, + ["md-bed_double"] = 0xf0fd4, + ["md-bed_double_outline"] = 0xf0fd3, + ["md-bed_empty"] = 0xf08a0, + ["md-bed_king"] = 0xf0fd2, + ["md-bed_king_outline"] = 0xf0fd1, + ["md-bed_outline"] = 0xf0099, + ["md-bed_queen"] = 0xf0fd0, + ["md-bed_queen_outline"] = 0xf0fdb, + ["md-bed_single"] = 0xf106d, + ["md-bed_single_outline"] = 0xf106e, + ["md-bee"] = 0xf0fa1, + ["md-bee_flower"] = 0xf0fa2, + ["md-beehive_off_outline"] = 0xf13ed, + ["md-beehive_outline"] = 0xf10ce, + ["md-beekeeper"] = 0xf14e2, + ["md-beer"] = 0xf0098, + ["md-beer_outline"] = 0xf130c, + ["md-bell"] = 0xf009a, + ["md-bell_alert"] = 0xf0d59, + ["md-bell_alert_outline"] = 0xf0e81, + ["md-bell_badge"] = 0xf116b, + ["md-bell_badge_outline"] = 0xf0178, + ["md-bell_cancel"] = 0xf13e7, + ["md-bell_cancel_outline"] = 0xf13e8, + ["md-bell_check"] = 0xf11e5, + ["md-bell_check_outline"] = 0xf11e6, + ["md-bell_circle"] = 0xf0d5a, + ["md-bell_circle_outline"] = 0xf0d5b, + ["md-bell_cog"] = 0xf1a29, + ["md-bell_cog_outline"] = 0xf1a2a, + ["md-bell_minus"] = 0xf13e9, + ["md-bell_minus_outline"] = 0xf13ea, + ["md-bell_off"] = 0xf009b, + ["md-bell_off_outline"] = 0xf0a91, + ["md-bell_outline"] = 0xf009c, + ["md-bell_plus"] = 0xf009d, + ["md-bell_plus_outline"] = 0xf0a92, + ["md-bell_remove"] = 0xf13eb, + ["md-bell_remove_outline"] = 0xf13ec, + ["md-bell_ring"] = 0xf009e, + ["md-bell_ring_outline"] = 0xf009f, + ["md-bell_sleep"] = 0xf00a0, + ["md-bell_sleep_outline"] = 0xf0a93, + ["md-beta"] = 0xf00a1, + ["md-betamax"] = 0xf09cb, + ["md-biathlon"] = 0xf0e14, + ["md-bicycle"] = 0xf109c, + ["md-bicycle_basket"] = 0xf1235, + ["md-bicycle_cargo"] = 0xf189c, + ["md-bicycle_electric"] = 0xf15b4, + ["md-bicycle_penny_farthing"] = 0xf15e9, + ["md-bike"] = 0xf00a3, + ["md-bike_fast"] = 0xf111f, + ["md-billboard"] = 0xf1010, + ["md-billiards"] = 0xf0b61, + ["md-billiards_rack"] = 0xf0b62, + ["md-binoculars"] = 0xf00a5, + ["md-bio"] = 0xf00a6, + ["md-biohazard"] = 0xf00a7, + ["md-bird"] = 0xf15c6, + ["md-bitbucket"] = 0xf00a8, + ["md-bitcoin"] = 0xf0813, + ["md-black_mesa"] = 0xf00a9, + ["md-blender"] = 0xf0ceb, + ["md-blender_outline"] = 0xf181a, + ["md-blender_software"] = 0xf00ab, + ["md-blinds"] = 0xf00ac, + ["md-blinds_horizontal"] = 0xf1a2b, + ["md-blinds_horizontal_closed"] = 0xf1a2c, + ["md-blinds_open"] = 0xf1011, + ["md-blinds_vertical"] = 0xf1a2d, + ["md-blinds_vertical_closed"] = 0xf1a2e, + ["md-block_helper"] = 0xf00ad, + ["md-blood_bag"] = 0xf0cec, + ["md-bluetooth"] = 0xf00af, + ["md-bluetooth_audio"] = 0xf00b0, + ["md-bluetooth_connect"] = 0xf00b1, + ["md-bluetooth_off"] = 0xf00b2, + ["md-bluetooth_settings"] = 0xf00b3, + ["md-bluetooth_transfer"] = 0xf00b4, + ["md-blur"] = 0xf00b5, + ["md-blur_linear"] = 0xf00b6, + ["md-blur_off"] = 0xf00b7, + ["md-blur_radial"] = 0xf00b8, + ["md-bolt"] = 0xf0db3, + ["md-bomb"] = 0xf0691, + ["md-bomb_off"] = 0xf06c5, + ["md-bone"] = 0xf00b9, + ["md-bone_off"] = 0xf19e0, + ["md-book"] = 0xf00ba, + ["md-book_account"] = 0xf13ad, + ["md-book_account_outline"] = 0xf13ae, + ["md-book_alert"] = 0xf167c, + ["md-book_alert_outline"] = 0xf167d, + ["md-book_alphabet"] = 0xf061d, + ["md-book_arrow_down"] = 0xf167e, + ["md-book_arrow_down_outline"] = 0xf167f, + ["md-book_arrow_left"] = 0xf1680, + ["md-book_arrow_left_outline"] = 0xf1681, + ["md-book_arrow_right"] = 0xf1682, + ["md-book_arrow_right_outline"] = 0xf1683, + ["md-book_arrow_up"] = 0xf1684, + ["md-book_arrow_up_outline"] = 0xf1685, + ["md-book_cancel"] = 0xf1686, + ["md-book_cancel_outline"] = 0xf1687, + ["md-book_check"] = 0xf14f3, + ["md-book_check_outline"] = 0xf14f4, + ["md-book_clock"] = 0xf1688, + ["md-book_clock_outline"] = 0xf1689, + ["md-book_cog"] = 0xf168a, + ["md-book_cog_outline"] = 0xf168b, + ["md-book_cross"] = 0xf00a2, + ["md-book_edit"] = 0xf168c, + ["md-book_edit_outline"] = 0xf168d, + ["md-book_education"] = 0xf16c9, + ["md-book_education_outline"] = 0xf16ca, + ["md-book_heart"] = 0xf1a1d, + ["md-book_heart_outline"] = 0xf1a1e, + ["md-book_information_variant"] = 0xf106f, + ["md-book_lock"] = 0xf079a, + ["md-book_lock_open"] = 0xf079b, + ["md-book_lock_open_outline"] = 0xf168e, + ["md-book_lock_outline"] = 0xf168f, + ["md-book_marker"] = 0xf1690, + ["md-book_marker_outline"] = 0xf1691, + ["md-book_minus"] = 0xf05d9, + ["md-book_minus_multiple"] = 0xf0a94, + ["md-book_minus_multiple_outline"] = 0xf090b, + ["md-book_minus_outline"] = 0xf1692, + ["md-book_multiple"] = 0xf00bb, + ["md-book_multiple_outline"] = 0xf0436, + ["md-book_music"] = 0xf0067, + ["md-book_music_outline"] = 0xf1693, + ["md-book_off"] = 0xf1694, + ["md-book_off_outline"] = 0xf1695, + ["md-book_open"] = 0xf00bd, + ["md-book_open_blank_variant"] = 0xf00be, + ["md-book_open_outline"] = 0xf0b63, + ["md-book_open_page_variant"] = 0xf05da, + ["md-book_open_page_variant_outline"] = 0xf15d6, + ["md-book_open_variant"] = 0xf14f7, + ["md-book_outline"] = 0xf0b64, + ["md-book_play"] = 0xf0e82, + ["md-book_play_outline"] = 0xf0e83, + ["md-book_plus"] = 0xf05db, + ["md-book_plus_multiple"] = 0xf0a95, + ["md-book_plus_multiple_outline"] = 0xf0ade, + ["md-book_plus_outline"] = 0xf1696, + ["md-book_refresh"] = 0xf1697, + ["md-book_refresh_outline"] = 0xf1698, + ["md-book_remove"] = 0xf0a97, + ["md-book_remove_multiple"] = 0xf0a96, + ["md-book_remove_multiple_outline"] = 0xf04ca, + ["md-book_remove_outline"] = 0xf1699, + ["md-book_search"] = 0xf0e84, + ["md-book_search_outline"] = 0xf0e85, + ["md-book_settings"] = 0xf169a, + ["md-book_settings_outline"] = 0xf169b, + ["md-book_sync"] = 0xf169c, + ["md-book_sync_outline"] = 0xf16c8, + ["md-book_variant"] = 0xf00bf, + ["md-book_variant_multiple"] = 0xf00bc, + ["md-bookmark"] = 0xf00c0, + ["md-bookmark_box_multiple"] = 0xf196c, + ["md-bookmark_box_multiple_outline"] = 0xf196d, + ["md-bookmark_check"] = 0xf00c1, + ["md-bookmark_check_outline"] = 0xf137b, + ["md-bookmark_minus"] = 0xf09cc, + ["md-bookmark_minus_outline"] = 0xf09cd, + ["md-bookmark_multiple"] = 0xf0e15, + ["md-bookmark_multiple_outline"] = 0xf0e16, + ["md-bookmark_music"] = 0xf00c2, + ["md-bookmark_music_outline"] = 0xf1379, + ["md-bookmark_off"] = 0xf09ce, + ["md-bookmark_off_outline"] = 0xf09cf, + ["md-bookmark_outline"] = 0xf00c3, + ["md-bookmark_plus"] = 0xf00c5, + ["md-bookmark_plus_outline"] = 0xf00c4, + ["md-bookmark_remove"] = 0xf00c6, + ["md-bookmark_remove_outline"] = 0xf137a, + ["md-bookshelf"] = 0xf125f, + ["md-boom_gate"] = 0xf0e86, + ["md-boom_gate_alert"] = 0xf0e87, + ["md-boom_gate_alert_outline"] = 0xf0e88, + ["md-boom_gate_arrow_down"] = 0xf0e89, + ["md-boom_gate_arrow_down_outline"] = 0xf0e8a, + ["md-boom_gate_arrow_up"] = 0xf0e8c, + ["md-boom_gate_arrow_up_outline"] = 0xf0e8d, + ["md-boom_gate_outline"] = 0xf0e8b, + ["md-boom_gate_up"] = 0xf17f9, + ["md-boom_gate_up_outline"] = 0xf17fa, + ["md-boombox"] = 0xf05dc, + ["md-boomerang"] = 0xf10cf, + ["md-bootstrap"] = 0xf06c6, + ["md-border_all"] = 0xf00c7, + ["md-border_all_variant"] = 0xf08a1, + ["md-border_bottom"] = 0xf00c8, + ["md-border_bottom_variant"] = 0xf08a2, + ["md-border_color"] = 0xf00c9, + ["md-border_horizontal"] = 0xf00ca, + ["md-border_inside"] = 0xf00cb, + ["md-border_left"] = 0xf00cc, + ["md-border_left_variant"] = 0xf08a3, + ["md-border_none"] = 0xf00cd, + ["md-border_none_variant"] = 0xf08a4, + ["md-border_outside"] = 0xf00ce, + ["md-border_right"] = 0xf00cf, + ["md-border_right_variant"] = 0xf08a5, + ["md-border_style"] = 0xf00d0, + ["md-border_top"] = 0xf00d1, + ["md-border_top_variant"] = 0xf08a6, + ["md-border_vertical"] = 0xf00d2, + ["md-bottle_soda"] = 0xf1070, + ["md-bottle_soda_classic"] = 0xf1071, + ["md-bottle_soda_classic_outline"] = 0xf1363, + ["md-bottle_soda_outline"] = 0xf1072, + ["md-bottle_tonic"] = 0xf112e, + ["md-bottle_tonic_outline"] = 0xf112f, + ["md-bottle_tonic_plus"] = 0xf1130, + ["md-bottle_tonic_plus_outline"] = 0xf1131, + ["md-bottle_tonic_skull"] = 0xf1132, + ["md-bottle_tonic_skull_outline"] = 0xf1133, + ["md-bottle_wine"] = 0xf0854, + ["md-bottle_wine_outline"] = 0xf1310, + ["md-bow_arrow"] = 0xf1841, + ["md-bow_tie"] = 0xf0678, + ["md-bowl"] = 0xf028e, + ["md-bowl_mix"] = 0xf0617, + ["md-bowl_mix_outline"] = 0xf02e4, + ["md-bowl_outline"] = 0xf02a9, + ["md-bowling"] = 0xf00d3, + ["md-box"] = 0xf00d4, + ["md-box_cutter"] = 0xf00d5, + ["md-box_cutter_off"] = 0xf0b4a, + ["md-box_shadow"] = 0xf0637, + ["md-boxing_glove"] = 0xf0b65, + ["md-braille"] = 0xf09d0, + ["md-brain"] = 0xf09d1, + ["md-bread_slice"] = 0xf0cee, + ["md-bread_slice_outline"] = 0xf0cef, + ["md-bridge"] = 0xf0618, + ["md-briefcase"] = 0xf00d6, + ["md-briefcase_account"] = 0xf0cf0, + ["md-briefcase_account_outline"] = 0xf0cf1, + ["md-briefcase_arrow_left_right"] = 0xf1a8d, + ["md-briefcase_arrow_left_right_outline"] = 0xf1a8e, + ["md-briefcase_arrow_up_down"] = 0xf1a8f, + ["md-briefcase_arrow_up_down_outline"] = 0xf1a90, + ["md-briefcase_check"] = 0xf00d7, + ["md-briefcase_check_outline"] = 0xf131e, + ["md-briefcase_clock"] = 0xf10d0, + ["md-briefcase_clock_outline"] = 0xf10d1, + ["md-briefcase_download"] = 0xf00d8, + ["md-briefcase_download_outline"] = 0xf0c3d, + ["md-briefcase_edit"] = 0xf0a98, + ["md-briefcase_edit_outline"] = 0xf0c3e, + ["md-briefcase_eye"] = 0xf17d9, + ["md-briefcase_eye_outline"] = 0xf17da, + ["md-briefcase_minus"] = 0xf0a2a, + ["md-briefcase_minus_outline"] = 0xf0c3f, + ["md-briefcase_off"] = 0xf1658, + ["md-briefcase_off_outline"] = 0xf1659, + ["md-briefcase_outline"] = 0xf0814, + ["md-briefcase_plus"] = 0xf0a2b, + ["md-briefcase_plus_outline"] = 0xf0c40, + ["md-briefcase_remove"] = 0xf0a2c, + ["md-briefcase_remove_outline"] = 0xf0c41, + ["md-briefcase_search"] = 0xf0a2d, + ["md-briefcase_search_outline"] = 0xf0c42, + ["md-briefcase_upload"] = 0xf00d9, + ["md-briefcase_upload_outline"] = 0xf0c43, + ["md-briefcase_variant"] = 0xf1494, + ["md-briefcase_variant_off"] = 0xf165a, + ["md-briefcase_variant_off_outline"] = 0xf165b, + ["md-briefcase_variant_outline"] = 0xf1495, + ["md-brightness_1"] = 0xf00da, + ["md-brightness_2"] = 0xf00db, + ["md-brightness_3"] = 0xf00dc, + ["md-brightness_4"] = 0xf00dd, + ["md-brightness_5"] = 0xf00de, + ["md-brightness_6"] = 0xf00df, + ["md-brightness_7"] = 0xf00e0, + ["md-brightness_auto"] = 0xf00e1, + ["md-brightness_percent"] = 0xf0cf2, + ["md-broadcast"] = 0xf1720, + ["md-broadcast_off"] = 0xf1721, + ["md-broom"] = 0xf00e2, + ["md-brush"] = 0xf00e3, + ["md-brush_off"] = 0xf1771, + ["md-brush_outline"] = 0xf1a0d, + ["md-brush_variant"] = 0xf1813, + ["md-bucket"] = 0xf1415, + ["md-bucket_outline"] = 0xf1416, + ["md-buffet"] = 0xf0578, + ["md-bug"] = 0xf00e4, + ["md-bug_check"] = 0xf0a2e, + ["md-bug_check_outline"] = 0xf0a2f, + ["md-bug_outline"] = 0xf0a30, + ["md-bugle"] = 0xf0db4, + ["md-bulkhead_light"] = 0xf1a2f, + ["md-bulldozer"] = 0xf0b22, + ["md-bullet"] = 0xf0cf3, + ["md-bulletin_board"] = 0xf00e5, + ["md-bullhorn"] = 0xf00e6, + ["md-bullhorn_outline"] = 0xf0b23, + ["md-bullhorn_variant"] = 0xf196e, + ["md-bullhorn_variant_outline"] = 0xf196f, + ["md-bullseye"] = 0xf05dd, + ["md-bullseye_arrow"] = 0xf08c9, + ["md-bulma"] = 0xf12e7, + ["md-bunk_bed"] = 0xf1302, + ["md-bunk_bed_outline"] = 0xf0097, + ["md-bus"] = 0xf00e7, + ["md-bus_alert"] = 0xf0a99, + ["md-bus_articulated_end"] = 0xf079c, + ["md-bus_articulated_front"] = 0xf079d, + ["md-bus_clock"] = 0xf08ca, + ["md-bus_double_decker"] = 0xf079e, + ["md-bus_electric"] = 0xf191d, + ["md-bus_marker"] = 0xf1212, + ["md-bus_multiple"] = 0xf0f3f, + ["md-bus_school"] = 0xf079f, + ["md-bus_side"] = 0xf07a0, + ["md-bus_stop"] = 0xf1012, + ["md-bus_stop_covered"] = 0xf1013, + ["md-bus_stop_uncovered"] = 0xf1014, + ["md-butterfly"] = 0xf1589, + ["md-butterfly_outline"] = 0xf158a, + ["md-cabin_a_frame"] = 0xf188c, + ["md-cable_data"] = 0xf1394, + ["md-cached"] = 0xf00e8, + ["md-cactus"] = 0xf0db5, + ["md-cake"] = 0xf00e9, + ["md-cake_layered"] = 0xf00ea, + ["md-cake_variant"] = 0xf00eb, + ["md-cake_variant_outline"] = 0xf17f0, + ["md-calculator"] = 0xf00ec, + ["md-calculator_variant"] = 0xf0a9a, + ["md-calculator_variant_outline"] = 0xf15a6, + ["md-calendar"] = 0xf00ed, + ["md-calendar_account"] = 0xf0ed7, + ["md-calendar_account_outline"] = 0xf0ed8, + ["md-calendar_alert"] = 0xf0a31, + ["md-calendar_arrow_left"] = 0xf1134, + ["md-calendar_arrow_right"] = 0xf1135, + ["md-calendar_blank"] = 0xf00ee, + ["md-calendar_blank_multiple"] = 0xf1073, + ["md-calendar_blank_outline"] = 0xf0b66, + ["md-calendar_check"] = 0xf00ef, + ["md-calendar_check_outline"] = 0xf0c44, + ["md-calendar_clock"] = 0xf00f0, + ["md-calendar_clock_outline"] = 0xf16e1, + ["md-calendar_collapse_horizontal"] = 0xf189d, + ["md-calendar_cursor"] = 0xf157b, + ["md-calendar_edit"] = 0xf08a7, + ["md-calendar_end"] = 0xf166c, + ["md-calendar_expand_horizontal"] = 0xf189e, + ["md-calendar_export"] = 0xf0b24, + ["md-calendar_heart"] = 0xf09d2, + ["md-calendar_import"] = 0xf0b25, + ["md-calendar_lock"] = 0xf1641, + ["md-calendar_lock_outline"] = 0xf1642, + ["md-calendar_minus"] = 0xf0d5c, + ["md-calendar_month"] = 0xf0e17, + ["md-calendar_month_outline"] = 0xf0e18, + ["md-calendar_multiple"] = 0xf00f1, + ["md-calendar_multiple_check"] = 0xf00f2, + ["md-calendar_multiselect"] = 0xf0a32, + ["md-calendar_outline"] = 0xf0b67, + ["md-calendar_plus"] = 0xf00f3, + ["md-calendar_question"] = 0xf0692, + ["md-calendar_range"] = 0xf0679, + ["md-calendar_range_outline"] = 0xf0b68, + ["md-calendar_refresh"] = 0xf01e1, + ["md-calendar_refresh_outline"] = 0xf0203, + ["md-calendar_remove"] = 0xf00f4, + ["md-calendar_remove_outline"] = 0xf0c45, + ["md-calendar_search"] = 0xf094c, + ["md-calendar_star"] = 0xf09d3, + ["md-calendar_start"] = 0xf166d, + ["md-calendar_sync"] = 0xf0e8e, + ["md-calendar_sync_outline"] = 0xf0e8f, + ["md-calendar_text"] = 0xf00f5, + ["md-calendar_text_outline"] = 0xf0c46, + ["md-calendar_today"] = 0xf00f6, + ["md-calendar_today_outline"] = 0xf1a30, + ["md-calendar_week"] = 0xf0a33, + ["md-calendar_week_begin"] = 0xf0a34, + ["md-calendar_week_begin_outline"] = 0xf1a31, + ["md-calendar_week_end"] = 0xf1a32, + ["md-calendar_week_end_outline"] = 0xf1a33, + ["md-calendar_week_outline"] = 0xf1a34, + ["md-calendar_weekend"] = 0xf0ed9, + ["md-calendar_weekend_outline"] = 0xf0eda, + ["md-call_made"] = 0xf00f7, + ["md-call_merge"] = 0xf00f8, + ["md-call_missed"] = 0xf00f9, + ["md-call_received"] = 0xf00fa, + ["md-call_split"] = 0xf00fb, + ["md-camcorder"] = 0xf00fc, + ["md-camcorder_off"] = 0xf00ff, + ["md-camera"] = 0xf0100, + ["md-camera_account"] = 0xf08cb, + ["md-camera_burst"] = 0xf0693, + ["md-camera_control"] = 0xf0b69, + ["md-camera_document"] = 0xf1871, + ["md-camera_document_off"] = 0xf1872, + ["md-camera_enhance"] = 0xf0101, + ["md-camera_enhance_outline"] = 0xf0b6a, + ["md-camera_flip"] = 0xf15d9, + ["md-camera_flip_outline"] = 0xf15da, + ["md-camera_front"] = 0xf0102, + ["md-camera_front_variant"] = 0xf0103, + ["md-camera_gopro"] = 0xf07a1, + ["md-camera_image"] = 0xf08cc, + ["md-camera_iris"] = 0xf0104, + ["md-camera_lock"] = 0xf1a14, + ["md-camera_lock_outline"] = 0xf1a15, + ["md-camera_marker"] = 0xf19a7, + ["md-camera_marker_outline"] = 0xf19a8, + ["md-camera_metering_center"] = 0xf07a2, + ["md-camera_metering_matrix"] = 0xf07a3, + ["md-camera_metering_partial"] = 0xf07a4, + ["md-camera_metering_spot"] = 0xf07a5, + ["md-camera_off"] = 0xf05df, + ["md-camera_off_outline"] = 0xf19bf, + ["md-camera_outline"] = 0xf0d5d, + ["md-camera_party_mode"] = 0xf0105, + ["md-camera_plus"] = 0xf0edb, + ["md-camera_plus_outline"] = 0xf0edc, + ["md-camera_rear"] = 0xf0106, + ["md-camera_rear_variant"] = 0xf0107, + ["md-camera_retake"] = 0xf0e19, + ["md-camera_retake_outline"] = 0xf0e1a, + ["md-camera_switch"] = 0xf0108, + ["md-camera_switch_outline"] = 0xf084a, + ["md-camera_timer"] = 0xf0109, + ["md-camera_wireless"] = 0xf0db6, + ["md-camera_wireless_outline"] = 0xf0db7, + ["md-campfire"] = 0xf0edd, + ["md-cancel"] = 0xf073a, + ["md-candelabra"] = 0xf17d2, + ["md-candelabra_fire"] = 0xf17d3, + ["md-candle"] = 0xf05e2, + ["md-candy"] = 0xf1970, + ["md-candy_off"] = 0xf1971, + ["md-candy_off_outline"] = 0xf1972, + ["md-candy_outline"] = 0xf1973, + ["md-candycane"] = 0xf010a, + ["md-cannabis"] = 0xf07a6, + ["md-cannabis_off"] = 0xf166e, + ["md-caps_lock"] = 0xf0a9b, + ["md-car"] = 0xf010b, + ["md-car_2_plus"] = 0xf1015, + ["md-car_3_plus"] = 0xf1016, + ["md-car_arrow_left"] = 0xf13b2, + ["md-car_arrow_right"] = 0xf13b3, + ["md-car_back"] = 0xf0e1b, + ["md-car_battery"] = 0xf010c, + ["md-car_brake_abs"] = 0xf0c47, + ["md-car_brake_alert"] = 0xf0c48, + ["md-car_brake_fluid_level"] = 0xf1909, + ["md-car_brake_hold"] = 0xf0d5e, + ["md-car_brake_low_pressure"] = 0xf190a, + ["md-car_brake_parking"] = 0xf0d5f, + ["md-car_brake_retarder"] = 0xf1017, + ["md-car_brake_temperature"] = 0xf190b, + ["md-car_brake_worn_linings"] = 0xf190c, + ["md-car_child_seat"] = 0xf0fa3, + ["md-car_clock"] = 0xf1974, + ["md-car_clutch"] = 0xf1018, + ["md-car_cog"] = 0xf13cc, + ["md-car_connected"] = 0xf010d, + ["md-car_convertible"] = 0xf07a7, + ["md-car_coolant_level"] = 0xf1019, + ["md-car_cruise_control"] = 0xf0d60, + ["md-car_defrost_front"] = 0xf0d61, + ["md-car_defrost_rear"] = 0xf0d62, + ["md-car_door"] = 0xf0b6b, + ["md-car_door_lock"] = 0xf109d, + ["md-car_electric"] = 0xf0b6c, + ["md-car_electric_outline"] = 0xf15b5, + ["md-car_emergency"] = 0xf160f, + ["md-car_esp"] = 0xf0c49, + ["md-car_estate"] = 0xf07a8, + ["md-car_hatchback"] = 0xf07a9, + ["md-car_info"] = 0xf11be, + ["md-car_key"] = 0xf0b6d, + ["md-car_lifted_pickup"] = 0xf152d, + ["md-car_light_alert"] = 0xf190d, + ["md-car_light_dimmed"] = 0xf0c4a, + ["md-car_light_fog"] = 0xf0c4b, + ["md-car_light_high"] = 0xf0c4c, + ["md-car_limousine"] = 0xf08cd, + ["md-car_multiple"] = 0xf0b6e, + ["md-car_off"] = 0xf0e1c, + ["md-car_outline"] = 0xf14ed, + ["md-car_parking_lights"] = 0xf0d63, + ["md-car_pickup"] = 0xf07aa, + ["md-car_seat"] = 0xf0fa4, + ["md-car_seat_cooler"] = 0xf0fa5, + ["md-car_seat_heater"] = 0xf0fa6, + ["md-car_select"] = 0xf1879, + ["md-car_settings"] = 0xf13cd, + ["md-car_shift_pattern"] = 0xf0f40, + ["md-car_side"] = 0xf07ab, + ["md-car_speed_limiter"] = 0xf190e, + ["md-car_sports"] = 0xf07ac, + ["md-car_tire_alert"] = 0xf0c4d, + ["md-car_traction_control"] = 0xf0d64, + ["md-car_turbocharger"] = 0xf101a, + ["md-car_wash"] = 0xf010e, + ["md-car_windshield"] = 0xf101b, + ["md-car_windshield_outline"] = 0xf101c, + ["md-car_wireless"] = 0xf1878, + ["md-car_wrench"] = 0xf1814, + ["md-carabiner"] = 0xf14c0, + ["md-caravan"] = 0xf07ad, + ["md-card"] = 0xf0b6f, + ["md-card_account_details"] = 0xf05d2, + ["md-card_account_details_outline"] = 0xf0dab, + ["md-card_account_details_star"] = 0xf02a3, + ["md-card_account_details_star_outline"] = 0xf06db, + ["md-card_account_mail"] = 0xf018e, + ["md-card_account_mail_outline"] = 0xf0e98, + ["md-card_account_phone"] = 0xf0e99, + ["md-card_account_phone_outline"] = 0xf0e9a, + ["md-card_bulleted"] = 0xf0b70, + ["md-card_bulleted_off"] = 0xf0b71, + ["md-card_bulleted_off_outline"] = 0xf0b72, + ["md-card_bulleted_outline"] = 0xf0b73, + ["md-card_bulleted_settings"] = 0xf0b74, + ["md-card_bulleted_settings_outline"] = 0xf0b75, + ["md-card_minus"] = 0xf1600, + ["md-card_minus_outline"] = 0xf1601, + ["md-card_multiple"] = 0xf17f1, + ["md-card_multiple_outline"] = 0xf17f2, + ["md-card_off"] = 0xf1602, + ["md-card_off_outline"] = 0xf1603, + ["md-card_outline"] = 0xf0b76, + ["md-card_plus"] = 0xf11ff, + ["md-card_plus_outline"] = 0xf1200, + ["md-card_remove"] = 0xf1604, + ["md-card_remove_outline"] = 0xf1605, + ["md-card_search"] = 0xf1074, + ["md-card_search_outline"] = 0xf1075, + ["md-card_text"] = 0xf0b77, + ["md-card_text_outline"] = 0xf0b78, + ["md-cards"] = 0xf0638, + ["md-cards_club"] = 0xf08ce, + ["md-cards_club_outline"] = 0xf189f, + ["md-cards_diamond"] = 0xf08cf, + ["md-cards_diamond_outline"] = 0xf101d, + ["md-cards_outline"] = 0xf0639, + ["md-cards_playing"] = 0xf18a1, + ["md-cards_playing_club"] = 0xf18a2, + ["md-cards_playing_club_multiple"] = 0xf18a3, + ["md-cards_playing_club_multiple_outline"] = 0xf18a4, + ["md-cards_playing_club_outline"] = 0xf18a5, + ["md-cards_playing_diamond"] = 0xf18a6, + ["md-cards_playing_diamond_multiple"] = 0xf18a7, + ["md-cards_playing_diamond_multiple_outline"] = 0xf18a8, + ["md-cards_playing_diamond_outline"] = 0xf18a9, + ["md-cards_playing_heart"] = 0xf18aa, + ["md-cards_playing_heart_multiple"] = 0xf18ab, + ["md-cards_playing_heart_multiple_outline"] = 0xf18ac, + ["md-cards_playing_heart_outline"] = 0xf18ad, + ["md-cards_playing_outline"] = 0xf063a, + ["md-cards_playing_spade"] = 0xf18ae, + ["md-cards_playing_spade_multiple"] = 0xf18af, + ["md-cards_playing_spade_multiple_outline"] = 0xf18b0, + ["md-cards_playing_spade_outline"] = 0xf18b1, + ["md-cards_spade"] = 0xf08d1, + ["md-cards_spade_outline"] = 0xf18b2, + ["md-cards_variant"] = 0xf06c7, + ["md-carrot"] = 0xf010f, + ["md-cart"] = 0xf0110, + ["md-cart_arrow_down"] = 0xf0d66, + ["md-cart_arrow_right"] = 0xf0c4e, + ["md-cart_arrow_up"] = 0xf0d67, + ["md-cart_check"] = 0xf15ea, + ["md-cart_heart"] = 0xf18e0, + ["md-cart_minus"] = 0xf0d68, + ["md-cart_off"] = 0xf066b, + ["md-cart_outline"] = 0xf0111, + ["md-cart_plus"] = 0xf0112, + ["md-cart_remove"] = 0xf0d69, + ["md-cart_variant"] = 0xf15eb, + ["md-case_sensitive_alt"] = 0xf0113, + ["md-cash"] = 0xf0114, + ["md-cash_100"] = 0xf0115, + ["md-cash_check"] = 0xf14ee, + ["md-cash_clock"] = 0xf1a91, + ["md-cash_fast"] = 0xf185c, + ["md-cash_lock"] = 0xf14ea, + ["md-cash_lock_open"] = 0xf14eb, + ["md-cash_marker"] = 0xf0db8, + ["md-cash_minus"] = 0xf1260, + ["md-cash_multiple"] = 0xf0116, + ["md-cash_plus"] = 0xf1261, + ["md-cash_refund"] = 0xf0a9c, + ["md-cash_register"] = 0xf0cf4, + ["md-cash_remove"] = 0xf1262, + ["md-cash_sync"] = 0xf1a92, + ["md-cassette"] = 0xf09d4, + ["md-cast"] = 0xf0118, + ["md-cast_audio"] = 0xf101e, + ["md-cast_audio_variant"] = 0xf1749, + ["md-cast_connected"] = 0xf0119, + ["md-cast_education"] = 0xf0e1d, + ["md-cast_off"] = 0xf078a, + ["md-cast_variant"] = 0xf001f, + ["md-castle"] = 0xf011a, + ["md-cat"] = 0xf011b, + ["md-cctv"] = 0xf07ae, + ["md-cctv_off"] = 0xf185f, + ["md-ceiling_fan"] = 0xf1797, + ["md-ceiling_fan_light"] = 0xf1798, + ["md-ceiling_light"] = 0xf0769, + ["md-ceiling_light_multiple"] = 0xf18dd, + ["md-ceiling_light_multiple_outline"] = 0xf18de, + ["md-ceiling_light_outline"] = 0xf17c7, + ["md-cellphone"] = 0xf011c, + ["md-cellphone_arrow_down"] = 0xf09d5, + ["md-cellphone_arrow_down_variant"] = 0xf19c5, + ["md-cellphone_basic"] = 0xf011e, + ["md-cellphone_charging"] = 0xf1397, + ["md-cellphone_check"] = 0xf17fd, + ["md-cellphone_cog"] = 0xf0951, + ["md-cellphone_dock"] = 0xf011f, + ["md-cellphone_information"] = 0xf0f41, + ["md-cellphone_key"] = 0xf094e, + ["md-cellphone_link"] = 0xf0121, + ["md-cellphone_link_off"] = 0xf0122, + ["md-cellphone_lock"] = 0xf094f, + ["md-cellphone_marker"] = 0xf183a, + ["md-cellphone_message"] = 0xf08d3, + ["md-cellphone_message_off"] = 0xf10d2, + ["md-cellphone_nfc"] = 0xf0e90, + ["md-cellphone_nfc_off"] = 0xf12d8, + ["md-cellphone_off"] = 0xf0950, + ["md-cellphone_play"] = 0xf101f, + ["md-cellphone_remove"] = 0xf094d, + ["md-cellphone_screenshot"] = 0xf0a35, + ["md-cellphone_settings"] = 0xf0123, + ["md-cellphone_sound"] = 0xf0952, + ["md-cellphone_text"] = 0xf08d2, + ["md-cellphone_wireless"] = 0xf0815, + ["md-centos"] = 0xf111a, + ["md-certificate"] = 0xf0124, + ["md-certificate_outline"] = 0xf1188, + ["md-chair_rolling"] = 0xf0f48, + ["md-chair_school"] = 0xf0125, + ["md-chandelier"] = 0xf1793, + ["md-charity"] = 0xf0c4f, + ["md-chart_arc"] = 0xf0126, + ["md-chart_areaspline"] = 0xf0127, + ["md-chart_areaspline_variant"] = 0xf0e91, + ["md-chart_bar"] = 0xf0128, + ["md-chart_bar_stacked"] = 0xf076a, + ["md-chart_bell_curve"] = 0xf0c50, + ["md-chart_bell_curve_cumulative"] = 0xf0fa7, + ["md-chart_box"] = 0xf154d, + ["md-chart_box_outline"] = 0xf154e, + ["md-chart_box_plus_outline"] = 0xf154f, + ["md-chart_bubble"] = 0xf05e3, + ["md-chart_donut"] = 0xf07af, + ["md-chart_donut_variant"] = 0xf07b0, + ["md-chart_gantt"] = 0xf066c, + ["md-chart_histogram"] = 0xf0129, + ["md-chart_line"] = 0xf012a, + ["md-chart_line_stacked"] = 0xf076b, + ["md-chart_line_variant"] = 0xf07b1, + ["md-chart_multiline"] = 0xf08d4, + ["md-chart_multiple"] = 0xf1213, + ["md-chart_pie"] = 0xf012b, + ["md-chart_ppf"] = 0xf1380, + ["md-chart_sankey"] = 0xf11df, + ["md-chart_sankey_variant"] = 0xf11e0, + ["md-chart_scatter_plot"] = 0xf0e92, + ["md-chart_scatter_plot_hexbin"] = 0xf066d, + ["md-chart_timeline"] = 0xf066e, + ["md-chart_timeline_variant"] = 0xf0e93, + ["md-chart_timeline_variant_shimmer"] = 0xf15b6, + ["md-chart_tree"] = 0xf0e94, + ["md-chart_waterfall"] = 0xf1918, + ["md-chat"] = 0xf0b79, + ["md-chat_alert"] = 0xf0b7a, + ["md-chat_alert_outline"] = 0xf12c9, + ["md-chat_minus"] = 0xf1410, + ["md-chat_minus_outline"] = 0xf1413, + ["md-chat_outline"] = 0xf0ede, + ["md-chat_plus"] = 0xf140f, + ["md-chat_plus_outline"] = 0xf1412, + ["md-chat_processing"] = 0xf0b7b, + ["md-chat_processing_outline"] = 0xf12ca, + ["md-chat_question"] = 0xf1738, + ["md-chat_question_outline"] = 0xf1739, + ["md-chat_remove"] = 0xf1411, + ["md-chat_remove_outline"] = 0xf1414, + ["md-chat_sleep"] = 0xf12d1, + ["md-chat_sleep_outline"] = 0xf12d2, + ["md-check"] = 0xf012c, + ["md-check_all"] = 0xf012d, + ["md-check_bold"] = 0xf0e1e, + ["md-check_circle"] = 0xf05e0, + ["md-check_circle_outline"] = 0xf05e1, + ["md-check_decagram"] = 0xf0791, + ["md-check_decagram_outline"] = 0xf1740, + ["md-check_network"] = 0xf0c53, + ["md-check_network_outline"] = 0xf0c54, + ["md-check_outline"] = 0xf0855, + ["md-check_underline"] = 0xf0e1f, + ["md-check_underline_circle"] = 0xf0e20, + ["md-check_underline_circle_outline"] = 0xf0e21, + ["md-checkbook"] = 0xf0a9d, + ["md-checkbox_blank"] = 0xf012e, + ["md-checkbox_blank_badge"] = 0xf1176, + ["md-checkbox_blank_badge_outline"] = 0xf0117, + ["md-checkbox_blank_circle"] = 0xf0765, + ["md-checkbox_blank_circle_outline"] = 0xf0766, + ["md-checkbox_blank_off"] = 0xf12ec, + ["md-checkbox_blank_off_outline"] = 0xf12ed, + ["md-checkbox_blank_outline"] = 0xf0131, + ["md-checkbox_intermediate"] = 0xf0856, + ["md-checkbox_marked"] = 0xf0132, + ["md-checkbox_marked_circle"] = 0xf0133, + ["md-checkbox_marked_circle_outline"] = 0xf0134, + ["md-checkbox_marked_circle_plus_outline"] = 0xf1927, + ["md-checkbox_marked_outline"] = 0xf0135, + ["md-checkbox_multiple_blank"] = 0xf0136, + ["md-checkbox_multiple_blank_circle"] = 0xf063b, + ["md-checkbox_multiple_blank_circle_outline"] = 0xf063c, + ["md-checkbox_multiple_blank_outline"] = 0xf0137, + ["md-checkbox_multiple_marked"] = 0xf0138, + ["md-checkbox_multiple_marked_circle"] = 0xf063d, + ["md-checkbox_multiple_marked_circle_outline"] = 0xf063e, + ["md-checkbox_multiple_marked_outline"] = 0xf0139, + ["md-checkbox_multiple_outline"] = 0xf0c51, + ["md-checkbox_outline"] = 0xf0c52, + ["md-checkerboard"] = 0xf013a, + ["md-checkerboard_minus"] = 0xf1202, + ["md-checkerboard_plus"] = 0xf1201, + ["md-checkerboard_remove"] = 0xf1203, + ["md-cheese"] = 0xf12b9, + ["md-cheese_off"] = 0xf13ee, + ["md-chef_hat"] = 0xf0b7c, + ["md-chemical_weapon"] = 0xf013b, + ["md-chess_bishop"] = 0xf085c, + ["md-chess_king"] = 0xf0857, + ["md-chess_knight"] = 0xf0858, + ["md-chess_pawn"] = 0xf0859, + ["md-chess_queen"] = 0xf085a, + ["md-chess_rook"] = 0xf085b, + ["md-chevron_double_down"] = 0xf013c, + ["md-chevron_double_left"] = 0xf013d, + ["md-chevron_double_right"] = 0xf013e, + ["md-chevron_double_up"] = 0xf013f, + ["md-chevron_down"] = 0xf0140, + ["md-chevron_down_box"] = 0xf09d6, + ["md-chevron_down_box_outline"] = 0xf09d7, + ["md-chevron_down_circle"] = 0xf0b26, + ["md-chevron_down_circle_outline"] = 0xf0b27, + ["md-chevron_left"] = 0xf0141, + ["md-chevron_left_box"] = 0xf09d8, + ["md-chevron_left_box_outline"] = 0xf09d9, + ["md-chevron_left_circle"] = 0xf0b28, + ["md-chevron_left_circle_outline"] = 0xf0b29, + ["md-chevron_right"] = 0xf0142, + ["md-chevron_right_box"] = 0xf09da, + ["md-chevron_right_box_outline"] = 0xf09db, + ["md-chevron_right_circle"] = 0xf0b2a, + ["md-chevron_right_circle_outline"] = 0xf0b2b, + ["md-chevron_triple_down"] = 0xf0db9, + ["md-chevron_triple_left"] = 0xf0dba, + ["md-chevron_triple_right"] = 0xf0dbb, + ["md-chevron_triple_up"] = 0xf0dbc, + ["md-chevron_up"] = 0xf0143, + ["md-chevron_up_box"] = 0xf09dc, + ["md-chevron_up_box_outline"] = 0xf09dd, + ["md-chevron_up_circle"] = 0xf0b2c, + ["md-chevron_up_circle_outline"] = 0xf0b2d, + ["md-chili_alert"] = 0xf17ea, + ["md-chili_alert_outline"] = 0xf17eb, + ["md-chili_hot"] = 0xf07b2, + ["md-chili_hot_outline"] = 0xf17ec, + ["md-chili_medium"] = 0xf07b3, + ["md-chili_medium_outline"] = 0xf17ed, + ["md-chili_mild"] = 0xf07b4, + ["md-chili_mild_outline"] = 0xf17ee, + ["md-chili_off"] = 0xf1467, + ["md-chili_off_outline"] = 0xf17ef, + ["md-chip"] = 0xf061a, + ["md-church"] = 0xf0144, + ["md-cigar"] = 0xf1189, + ["md-cigar_off"] = 0xf141b, + ["md-circle_box"] = 0xf15dc, + ["md-circle_box_outline"] = 0xf15dd, + ["md-circle_double"] = 0xf0e95, + ["md-circle_edit_outline"] = 0xf08d5, + ["md-circle_expand"] = 0xf0e96, + ["md-circle_half"] = 0xf1395, + ["md-circle_half_full"] = 0xf1396, + ["md-circle_medium"] = 0xf09de, + ["md-circle_multiple"] = 0xf0b38, + ["md-circle_multiple_outline"] = 0xf0695, + ["md-circle_off_outline"] = 0xf10d3, + ["md-circle_opacity"] = 0xf1853, + ["md-circle_slice_1"] = 0xf0a9e, + ["md-circle_slice_2"] = 0xf0a9f, + ["md-circle_slice_3"] = 0xf0aa0, + ["md-circle_slice_4"] = 0xf0aa1, + ["md-circle_slice_5"] = 0xf0aa2, + ["md-circle_slice_6"] = 0xf0aa3, + ["md-circle_slice_7"] = 0xf0aa4, + ["md-circle_slice_8"] = 0xf0aa5, + ["md-circle_small"] = 0xf09df, + ["md-circular_saw"] = 0xf0e22, + ["md-city"] = 0xf0146, + ["md-city_variant"] = 0xf0a36, + ["md-city_variant_outline"] = 0xf0a37, + ["md-clipboard"] = 0xf0147, + ["md-clipboard_account"] = 0xf0148, + ["md-clipboard_account_outline"] = 0xf0c55, + ["md-clipboard_alert"] = 0xf0149, + ["md-clipboard_alert_outline"] = 0xf0cf7, + ["md-clipboard_arrow_down"] = 0xf014a, + ["md-clipboard_arrow_down_outline"] = 0xf0c56, + ["md-clipboard_arrow_left"] = 0xf014b, + ["md-clipboard_arrow_left_outline"] = 0xf0cf8, + ["md-clipboard_arrow_right"] = 0xf0cf9, + ["md-clipboard_arrow_right_outline"] = 0xf0cfa, + ["md-clipboard_arrow_up"] = 0xf0c57, + ["md-clipboard_arrow_up_outline"] = 0xf0c58, + ["md-clipboard_check"] = 0xf014e, + ["md-clipboard_check_multiple"] = 0xf1263, + ["md-clipboard_check_multiple_outline"] = 0xf1264, + ["md-clipboard_check_outline"] = 0xf08a8, + ["md-clipboard_clock"] = 0xf16e2, + ["md-clipboard_clock_outline"] = 0xf16e3, + ["md-clipboard_edit"] = 0xf14e5, + ["md-clipboard_edit_outline"] = 0xf14e6, + ["md-clipboard_file"] = 0xf1265, + ["md-clipboard_file_outline"] = 0xf1266, + ["md-clipboard_flow"] = 0xf06c8, + ["md-clipboard_flow_outline"] = 0xf1117, + ["md-clipboard_list"] = 0xf10d4, + ["md-clipboard_list_outline"] = 0xf10d5, + ["md-clipboard_minus"] = 0xf1618, + ["md-clipboard_minus_outline"] = 0xf1619, + ["md-clipboard_multiple"] = 0xf1267, + ["md-clipboard_multiple_outline"] = 0xf1268, + ["md-clipboard_off"] = 0xf161a, + ["md-clipboard_off_outline"] = 0xf161b, + ["md-clipboard_outline"] = 0xf014c, + ["md-clipboard_play"] = 0xf0c59, + ["md-clipboard_play_multiple"] = 0xf1269, + ["md-clipboard_play_multiple_outline"] = 0xf126a, + ["md-clipboard_play_outline"] = 0xf0c5a, + ["md-clipboard_plus"] = 0xf0751, + ["md-clipboard_plus_outline"] = 0xf131f, + ["md-clipboard_pulse"] = 0xf085d, + ["md-clipboard_pulse_outline"] = 0xf085e, + ["md-clipboard_remove"] = 0xf161c, + ["md-clipboard_remove_outline"] = 0xf161d, + ["md-clipboard_search"] = 0xf161e, + ["md-clipboard_search_outline"] = 0xf161f, + ["md-clipboard_text"] = 0xf014d, + ["md-clipboard_text_clock"] = 0xf18f9, + ["md-clipboard_text_clock_outline"] = 0xf18fa, + ["md-clipboard_text_multiple"] = 0xf126b, + ["md-clipboard_text_multiple_outline"] = 0xf126c, + ["md-clipboard_text_off"] = 0xf1620, + ["md-clipboard_text_off_outline"] = 0xf1621, + ["md-clipboard_text_outline"] = 0xf0a38, + ["md-clipboard_text_play"] = 0xf0c5b, + ["md-clipboard_text_play_outline"] = 0xf0c5c, + ["md-clipboard_text_search"] = 0xf1622, + ["md-clipboard_text_search_outline"] = 0xf1623, + ["md-clippy"] = 0xf014f, + ["md-clock"] = 0xf0954, + ["md-clock_alert"] = 0xf0955, + ["md-clock_alert_outline"] = 0xf05ce, + ["md-clock_check"] = 0xf0fa8, + ["md-clock_check_outline"] = 0xf0fa9, + ["md-clock_digital"] = 0xf0e97, + ["md-clock_edit"] = 0xf19ba, + ["md-clock_edit_outline"] = 0xf19bb, + ["md-clock_end"] = 0xf0151, + ["md-clock_fast"] = 0xf0152, + ["md-clock_in"] = 0xf0153, + ["md-clock_minus"] = 0xf1863, + ["md-clock_minus_outline"] = 0xf1864, + ["md-clock_out"] = 0xf0154, + ["md-clock_outline"] = 0xf0150, + ["md-clock_plus"] = 0xf1861, + ["md-clock_plus_outline"] = 0xf1862, + ["md-clock_remove"] = 0xf1865, + ["md-clock_remove_outline"] = 0xf1866, + ["md-clock_start"] = 0xf0155, + ["md-clock_time_eight"] = 0xf1446, + ["md-clock_time_eight_outline"] = 0xf1452, + ["md-clock_time_eleven"] = 0xf1449, + ["md-clock_time_eleven_outline"] = 0xf1455, + ["md-clock_time_five"] = 0xf1443, + ["md-clock_time_five_outline"] = 0xf144f, + ["md-clock_time_four"] = 0xf1442, + ["md-clock_time_four_outline"] = 0xf144e, + ["md-clock_time_nine"] = 0xf1447, + ["md-clock_time_nine_outline"] = 0xf1453, + ["md-clock_time_one"] = 0xf143f, + ["md-clock_time_one_outline"] = 0xf144b, + ["md-clock_time_seven"] = 0xf1445, + ["md-clock_time_seven_outline"] = 0xf1451, + ["md-clock_time_six"] = 0xf1444, + ["md-clock_time_six_outline"] = 0xf1450, + ["md-clock_time_ten"] = 0xf1448, + ["md-clock_time_ten_outline"] = 0xf1454, + ["md-clock_time_three"] = 0xf1441, + ["md-clock_time_three_outline"] = 0xf144d, + ["md-clock_time_twelve"] = 0xf144a, + ["md-clock_time_twelve_outline"] = 0xf1456, + ["md-clock_time_two"] = 0xf1440, + ["md-clock_time_two_outline"] = 0xf144c, + ["md-close"] = 0xf0156, + ["md-close_box"] = 0xf0157, + ["md-close_box_multiple"] = 0xf0c5d, + ["md-close_box_multiple_outline"] = 0xf0c5e, + ["md-close_box_outline"] = 0xf0158, + ["md-close_circle"] = 0xf0159, + ["md-close_circle_multiple"] = 0xf062a, + ["md-close_circle_multiple_outline"] = 0xf0883, + ["md-close_circle_outline"] = 0xf015a, + ["md-close_network"] = 0xf015b, + ["md-close_network_outline"] = 0xf0c5f, + ["md-close_octagon"] = 0xf015c, + ["md-close_octagon_outline"] = 0xf015d, + ["md-close_outline"] = 0xf06c9, + ["md-close_thick"] = 0xf1398, + ["md-closed_caption"] = 0xf015e, + ["md-closed_caption_outline"] = 0xf0dbd, + ["md-cloud"] = 0xf015f, + ["md-cloud_alert"] = 0xf09e0, + ["md-cloud_braces"] = 0xf07b5, + ["md-cloud_check"] = 0xf0160, + ["md-cloud_check_outline"] = 0xf12cc, + ["md-cloud_circle"] = 0xf0161, + ["md-cloud_download"] = 0xf0162, + ["md-cloud_download_outline"] = 0xf0b7d, + ["md-cloud_lock"] = 0xf11f1, + ["md-cloud_lock_outline"] = 0xf11f2, + ["md-cloud_off_outline"] = 0xf0164, + ["md-cloud_outline"] = 0xf0163, + ["md-cloud_percent"] = 0xf1a35, + ["md-cloud_percent_outline"] = 0xf1a36, + ["md-cloud_print"] = 0xf0165, + ["md-cloud_print_outline"] = 0xf0166, + ["md-cloud_question"] = 0xf0a39, + ["md-cloud_refresh"] = 0xf052a, + ["md-cloud_search"] = 0xf0956, + ["md-cloud_search_outline"] = 0xf0957, + ["md-cloud_sync"] = 0xf063f, + ["md-cloud_sync_outline"] = 0xf12d6, + ["md-cloud_tags"] = 0xf07b6, + ["md-cloud_upload"] = 0xf0167, + ["md-cloud_upload_outline"] = 0xf0b7e, + ["md-clover"] = 0xf0816, + ["md-coach_lamp"] = 0xf1020, + ["md-coach_lamp_variant"] = 0xf1a37, + ["md-coat_rack"] = 0xf109e, + ["md-code_array"] = 0xf0168, + ["md-code_braces"] = 0xf0169, + ["md-code_braces_box"] = 0xf10d6, + ["md-code_brackets"] = 0xf016a, + ["md-code_equal"] = 0xf016b, + ["md-code_greater_than"] = 0xf016c, + ["md-code_greater_than_or_equal"] = 0xf016d, + ["md-code_json"] = 0xf0626, + ["md-code_less_than"] = 0xf016e, + ["md-code_less_than_or_equal"] = 0xf016f, + ["md-code_not_equal"] = 0xf0170, + ["md-code_not_equal_variant"] = 0xf0171, + ["md-code_parentheses"] = 0xf0172, + ["md-code_parentheses_box"] = 0xf10d7, + ["md-code_string"] = 0xf0173, + ["md-code_tags"] = 0xf0174, + ["md-code_tags_check"] = 0xf0694, + ["md-codepen"] = 0xf0175, + ["md-coffee"] = 0xf0176, + ["md-coffee_maker"] = 0xf109f, + ["md-coffee_maker_check"] = 0xf1931, + ["md-coffee_maker_check_outline"] = 0xf1932, + ["md-coffee_maker_outline"] = 0xf181b, + ["md-coffee_off"] = 0xf0faa, + ["md-coffee_off_outline"] = 0xf0fab, + ["md-coffee_outline"] = 0xf06ca, + ["md-coffee_to_go"] = 0xf0177, + ["md-coffee_to_go_outline"] = 0xf130e, + ["md-coffin"] = 0xf0b7f, + ["md-cog"] = 0xf0493, + ["md-cog_box"] = 0xf0494, + ["md-cog_clockwise"] = 0xf11dd, + ["md-cog_counterclockwise"] = 0xf11de, + ["md-cog_off"] = 0xf13ce, + ["md-cog_off_outline"] = 0xf13cf, + ["md-cog_outline"] = 0xf08bb, + ["md-cog_pause"] = 0xf1933, + ["md-cog_pause_outline"] = 0xf1934, + ["md-cog_play"] = 0xf1935, + ["md-cog_play_outline"] = 0xf1936, + ["md-cog_refresh"] = 0xf145e, + ["md-cog_refresh_outline"] = 0xf145f, + ["md-cog_stop"] = 0xf1937, + ["md-cog_stop_outline"] = 0xf1938, + ["md-cog_sync"] = 0xf1460, + ["md-cog_sync_outline"] = 0xf1461, + ["md-cog_transfer"] = 0xf105b, + ["md-cog_transfer_outline"] = 0xf105c, + ["md-cogs"] = 0xf08d6, + ["md-collage"] = 0xf0640, + ["md-collapse_all"] = 0xf0aa6, + ["md-collapse_all_outline"] = 0xf0aa7, + ["md-color_helper"] = 0xf0179, + ["md-comma"] = 0xf0e23, + ["md-comma_box"] = 0xf0e2b, + ["md-comma_box_outline"] = 0xf0e24, + ["md-comma_circle"] = 0xf0e25, + ["md-comma_circle_outline"] = 0xf0e26, + ["md-comment"] = 0xf017a, + ["md-comment_account"] = 0xf017b, + ["md-comment_account_outline"] = 0xf017c, + ["md-comment_alert"] = 0xf017d, + ["md-comment_alert_outline"] = 0xf017e, + ["md-comment_arrow_left"] = 0xf09e1, + ["md-comment_arrow_left_outline"] = 0xf09e2, + ["md-comment_arrow_right"] = 0xf09e3, + ["md-comment_arrow_right_outline"] = 0xf09e4, + ["md-comment_bookmark"] = 0xf15ae, + ["md-comment_bookmark_outline"] = 0xf15af, + ["md-comment_check"] = 0xf017f, + ["md-comment_check_outline"] = 0xf0180, + ["md-comment_edit"] = 0xf11bf, + ["md-comment_edit_outline"] = 0xf12c4, + ["md-comment_eye"] = 0xf0a3a, + ["md-comment_eye_outline"] = 0xf0a3b, + ["md-comment_flash"] = 0xf15b0, + ["md-comment_flash_outline"] = 0xf15b1, + ["md-comment_minus"] = 0xf15df, + ["md-comment_minus_outline"] = 0xf15e0, + ["md-comment_multiple"] = 0xf085f, + ["md-comment_multiple_outline"] = 0xf0181, + ["md-comment_off"] = 0xf15e1, + ["md-comment_off_outline"] = 0xf15e2, + ["md-comment_outline"] = 0xf0182, + ["md-comment_plus"] = 0xf09e5, + ["md-comment_plus_outline"] = 0xf0183, + ["md-comment_processing"] = 0xf0184, + ["md-comment_processing_outline"] = 0xf0185, + ["md-comment_question"] = 0xf0817, + ["md-comment_question_outline"] = 0xf0186, + ["md-comment_quote"] = 0xf1021, + ["md-comment_quote_outline"] = 0xf1022, + ["md-comment_remove"] = 0xf05de, + ["md-comment_remove_outline"] = 0xf0187, + ["md-comment_search"] = 0xf0a3c, + ["md-comment_search_outline"] = 0xf0a3d, + ["md-comment_text"] = 0xf0188, + ["md-comment_text_multiple"] = 0xf0860, + ["md-comment_text_multiple_outline"] = 0xf0861, + ["md-comment_text_outline"] = 0xf0189, + ["md-compare"] = 0xf018a, + ["md-compare_horizontal"] = 0xf1492, + ["md-compare_remove"] = 0xf18b3, + ["md-compare_vertical"] = 0xf1493, + ["md-compass"] = 0xf018b, + ["md-compass_off"] = 0xf0b80, + ["md-compass_off_outline"] = 0xf0b81, + ["md-compass_outline"] = 0xf018c, + ["md-compass_rose"] = 0xf1382, + ["md-compost"] = 0xf1a38, + ["md-cone"] = 0xf194c, + ["md-cone_off"] = 0xf194d, + ["md-connection"] = 0xf1616, + ["md-console"] = 0xf018d, + ["md-console_line"] = 0xf07b7, + ["md-console_network"] = 0xf08a9, + ["md-console_network_outline"] = 0xf0c60, + ["md-consolidate"] = 0xf10d8, + ["md-contactless_payment"] = 0xf0d6a, + ["md-contactless_payment_circle"] = 0xf0321, + ["md-contactless_payment_circle_outline"] = 0xf0408, + ["md-contacts"] = 0xf06cb, + ["md-contacts_outline"] = 0xf05b8, + ["md-contain"] = 0xf0a3e, + ["md-contain_end"] = 0xf0a3f, + ["md-contain_start"] = 0xf0a40, + ["md-content_copy"] = 0xf018f, + ["md-content_cut"] = 0xf0190, + ["md-content_duplicate"] = 0xf0191, + ["md-content_paste"] = 0xf0192, + ["md-content_save"] = 0xf0193, + ["md-content_save_alert"] = 0xf0f42, + ["md-content_save_alert_outline"] = 0xf0f43, + ["md-content_save_all"] = 0xf0194, + ["md-content_save_all_outline"] = 0xf0f44, + ["md-content_save_check"] = 0xf18ea, + ["md-content_save_check_outline"] = 0xf18eb, + ["md-content_save_cog"] = 0xf145b, + ["md-content_save_cog_outline"] = 0xf145c, + ["md-content_save_edit"] = 0xf0cfb, + ["md-content_save_edit_outline"] = 0xf0cfc, + ["md-content_save_move"] = 0xf0e27, + ["md-content_save_move_outline"] = 0xf0e28, + ["md-content_save_off"] = 0xf1643, + ["md-content_save_off_outline"] = 0xf1644, + ["md-content_save_outline"] = 0xf0818, + ["md-content_save_settings"] = 0xf061b, + ["md-content_save_settings_outline"] = 0xf0b2e, + ["md-contrast"] = 0xf0195, + ["md-contrast_box"] = 0xf0196, + ["md-contrast_circle"] = 0xf0197, + ["md-controller_classic"] = 0xf0b82, + ["md-controller_classic_outline"] = 0xf0b83, + ["md-cookie"] = 0xf0198, + ["md-cookie_alert"] = 0xf16d0, + ["md-cookie_alert_outline"] = 0xf16d1, + ["md-cookie_check"] = 0xf16d2, + ["md-cookie_check_outline"] = 0xf16d3, + ["md-cookie_clock"] = 0xf16e4, + ["md-cookie_clock_outline"] = 0xf16e5, + ["md-cookie_cog"] = 0xf16d4, + ["md-cookie_cog_outline"] = 0xf16d5, + ["md-cookie_edit"] = 0xf16e6, + ["md-cookie_edit_outline"] = 0xf16e7, + ["md-cookie_lock"] = 0xf16e8, + ["md-cookie_lock_outline"] = 0xf16e9, + ["md-cookie_minus"] = 0xf16da, + ["md-cookie_minus_outline"] = 0xf16db, + ["md-cookie_off"] = 0xf16ea, + ["md-cookie_off_outline"] = 0xf16eb, + ["md-cookie_outline"] = 0xf16de, + ["md-cookie_plus"] = 0xf16d6, + ["md-cookie_plus_outline"] = 0xf16d7, + ["md-cookie_refresh"] = 0xf16ec, + ["md-cookie_refresh_outline"] = 0xf16ed, + ["md-cookie_remove"] = 0xf16d8, + ["md-cookie_remove_outline"] = 0xf16d9, + ["md-cookie_settings"] = 0xf16dc, + ["md-cookie_settings_outline"] = 0xf16dd, + ["md-coolant_temperature"] = 0xf03c8, + ["md-copyleft"] = 0xf1939, + ["md-copyright"] = 0xf05e6, + ["md-cordova"] = 0xf0958, + ["md-corn"] = 0xf07b8, + ["md-corn_off"] = 0xf13ef, + ["md-cosine_wave"] = 0xf1479, + ["md-counter"] = 0xf0199, + ["md-countertop"] = 0xf181c, + ["md-countertop_outline"] = 0xf181d, + ["md-cow"] = 0xf019a, + ["md-cow_off"] = 0xf18fc, + ["md-cpu_32_bit"] = 0xf0edf, + ["md-cpu_64_bit"] = 0xf0ee0, + ["md-cradle"] = 0xf198b, + ["md-cradle_outline"] = 0xf1991, + ["md-crane"] = 0xf0862, + ["md-creation"] = 0xf0674, + ["md-creative_commons"] = 0xf0d6b, + ["md-credit_card"] = 0xf0fef, + ["md-credit_card_check"] = 0xf13d0, + ["md-credit_card_check_outline"] = 0xf13d1, + ["md-credit_card_chip"] = 0xf190f, + ["md-credit_card_chip_outline"] = 0xf1910, + ["md-credit_card_clock"] = 0xf0ee1, + ["md-credit_card_clock_outline"] = 0xf0ee2, + ["md-credit_card_edit"] = 0xf17d7, + ["md-credit_card_edit_outline"] = 0xf17d8, + ["md-credit_card_fast"] = 0xf1911, + ["md-credit_card_fast_outline"] = 0xf1912, + ["md-credit_card_lock"] = 0xf18e7, + ["md-credit_card_lock_outline"] = 0xf18e8, + ["md-credit_card_marker"] = 0xf06a8, + ["md-credit_card_marker_outline"] = 0xf0dbe, + ["md-credit_card_minus"] = 0xf0fac, + ["md-credit_card_minus_outline"] = 0xf0fad, + ["md-credit_card_multiple"] = 0xf0ff0, + ["md-credit_card_multiple_outline"] = 0xf019c, + ["md-credit_card_off"] = 0xf0ff1, + ["md-credit_card_off_outline"] = 0xf05e4, + ["md-credit_card_outline"] = 0xf019b, + ["md-credit_card_plus"] = 0xf0ff2, + ["md-credit_card_plus_outline"] = 0xf0676, + ["md-credit_card_refresh"] = 0xf1645, + ["md-credit_card_refresh_outline"] = 0xf1646, + ["md-credit_card_refund"] = 0xf0ff3, + ["md-credit_card_refund_outline"] = 0xf0aa8, + ["md-credit_card_remove"] = 0xf0fae, + ["md-credit_card_remove_outline"] = 0xf0faf, + ["md-credit_card_scan"] = 0xf0ff4, + ["md-credit_card_scan_outline"] = 0xf019d, + ["md-credit_card_search"] = 0xf1647, + ["md-credit_card_search_outline"] = 0xf1648, + ["md-credit_card_settings"] = 0xf0ff5, + ["md-credit_card_settings_outline"] = 0xf08d7, + ["md-credit_card_sync"] = 0xf1649, + ["md-credit_card_sync_outline"] = 0xf164a, + ["md-credit_card_wireless"] = 0xf0802, + ["md-credit_card_wireless_off"] = 0xf057a, + ["md-credit_card_wireless_off_outline"] = 0xf057b, + ["md-credit_card_wireless_outline"] = 0xf0d6c, + ["md-cricket"] = 0xf0d6d, + ["md-crop"] = 0xf019e, + ["md-crop_free"] = 0xf019f, + ["md-crop_landscape"] = 0xf01a0, + ["md-crop_portrait"] = 0xf01a1, + ["md-crop_rotate"] = 0xf0696, + ["md-crop_square"] = 0xf01a2, + ["md-cross"] = 0xf0953, + ["md-cross_bolnisi"] = 0xf0ced, + ["md-cross_celtic"] = 0xf0cf5, + ["md-cross_outline"] = 0xf0cf6, + ["md-crosshairs"] = 0xf01a3, + ["md-crosshairs_gps"] = 0xf01a4, + ["md-crosshairs_off"] = 0xf0f45, + ["md-crosshairs_question"] = 0xf1136, + ["md-crowd"] = 0xf1975, + ["md-crown"] = 0xf01a5, + ["md-crown_circle"] = 0xf17dc, + ["md-crown_circle_outline"] = 0xf17dd, + ["md-crown_outline"] = 0xf11d0, + ["md-cryengine"] = 0xf0959, + ["md-crystal_ball"] = 0xf0b2f, + ["md-cube"] = 0xf01a6, + ["md-cube_off"] = 0xf141c, + ["md-cube_off_outline"] = 0xf141d, + ["md-cube_outline"] = 0xf01a7, + ["md-cube_scan"] = 0xf0b84, + ["md-cube_send"] = 0xf01a8, + ["md-cube_unfolded"] = 0xf01a9, + ["md-cup"] = 0xf01aa, + ["md-cup_off"] = 0xf05e5, + ["md-cup_off_outline"] = 0xf137d, + ["md-cup_outline"] = 0xf130f, + ["md-cup_water"] = 0xf01ab, + ["md-cupboard"] = 0xf0f46, + ["md-cupboard_outline"] = 0xf0f47, + ["md-cupcake"] = 0xf095a, + ["md-curling"] = 0xf0863, + ["md-currency_bdt"] = 0xf0864, + ["md-currency_brl"] = 0xf0b85, + ["md-currency_btc"] = 0xf01ac, + ["md-currency_cny"] = 0xf07ba, + ["md-currency_eth"] = 0xf07bb, + ["md-currency_eur"] = 0xf01ad, + ["md-currency_eur_off"] = 0xf1315, + ["md-currency_fra"] = 0xf1a39, + ["md-currency_gbp"] = 0xf01ae, + ["md-currency_ils"] = 0xf0c61, + ["md-currency_inr"] = 0xf01af, + ["md-currency_jpy"] = 0xf07bc, + ["md-currency_krw"] = 0xf07bd, + ["md-currency_kzt"] = 0xf0865, + ["md-currency_mnt"] = 0xf1512, + ["md-currency_ngn"] = 0xf01b0, + ["md-currency_php"] = 0xf09e6, + ["md-currency_rial"] = 0xf0e9c, + ["md-currency_rub"] = 0xf01b1, + ["md-currency_rupee"] = 0xf1976, + ["md-currency_sign"] = 0xf07be, + ["md-currency_try"] = 0xf01b2, + ["md-currency_twd"] = 0xf07bf, + ["md-currency_usd"] = 0xf01c1, + ["md-currency_usd_off"] = 0xf067a, + ["md-current_ac"] = 0xf1480, + ["md-current_dc"] = 0xf095c, + ["md-cursor_default"] = 0xf01c0, + ["md-cursor_default_click"] = 0xf0cfd, + ["md-cursor_default_click_outline"] = 0xf0cfe, + ["md-cursor_default_gesture"] = 0xf1127, + ["md-cursor_default_gesture_outline"] = 0xf1128, + ["md-cursor_default_outline"] = 0xf01bf, + ["md-cursor_move"] = 0xf01be, + ["md-cursor_pointer"] = 0xf01bd, + ["md-cursor_text"] = 0xf05e7, + ["md-curtains"] = 0xf1846, + ["md-curtains_closed"] = 0xf1847, + ["md-cylinder"] = 0xf194e, + ["md-cylinder_off"] = 0xf194f, + ["md-dance_ballroom"] = 0xf15fb, + ["md-dance_pole"] = 0xf1578, + ["md-data_matrix"] = 0xf153c, + ["md-data_matrix_edit"] = 0xf153d, + ["md-data_matrix_minus"] = 0xf153e, + ["md-data_matrix_plus"] = 0xf153f, + ["md-data_matrix_remove"] = 0xf1540, + ["md-data_matrix_scan"] = 0xf1541, + ["md-database"] = 0xf01bc, + ["md-database_alert"] = 0xf163a, + ["md-database_alert_outline"] = 0xf1624, + ["md-database_arrow_down"] = 0xf163b, + ["md-database_arrow_down_outline"] = 0xf1625, + ["md-database_arrow_left"] = 0xf163c, + ["md-database_arrow_left_outline"] = 0xf1626, + ["md-database_arrow_right"] = 0xf163d, + ["md-database_arrow_right_outline"] = 0xf1627, + ["md-database_arrow_up"] = 0xf163e, + ["md-database_arrow_up_outline"] = 0xf1628, + ["md-database_check"] = 0xf0aa9, + ["md-database_check_outline"] = 0xf1629, + ["md-database_clock"] = 0xf163f, + ["md-database_clock_outline"] = 0xf162a, + ["md-database_cog"] = 0xf164b, + ["md-database_cog_outline"] = 0xf164c, + ["md-database_edit"] = 0xf0b86, + ["md-database_edit_outline"] = 0xf162b, + ["md-database_export"] = 0xf095e, + ["md-database_export_outline"] = 0xf162c, + ["md-database_eye"] = 0xf191f, + ["md-database_eye_off"] = 0xf1920, + ["md-database_eye_off_outline"] = 0xf1921, + ["md-database_eye_outline"] = 0xf1922, + ["md-database_import"] = 0xf095d, + ["md-database_import_outline"] = 0xf162d, + ["md-database_lock"] = 0xf0aaa, + ["md-database_lock_outline"] = 0xf162e, + ["md-database_marker"] = 0xf12f6, + ["md-database_marker_outline"] = 0xf162f, + ["md-database_minus"] = 0xf01bb, + ["md-database_minus_outline"] = 0xf1630, + ["md-database_off"] = 0xf1640, + ["md-database_off_outline"] = 0xf1631, + ["md-database_outline"] = 0xf1632, + ["md-database_plus"] = 0xf01ba, + ["md-database_plus_outline"] = 0xf1633, + ["md-database_refresh"] = 0xf05c2, + ["md-database_refresh_outline"] = 0xf1634, + ["md-database_remove"] = 0xf0d00, + ["md-database_remove_outline"] = 0xf1635, + ["md-database_search"] = 0xf0866, + ["md-database_search_outline"] = 0xf1636, + ["md-database_settings"] = 0xf0d01, + ["md-database_settings_outline"] = 0xf1637, + ["md-database_sync"] = 0xf0cff, + ["md-database_sync_outline"] = 0xf1638, + ["md-death_star"] = 0xf08d8, + ["md-death_star_variant"] = 0xf08d9, + ["md-deathly_hallows"] = 0xf0b87, + ["md-debian"] = 0xf08da, + ["md-debug_step_into"] = 0xf01b9, + ["md-debug_step_out"] = 0xf01b8, + ["md-debug_step_over"] = 0xf01b7, + ["md-decagram"] = 0xf076c, + ["md-decagram_outline"] = 0xf076d, + ["md-decimal"] = 0xf10a1, + ["md-decimal_comma"] = 0xf10a2, + ["md-decimal_comma_decrease"] = 0xf10a3, + ["md-decimal_comma_increase"] = 0xf10a4, + ["md-decimal_decrease"] = 0xf01b6, + ["md-decimal_increase"] = 0xf01b5, + ["md-delete"] = 0xf01b4, + ["md-delete_alert"] = 0xf10a5, + ["md-delete_alert_outline"] = 0xf10a6, + ["md-delete_circle"] = 0xf0683, + ["md-delete_circle_outline"] = 0xf0b88, + ["md-delete_clock"] = 0xf1556, + ["md-delete_clock_outline"] = 0xf1557, + ["md-delete_empty"] = 0xf06cc, + ["md-delete_empty_outline"] = 0xf0e9d, + ["md-delete_forever"] = 0xf05e8, + ["md-delete_forever_outline"] = 0xf0b89, + ["md-delete_off"] = 0xf10a7, + ["md-delete_off_outline"] = 0xf10a8, + ["md-delete_outline"] = 0xf09e7, + ["md-delete_restore"] = 0xf0819, + ["md-delete_sweep"] = 0xf05e9, + ["md-delete_sweep_outline"] = 0xf0c62, + ["md-delete_variant"] = 0xf01b3, + ["md-delta"] = 0xf01c2, + ["md-desk"] = 0xf1239, + ["md-desk_lamp"] = 0xf095f, + ["md-deskphone"] = 0xf01c3, + ["md-desktop_classic"] = 0xf07c0, + ["md-desktop_mac"] = 0xf01c4, + ["md-desktop_mac_dashboard"] = 0xf09e8, + ["md-desktop_tower"] = 0xf01c5, + ["md-desktop_tower_monitor"] = 0xf0aab, + ["md-details"] = 0xf01c6, + ["md-dev_to"] = 0xf0d6e, + ["md-developer_board"] = 0xf0697, + ["md-deviantart"] = 0xf01c7, + ["md-devices"] = 0xf0fb0, + ["md-dharmachakra"] = 0xf094b, + ["md-diabetes"] = 0xf1126, + ["md-dialpad"] = 0xf061c, + ["md-diameter"] = 0xf0c63, + ["md-diameter_outline"] = 0xf0c64, + ["md-diameter_variant"] = 0xf0c65, + ["md-diamond"] = 0xf0b8a, + ["md-diamond_outline"] = 0xf0b8b, + ["md-diamond_stone"] = 0xf01c8, + ["md-dice_1"] = 0xf01ca, + ["md-dice_1_outline"] = 0xf114a, + ["md-dice_2"] = 0xf01cb, + ["md-dice_2_outline"] = 0xf114b, + ["md-dice_3"] = 0xf01cc, + ["md-dice_3_outline"] = 0xf114c, + ["md-dice_4"] = 0xf01cd, + ["md-dice_4_outline"] = 0xf114d, + ["md-dice_5"] = 0xf01ce, + ["md-dice_5_outline"] = 0xf114e, + ["md-dice_6"] = 0xf01cf, + ["md-dice_6_outline"] = 0xf114f, + ["md-dice_d10"] = 0xf1153, + ["md-dice_d10_outline"] = 0xf076f, + ["md-dice_d12"] = 0xf1154, + ["md-dice_d12_outline"] = 0xf0867, + ["md-dice_d20"] = 0xf1155, + ["md-dice_d20_outline"] = 0xf05ea, + ["md-dice_d4"] = 0xf1150, + ["md-dice_d4_outline"] = 0xf05eb, + ["md-dice_d6"] = 0xf1151, + ["md-dice_d6_outline"] = 0xf05ed, + ["md-dice_d8"] = 0xf1152, + ["md-dice_d8_outline"] = 0xf05ec, + ["md-dice_multiple"] = 0xf076e, + ["md-dice_multiple_outline"] = 0xf1156, + ["md-digital_ocean"] = 0xf1237, + ["md-dip_switch"] = 0xf07c1, + ["md-directions"] = 0xf01d0, + ["md-directions_fork"] = 0xf0641, + ["md-disc"] = 0xf05ee, + ["md-disc_alert"] = 0xf01d1, + ["md-disc_player"] = 0xf0960, + ["md-discord"] = 0xf066f, + ["md-dishwasher"] = 0xf0aac, + ["md-dishwasher_alert"] = 0xf11b8, + ["md-dishwasher_off"] = 0xf11b9, + ["md-disqus"] = 0xf01d2, + ["md-distribute_horizontal_center"] = 0xf11c9, + ["md-distribute_horizontal_left"] = 0xf11c8, + ["md-distribute_horizontal_right"] = 0xf11ca, + ["md-distribute_vertical_bottom"] = 0xf11cb, + ["md-distribute_vertical_center"] = 0xf11cc, + ["md-distribute_vertical_top"] = 0xf11cd, + ["md-diversify"] = 0xf1877, + ["md-diving"] = 0xf1977, + ["md-diving_flippers"] = 0xf0dbf, + ["md-diving_helmet"] = 0xf0dc0, + ["md-diving_scuba"] = 0xf0dc1, + ["md-diving_scuba_flag"] = 0xf0dc2, + ["md-diving_scuba_tank"] = 0xf0dc3, + ["md-diving_scuba_tank_multiple"] = 0xf0dc4, + ["md-diving_snorkel"] = 0xf0dc5, + ["md-division"] = 0xf01d4, + ["md-division_box"] = 0xf01d5, + ["md-dlna"] = 0xf0a41, + ["md-dna"] = 0xf0684, + ["md-dns"] = 0xf01d6, + ["md-dns_outline"] = 0xf0b8c, + ["md-dock_bottom"] = 0xf10a9, + ["md-dock_left"] = 0xf10aa, + ["md-dock_right"] = 0xf10ab, + ["md-dock_top"] = 0xf1513, + ["md-dock_window"] = 0xf10ac, + ["md-docker"] = 0xf0868, + ["md-doctor"] = 0xf0a42, + ["md-dog"] = 0xf0a43, + ["md-dog_service"] = 0xf0aad, + ["md-dog_side"] = 0xf0a44, + ["md-dog_side_off"] = 0xf16ee, + ["md-dolby"] = 0xf06b3, + ["md-dolly"] = 0xf0e9e, + ["md-dolphin"] = 0xf18b4, + ["md-domain"] = 0xf01d7, + ["md-domain_off"] = 0xf0d6f, + ["md-domain_plus"] = 0xf10ad, + ["md-domain_remove"] = 0xf10ae, + ["md-dome_light"] = 0xf141e, + ["md-domino_mask"] = 0xf1023, + ["md-donkey"] = 0xf07c2, + ["md-door"] = 0xf081a, + ["md-door_closed"] = 0xf081b, + ["md-door_closed_lock"] = 0xf10af, + ["md-door_open"] = 0xf081c, + ["md-door_sliding"] = 0xf181e, + ["md-door_sliding_lock"] = 0xf181f, + ["md-door_sliding_open"] = 0xf1820, + ["md-doorbell"] = 0xf12e6, + ["md-doorbell_video"] = 0xf0869, + ["md-dot_net"] = 0xf0aae, + ["md-dots_circle"] = 0xf1978, + ["md-dots_grid"] = 0xf15fc, + ["md-dots_hexagon"] = 0xf15ff, + ["md-dots_horizontal"] = 0xf01d8, + ["md-dots_horizontal_circle"] = 0xf07c3, + ["md-dots_horizontal_circle_outline"] = 0xf0b8d, + ["md-dots_square"] = 0xf15fd, + ["md-dots_triangle"] = 0xf15fe, + ["md-dots_vertical"] = 0xf01d9, + ["md-dots_vertical_circle"] = 0xf07c4, + ["md-dots_vertical_circle_outline"] = 0xf0b8e, + ["md-download"] = 0xf01da, + ["md-download_box"] = 0xf1462, + ["md-download_box_outline"] = 0xf1463, + ["md-download_circle"] = 0xf1464, + ["md-download_circle_outline"] = 0xf1465, + ["md-download_lock"] = 0xf1320, + ["md-download_lock_outline"] = 0xf1321, + ["md-download_multiple"] = 0xf09e9, + ["md-download_network"] = 0xf06f4, + ["md-download_network_outline"] = 0xf0c66, + ["md-download_off"] = 0xf10b0, + ["md-download_off_outline"] = 0xf10b1, + ["md-download_outline"] = 0xf0b8f, + ["md-drag"] = 0xf01db, + ["md-drag_horizontal"] = 0xf01dc, + ["md-drag_horizontal_variant"] = 0xf12f0, + ["md-drag_variant"] = 0xf0b90, + ["md-drag_vertical"] = 0xf01dd, + ["md-drag_vertical_variant"] = 0xf12f1, + ["md-drama_masks"] = 0xf0d02, + ["md-draw"] = 0xf0f49, + ["md-draw_pen"] = 0xf19b9, + ["md-drawing"] = 0xf01de, + ["md-drawing_box"] = 0xf01df, + ["md-dresser"] = 0xf0f4a, + ["md-dresser_outline"] = 0xf0f4b, + ["md-drone"] = 0xf01e2, + ["md-dropbox"] = 0xf01e3, + ["md-drupal"] = 0xf01e4, + ["md-duck"] = 0xf01e5, + ["md-dumbbell"] = 0xf01e6, + ["md-dump_truck"] = 0xf0c67, + ["md-ear_hearing"] = 0xf07c5, + ["md-ear_hearing_loop"] = 0xf1aee, + ["md-ear_hearing_off"] = 0xf0a45, + ["md-earbuds"] = 0xf184f, + ["md-earbuds_off"] = 0xf1850, + ["md-earbuds_off_outline"] = 0xf1851, + ["md-earbuds_outline"] = 0xf1852, + ["md-earth"] = 0xf01e7, + ["md-earth_arrow_right"] = 0xf1311, + ["md-earth_box"] = 0xf06cd, + ["md-earth_box_minus"] = 0xf1407, + ["md-earth_box_off"] = 0xf06ce, + ["md-earth_box_plus"] = 0xf1406, + ["md-earth_box_remove"] = 0xf1408, + ["md-earth_minus"] = 0xf1404, + ["md-earth_off"] = 0xf01e8, + ["md-earth_plus"] = 0xf1403, + ["md-earth_remove"] = 0xf1405, + ["md-egg"] = 0xf0aaf, + ["md-egg_easter"] = 0xf0ab0, + ["md-egg_fried"] = 0xf184a, + ["md-egg_off"] = 0xf13f0, + ["md-egg_off_outline"] = 0xf13f1, + ["md-egg_outline"] = 0xf13f2, + ["md-eiffel_tower"] = 0xf156b, + ["md-eight_track"] = 0xf09ea, + ["md-eject"] = 0xf01ea, + ["md-eject_outline"] = 0xf0b91, + ["md-electric_switch"] = 0xf0e9f, + ["md-electric_switch_closed"] = 0xf10d9, + ["md-electron_framework"] = 0xf1024, + ["md-elephant"] = 0xf07c6, + ["md-elevation_decline"] = 0xf01eb, + ["md-elevation_rise"] = 0xf01ec, + ["md-elevator"] = 0xf01ed, + ["md-elevator_down"] = 0xf12c2, + ["md-elevator_passenger"] = 0xf1381, + ["md-elevator_passenger_off"] = 0xf1979, + ["md-elevator_passenger_off_outline"] = 0xf197a, + ["md-elevator_passenger_outline"] = 0xf197b, + ["md-elevator_up"] = 0xf12c1, + ["md-ellipse"] = 0xf0ea0, + ["md-ellipse_outline"] = 0xf0ea1, + ["md-email"] = 0xf01ee, + ["md-email_alert"] = 0xf06cf, + ["md-email_alert_outline"] = 0xf0d42, + ["md-email_box"] = 0xf0d03, + ["md-email_check"] = 0xf0ab1, + ["md-email_check_outline"] = 0xf0ab2, + ["md-email_edit"] = 0xf0ee3, + ["md-email_edit_outline"] = 0xf0ee4, + ["md-email_fast"] = 0xf186f, + ["md-email_fast_outline"] = 0xf1870, + ["md-email_lock"] = 0xf01f1, + ["md-email_mark_as_unread"] = 0xf0b92, + ["md-email_minus"] = 0xf0ee5, + ["md-email_minus_outline"] = 0xf0ee6, + ["md-email_multiple"] = 0xf0ee7, + ["md-email_multiple_outline"] = 0xf0ee8, + ["md-email_newsletter"] = 0xf0fb1, + ["md-email_off"] = 0xf13e3, + ["md-email_off_outline"] = 0xf13e4, + ["md-email_open"] = 0xf01ef, + ["md-email_open_multiple"] = 0xf0ee9, + ["md-email_open_multiple_outline"] = 0xf0eea, + ["md-email_open_outline"] = 0xf05ef, + ["md-email_outline"] = 0xf01f0, + ["md-email_plus"] = 0xf09eb, + ["md-email_plus_outline"] = 0xf09ec, + ["md-email_receive"] = 0xf10da, + ["md-email_receive_outline"] = 0xf10db, + ["md-email_remove"] = 0xf1661, + ["md-email_remove_outline"] = 0xf1662, + ["md-email_seal"] = 0xf195b, + ["md-email_seal_outline"] = 0xf195c, + ["md-email_search"] = 0xf0961, + ["md-email_search_outline"] = 0xf0962, + ["md-email_send"] = 0xf10dc, + ["md-email_send_outline"] = 0xf10dd, + ["md-email_sync"] = 0xf12c7, + ["md-email_sync_outline"] = 0xf12c8, + ["md-email_variant"] = 0xf05f0, + ["md-ember"] = 0xf0b30, + ["md-emby"] = 0xf06b4, + ["md-emoticon"] = 0xf0c68, + ["md-emoticon_angry"] = 0xf0c69, + ["md-emoticon_angry_outline"] = 0xf0c6a, + ["md-emoticon_confused"] = 0xf10de, + ["md-emoticon_confused_outline"] = 0xf10df, + ["md-emoticon_cool"] = 0xf0c6b, + ["md-emoticon_cool_outline"] = 0xf01f3, + ["md-emoticon_cry"] = 0xf0c6c, + ["md-emoticon_cry_outline"] = 0xf0c6d, + ["md-emoticon_dead"] = 0xf0c6e, + ["md-emoticon_dead_outline"] = 0xf069b, + ["md-emoticon_devil"] = 0xf0c6f, + ["md-emoticon_devil_outline"] = 0xf01f4, + ["md-emoticon_excited"] = 0xf0c70, + ["md-emoticon_excited_outline"] = 0xf069c, + ["md-emoticon_frown"] = 0xf0f4c, + ["md-emoticon_frown_outline"] = 0xf0f4d, + ["md-emoticon_happy"] = 0xf0c71, + ["md-emoticon_happy_outline"] = 0xf01f5, + ["md-emoticon_kiss"] = 0xf0c72, + ["md-emoticon_kiss_outline"] = 0xf0c73, + ["md-emoticon_lol"] = 0xf1214, + ["md-emoticon_lol_outline"] = 0xf1215, + ["md-emoticon_neutral"] = 0xf0c74, + ["md-emoticon_neutral_outline"] = 0xf01f6, + ["md-emoticon_outline"] = 0xf01f2, + ["md-emoticon_poop"] = 0xf01f7, + ["md-emoticon_poop_outline"] = 0xf0c75, + ["md-emoticon_sad"] = 0xf0c76, + ["md-emoticon_sad_outline"] = 0xf01f8, + ["md-emoticon_sick"] = 0xf157c, + ["md-emoticon_sick_outline"] = 0xf157d, + ["md-emoticon_tongue"] = 0xf01f9, + ["md-emoticon_tongue_outline"] = 0xf0c77, + ["md-emoticon_wink"] = 0xf0c78, + ["md-emoticon_wink_outline"] = 0xf0c79, + ["md-engine"] = 0xf01fa, + ["md-engine_off"] = 0xf0a46, + ["md-engine_off_outline"] = 0xf0a47, + ["md-engine_outline"] = 0xf01fb, + ["md-epsilon"] = 0xf10e0, + ["md-equal"] = 0xf01fc, + ["md-equal_box"] = 0xf01fd, + ["md-equalizer"] = 0xf0ea2, + ["md-equalizer_outline"] = 0xf0ea3, + ["md-eraser"] = 0xf01fe, + ["md-eraser_variant"] = 0xf0642, + ["md-escalator"] = 0xf01ff, + ["md-escalator_box"] = 0xf1399, + ["md-escalator_down"] = 0xf12c0, + ["md-escalator_up"] = 0xf12bf, + ["md-eslint"] = 0xf0c7a, + ["md-et"] = 0xf0ab3, + ["md-ethereum"] = 0xf086a, + ["md-ethernet"] = 0xf0200, + ["md-ethernet_cable"] = 0xf0201, + ["md-ethernet_cable_off"] = 0xf0202, + ["md-ev_plug_ccs1"] = 0xf1519, + ["md-ev_plug_ccs2"] = 0xf151a, + ["md-ev_plug_chademo"] = 0xf151b, + ["md-ev_plug_tesla"] = 0xf151c, + ["md-ev_plug_type1"] = 0xf151d, + ["md-ev_plug_type2"] = 0xf151e, + ["md-ev_station"] = 0xf05f1, + ["md-evernote"] = 0xf0204, + ["md-excavator"] = 0xf1025, + ["md-exclamation"] = 0xf0205, + ["md-exclamation_thick"] = 0xf1238, + ["md-exit_run"] = 0xf0a48, + ["md-exit_to_app"] = 0xf05fc, + ["md-expand_all"] = 0xf0ab4, + ["md-expand_all_outline"] = 0xf0ab5, + ["md-expansion_card"] = 0xf08ae, + ["md-expansion_card_variant"] = 0xf0fb2, + ["md-exponent"] = 0xf0963, + ["md-exponent_box"] = 0xf0964, + ["md-export"] = 0xf0207, + ["md-export_variant"] = 0xf0b93, + ["md-eye"] = 0xf0208, + ["md-eye_arrow_left"] = 0xf18fd, + ["md-eye_arrow_left_outline"] = 0xf18fe, + ["md-eye_arrow_right"] = 0xf18ff, + ["md-eye_arrow_right_outline"] = 0xf1900, + ["md-eye_check"] = 0xf0d04, + ["md-eye_check_outline"] = 0xf0d05, + ["md-eye_circle"] = 0xf0b94, + ["md-eye_circle_outline"] = 0xf0b95, + ["md-eye_minus"] = 0xf1026, + ["md-eye_minus_outline"] = 0xf1027, + ["md-eye_off"] = 0xf0209, + ["md-eye_off_outline"] = 0xf06d1, + ["md-eye_outline"] = 0xf06d0, + ["md-eye_plus"] = 0xf086b, + ["md-eye_plus_outline"] = 0xf086c, + ["md-eye_refresh"] = 0xf197c, + ["md-eye_refresh_outline"] = 0xf197d, + ["md-eye_remove"] = 0xf15e3, + ["md-eye_remove_outline"] = 0xf15e4, + ["md-eye_settings"] = 0xf086d, + ["md-eye_settings_outline"] = 0xf086e, + ["md-eyedropper"] = 0xf020a, + ["md-eyedropper_minus"] = 0xf13dd, + ["md-eyedropper_off"] = 0xf13df, + ["md-eyedropper_plus"] = 0xf13dc, + ["md-eyedropper_remove"] = 0xf13de, + ["md-eyedropper_variant"] = 0xf020b, + ["md-face_agent"] = 0xf0d70, + ["md-face_man"] = 0xf0643, + ["md-face_man_outline"] = 0xf0b96, + ["md-face_man_profile"] = 0xf0644, + ["md-face_man_shimmer"] = 0xf15cc, + ["md-face_man_shimmer_outline"] = 0xf15cd, + ["md-face_mask"] = 0xf1586, + ["md-face_mask_outline"] = 0xf1587, + ["md-face_recognition"] = 0xf0c7b, + ["md-face_woman"] = 0xf1077, + ["md-face_woman_outline"] = 0xf1078, + ["md-face_woman_profile"] = 0xf1076, + ["md-face_woman_shimmer"] = 0xf15ce, + ["md-face_woman_shimmer_outline"] = 0xf15cf, + ["md-facebook"] = 0xf020c, + ["md-facebook_gaming"] = 0xf07dd, + ["md-facebook_messenger"] = 0xf020e, + ["md-facebook_workplace"] = 0xf0b31, + ["md-factory"] = 0xf020f, + ["md-family_tree"] = 0xf160e, + ["md-fan"] = 0xf0210, + ["md-fan_alert"] = 0xf146c, + ["md-fan_auto"] = 0xf171d, + ["md-fan_chevron_down"] = 0xf146d, + ["md-fan_chevron_up"] = 0xf146e, + ["md-fan_clock"] = 0xf1a3a, + ["md-fan_minus"] = 0xf1470, + ["md-fan_off"] = 0xf081d, + ["md-fan_plus"] = 0xf146f, + ["md-fan_remove"] = 0xf1471, + ["md-fan_speed_1"] = 0xf1472, + ["md-fan_speed_2"] = 0xf1473, + ["md-fan_speed_3"] = 0xf1474, + ["md-fast_forward"] = 0xf0211, + ["md-fast_forward_10"] = 0xf0d71, + ["md-fast_forward_15"] = 0xf193a, + ["md-fast_forward_30"] = 0xf0d06, + ["md-fast_forward_5"] = 0xf11f8, + ["md-fast_forward_60"] = 0xf160b, + ["md-fast_forward_outline"] = 0xf06d2, + ["md-fax"] = 0xf0212, + ["md-feather"] = 0xf06d3, + ["md-feature_search"] = 0xf0a49, + ["md-feature_search_outline"] = 0xf0a4a, + ["md-fedora"] = 0xf08db, + ["md-fence"] = 0xf179a, + ["md-fence_electric"] = 0xf17f6, + ["md-fencing"] = 0xf14c1, + ["md-ferris_wheel"] = 0xf0ea4, + ["md-ferry"] = 0xf0213, + ["md-file"] = 0xf0214, + ["md-file_account"] = 0xf073b, + ["md-file_account_outline"] = 0xf1028, + ["md-file_alert"] = 0xf0a4b, + ["md-file_alert_outline"] = 0xf0a4c, + ["md-file_arrow_left_right"] = 0xf1a93, + ["md-file_arrow_left_right_outline"] = 0xf1a94, + ["md-file_arrow_up_down"] = 0xf1a95, + ["md-file_arrow_up_down_outline"] = 0xf1a96, + ["md-file_cabinet"] = 0xf0ab6, + ["md-file_cad"] = 0xf0eeb, + ["md-file_cad_box"] = 0xf0eec, + ["md-file_cancel"] = 0xf0dc6, + ["md-file_cancel_outline"] = 0xf0dc7, + ["md-file_certificate"] = 0xf1186, + ["md-file_certificate_outline"] = 0xf1187, + ["md-file_chart"] = 0xf0215, + ["md-file_chart_check"] = 0xf19c6, + ["md-file_chart_check_outline"] = 0xf19c7, + ["md-file_chart_outline"] = 0xf1029, + ["md-file_check"] = 0xf0216, + ["md-file_check_outline"] = 0xf0e29, + ["md-file_clock"] = 0xf12e1, + ["md-file_clock_outline"] = 0xf12e2, + ["md-file_cloud"] = 0xf0217, + ["md-file_cloud_outline"] = 0xf102a, + ["md-file_code"] = 0xf022e, + ["md-file_code_outline"] = 0xf102b, + ["md-file_cog"] = 0xf107b, + ["md-file_cog_outline"] = 0xf107c, + ["md-file_compare"] = 0xf08aa, + ["md-file_delimited"] = 0xf0218, + ["md-file_delimited_outline"] = 0xf0ea5, + ["md-file_document"] = 0xf0219, + ["md-file_document_alert"] = 0xf1a97, + ["md-file_document_alert_outline"] = 0xf1a98, + ["md-file_document_check"] = 0xf1a99, + ["md-file_document_check_outline"] = 0xf1a9a, + ["md-file_document_edit"] = 0xf0dc8, + ["md-file_document_edit_outline"] = 0xf0dc9, + ["md-file_document_minus"] = 0xf1a9b, + ["md-file_document_minus_outline"] = 0xf1a9c, + ["md-file_document_multiple"] = 0xf1517, + ["md-file_document_multiple_outline"] = 0xf1518, + ["md-file_document_outline"] = 0xf09ee, + ["md-file_document_plus"] = 0xf1a9d, + ["md-file_document_plus_outline"] = 0xf1a9e, + ["md-file_document_remove"] = 0xf1a9f, + ["md-file_document_remove_outline"] = 0xf1aa0, + ["md-file_download"] = 0xf0965, + ["md-file_download_outline"] = 0xf0966, + ["md-file_edit"] = 0xf11e7, + ["md-file_edit_outline"] = 0xf11e8, + ["md-file_excel"] = 0xf021b, + ["md-file_excel_box"] = 0xf021c, + ["md-file_excel_box_outline"] = 0xf102c, + ["md-file_excel_outline"] = 0xf102d, + ["md-file_export"] = 0xf021d, + ["md-file_export_outline"] = 0xf102e, + ["md-file_eye"] = 0xf0dca, + ["md-file_eye_outline"] = 0xf0dcb, + ["md-file_find"] = 0xf021e, + ["md-file_find_outline"] = 0xf0b97, + ["md-file_gif_box"] = 0xf0d78, + ["md-file_hidden"] = 0xf0613, + ["md-file_image"] = 0xf021f, + ["md-file_image_marker"] = 0xf1772, + ["md-file_image_marker_outline"] = 0xf1773, + ["md-file_image_minus"] = 0xf193b, + ["md-file_image_minus_outline"] = 0xf193c, + ["md-file_image_outline"] = 0xf0eb0, + ["md-file_image_plus"] = 0xf193d, + ["md-file_image_plus_outline"] = 0xf193e, + ["md-file_image_remove"] = 0xf193f, + ["md-file_image_remove_outline"] = 0xf1940, + ["md-file_import"] = 0xf0220, + ["md-file_import_outline"] = 0xf102f, + ["md-file_jpg_box"] = 0xf0225, + ["md-file_key"] = 0xf1184, + ["md-file_key_outline"] = 0xf1185, + ["md-file_link"] = 0xf1177, + ["md-file_link_outline"] = 0xf1178, + ["md-file_lock"] = 0xf0221, + ["md-file_lock_open"] = 0xf19c8, + ["md-file_lock_open_outline"] = 0xf19c9, + ["md-file_lock_outline"] = 0xf1030, + ["md-file_marker"] = 0xf1774, + ["md-file_marker_outline"] = 0xf1775, + ["md-file_minus"] = 0xf1aa1, + ["md-file_minus_outline"] = 0xf1aa2, + ["md-file_move"] = 0xf0ab9, + ["md-file_move_outline"] = 0xf1031, + ["md-file_multiple"] = 0xf0222, + ["md-file_multiple_outline"] = 0xf1032, + ["md-file_music"] = 0xf0223, + ["md-file_music_outline"] = 0xf0e2a, + ["md-file_outline"] = 0xf0224, + ["md-file_pdf_box"] = 0xf0226, + ["md-file_percent"] = 0xf081e, + ["md-file_percent_outline"] = 0xf1033, + ["md-file_phone"] = 0xf1179, + ["md-file_phone_outline"] = 0xf117a, + ["md-file_plus"] = 0xf0752, + ["md-file_plus_outline"] = 0xf0eed, + ["md-file_png_box"] = 0xf0e2d, + ["md-file_powerpoint"] = 0xf0227, + ["md-file_powerpoint_box"] = 0xf0228, + ["md-file_powerpoint_box_outline"] = 0xf1034, + ["md-file_powerpoint_outline"] = 0xf1035, + ["md-file_presentation_box"] = 0xf0229, + ["md-file_question"] = 0xf086f, + ["md-file_question_outline"] = 0xf1036, + ["md-file_refresh"] = 0xf0918, + ["md-file_refresh_outline"] = 0xf0541, + ["md-file_remove"] = 0xf0b98, + ["md-file_remove_outline"] = 0xf1037, + ["md-file_replace"] = 0xf0b32, + ["md-file_replace_outline"] = 0xf0b33, + ["md-file_restore"] = 0xf0670, + ["md-file_restore_outline"] = 0xf1038, + ["md-file_rotate_left"] = 0xf1a3b, + ["md-file_rotate_left_outline"] = 0xf1a3c, + ["md-file_rotate_right"] = 0xf1a3d, + ["md-file_rotate_right_outline"] = 0xf1a3e, + ["md-file_search"] = 0xf0c7c, + ["md-file_search_outline"] = 0xf0c7d, + ["md-file_send"] = 0xf022a, + ["md-file_send_outline"] = 0xf1039, + ["md-file_settings"] = 0xf1079, + ["md-file_settings_outline"] = 0xf107a, + ["md-file_sign"] = 0xf19c3, + ["md-file_star"] = 0xf103a, + ["md-file_star_outline"] = 0xf103b, + ["md-file_swap"] = 0xf0fb4, + ["md-file_swap_outline"] = 0xf0fb5, + ["md-file_sync"] = 0xf1216, + ["md-file_sync_outline"] = 0xf1217, + ["md-file_table"] = 0xf0c7e, + ["md-file_table_box"] = 0xf10e1, + ["md-file_table_box_multiple"] = 0xf10e2, + ["md-file_table_box_multiple_outline"] = 0xf10e3, + ["md-file_table_box_outline"] = 0xf10e4, + ["md-file_table_outline"] = 0xf0c7f, + ["md-file_tree"] = 0xf0645, + ["md-file_tree_outline"] = 0xf13d2, + ["md-file_undo"] = 0xf08dc, + ["md-file_undo_outline"] = 0xf103c, + ["md-file_upload"] = 0xf0a4d, + ["md-file_upload_outline"] = 0xf0a4e, + ["md-file_video"] = 0xf022b, + ["md-file_video_outline"] = 0xf0e2c, + ["md-file_word"] = 0xf022c, + ["md-file_word_box"] = 0xf022d, + ["md-file_word_box_outline"] = 0xf103d, + ["md-file_word_outline"] = 0xf103e, + ["md-film"] = 0xf022f, + ["md-filmstrip"] = 0xf0230, + ["md-filmstrip_box"] = 0xf0332, + ["md-filmstrip_box_multiple"] = 0xf0d18, + ["md-filmstrip_off"] = 0xf0231, + ["md-filter"] = 0xf0232, + ["md-filter_check"] = 0xf18ec, + ["md-filter_check_outline"] = 0xf18ed, + ["md-filter_cog"] = 0xf1aa3, + ["md-filter_cog_outline"] = 0xf1aa4, + ["md-filter_menu"] = 0xf10e5, + ["md-filter_menu_outline"] = 0xf10e6, + ["md-filter_minus"] = 0xf0eee, + ["md-filter_minus_outline"] = 0xf0eef, + ["md-filter_multiple"] = 0xf1a3f, + ["md-filter_multiple_outline"] = 0xf1a40, + ["md-filter_off"] = 0xf14ef, + ["md-filter_off_outline"] = 0xf14f0, + ["md-filter_outline"] = 0xf0233, + ["md-filter_plus"] = 0xf0ef0, + ["md-filter_plus_outline"] = 0xf0ef1, + ["md-filter_remove"] = 0xf0234, + ["md-filter_remove_outline"] = 0xf0235, + ["md-filter_settings"] = 0xf1aa5, + ["md-filter_settings_outline"] = 0xf1aa6, + ["md-filter_variant"] = 0xf0236, + ["md-filter_variant_minus"] = 0xf1112, + ["md-filter_variant_plus"] = 0xf1113, + ["md-filter_variant_remove"] = 0xf103f, + ["md-finance"] = 0xf081f, + ["md-find_replace"] = 0xf06d4, + ["md-fingerprint"] = 0xf0237, + ["md-fingerprint_off"] = 0xf0eb1, + ["md-fire"] = 0xf0238, + ["md-fire_alert"] = 0xf15d7, + ["md-fire_circle"] = 0xf1807, + ["md-fire_extinguisher"] = 0xf0ef2, + ["md-fire_hydrant"] = 0xf1137, + ["md-fire_hydrant_alert"] = 0xf1138, + ["md-fire_hydrant_off"] = 0xf1139, + ["md-fire_off"] = 0xf1722, + ["md-fire_truck"] = 0xf08ab, + ["md-firebase"] = 0xf0967, + ["md-firefox"] = 0xf0239, + ["md-fireplace"] = 0xf0e2e, + ["md-fireplace_off"] = 0xf0e2f, + ["md-firewire"] = 0xf05be, + ["md-firework"] = 0xf0e30, + ["md-firework_off"] = 0xf1723, + ["md-fish"] = 0xf023a, + ["md-fish_off"] = 0xf13f3, + ["md-fishbowl"] = 0xf0ef3, + ["md-fishbowl_outline"] = 0xf0ef4, + ["md-fit_to_page"] = 0xf0ef5, + ["md-fit_to_page_outline"] = 0xf0ef6, + ["md-fit_to_screen"] = 0xf18f4, + ["md-fit_to_screen_outline"] = 0xf18f5, + ["md-flag"] = 0xf023b, + ["md-flag_checkered"] = 0xf023c, + ["md-flag_minus"] = 0xf0b99, + ["md-flag_minus_outline"] = 0xf10b2, + ["md-flag_off"] = 0xf18ee, + ["md-flag_off_outline"] = 0xf18ef, + ["md-flag_outline"] = 0xf023d, + ["md-flag_plus"] = 0xf0b9a, + ["md-flag_plus_outline"] = 0xf10b3, + ["md-flag_remove"] = 0xf0b9b, + ["md-flag_remove_outline"] = 0xf10b4, + ["md-flag_triangle"] = 0xf023f, + ["md-flag_variant"] = 0xf0240, + ["md-flag_variant_outline"] = 0xf023e, + ["md-flare"] = 0xf0d72, + ["md-flash"] = 0xf0241, + ["md-flash_alert"] = 0xf0ef7, + ["md-flash_alert_outline"] = 0xf0ef8, + ["md-flash_auto"] = 0xf0242, + ["md-flash_off"] = 0xf0243, + ["md-flash_outline"] = 0xf06d5, + ["md-flash_red_eye"] = 0xf067b, + ["md-flashlight"] = 0xf0244, + ["md-flashlight_off"] = 0xf0245, + ["md-flask"] = 0xf0093, + ["md-flask_empty"] = 0xf0094, + ["md-flask_empty_minus"] = 0xf123a, + ["md-flask_empty_minus_outline"] = 0xf123b, + ["md-flask_empty_off"] = 0xf13f4, + ["md-flask_empty_off_outline"] = 0xf13f5, + ["md-flask_empty_outline"] = 0xf0095, + ["md-flask_empty_plus"] = 0xf123c, + ["md-flask_empty_plus_outline"] = 0xf123d, + ["md-flask_empty_remove"] = 0xf123e, + ["md-flask_empty_remove_outline"] = 0xf123f, + ["md-flask_minus"] = 0xf1240, + ["md-flask_minus_outline"] = 0xf1241, + ["md-flask_off"] = 0xf13f6, + ["md-flask_off_outline"] = 0xf13f7, + ["md-flask_outline"] = 0xf0096, + ["md-flask_plus"] = 0xf1242, + ["md-flask_plus_outline"] = 0xf1243, + ["md-flask_remove"] = 0xf1244, + ["md-flask_remove_outline"] = 0xf1245, + ["md-flask_round_bottom"] = 0xf124b, + ["md-flask_round_bottom_empty"] = 0xf124c, + ["md-flask_round_bottom_empty_outline"] = 0xf124d, + ["md-flask_round_bottom_outline"] = 0xf124e, + ["md-fleur_de_lis"] = 0xf1303, + ["md-flip_horizontal"] = 0xf10e7, + ["md-flip_to_back"] = 0xf0247, + ["md-flip_to_front"] = 0xf0248, + ["md-flip_vertical"] = 0xf10e8, + ["md-floor_lamp"] = 0xf08dd, + ["md-floor_lamp_dual"] = 0xf1040, + ["md-floor_lamp_dual_outline"] = 0xf17ce, + ["md-floor_lamp_outline"] = 0xf17c8, + ["md-floor_lamp_torchiere"] = 0xf1747, + ["md-floor_lamp_torchiere_outline"] = 0xf17d6, + ["md-floor_lamp_torchiere_variant"] = 0xf1041, + ["md-floor_lamp_torchiere_variant_outline"] = 0xf17cf, + ["md-floor_plan"] = 0xf0821, + ["md-floppy"] = 0xf0249, + ["md-floppy_variant"] = 0xf09ef, + ["md-flower"] = 0xf024a, + ["md-flower_outline"] = 0xf09f0, + ["md-flower_pollen"] = 0xf1885, + ["md-flower_pollen_outline"] = 0xf1886, + ["md-flower_poppy"] = 0xf0d08, + ["md-flower_tulip"] = 0xf09f1, + ["md-flower_tulip_outline"] = 0xf09f2, + ["md-focus_auto"] = 0xf0f4e, + ["md-focus_field"] = 0xf0f4f, + ["md-focus_field_horizontal"] = 0xf0f50, + ["md-focus_field_vertical"] = 0xf0f51, + ["md-folder"] = 0xf024b, + ["md-folder_account"] = 0xf024c, + ["md-folder_account_outline"] = 0xf0b9c, + ["md-folder_alert"] = 0xf0dcc, + ["md-folder_alert_outline"] = 0xf0dcd, + ["md-folder_arrow_down"] = 0xf19e8, + ["md-folder_arrow_down_outline"] = 0xf19e9, + ["md-folder_arrow_left"] = 0xf19ea, + ["md-folder_arrow_left_outline"] = 0xf19eb, + ["md-folder_arrow_left_right"] = 0xf19ec, + ["md-folder_arrow_left_right_outline"] = 0xf19ed, + ["md-folder_arrow_right"] = 0xf19ee, + ["md-folder_arrow_right_outline"] = 0xf19ef, + ["md-folder_arrow_up"] = 0xf19f0, + ["md-folder_arrow_up_down"] = 0xf19f1, + ["md-folder_arrow_up_down_outline"] = 0xf19f2, + ["md-folder_arrow_up_outline"] = 0xf19f3, + ["md-folder_cancel"] = 0xf19f4, + ["md-folder_cancel_outline"] = 0xf19f5, + ["md-folder_check"] = 0xf197e, + ["md-folder_check_outline"] = 0xf197f, + ["md-folder_clock"] = 0xf0aba, + ["md-folder_clock_outline"] = 0xf0abb, + ["md-folder_cog"] = 0xf107f, + ["md-folder_cog_outline"] = 0xf1080, + ["md-folder_download"] = 0xf024d, + ["md-folder_download_outline"] = 0xf10e9, + ["md-folder_edit"] = 0xf08de, + ["md-folder_edit_outline"] = 0xf0dce, + ["md-folder_eye"] = 0xf178a, + ["md-folder_eye_outline"] = 0xf178b, + ["md-folder_file"] = 0xf19f6, + ["md-folder_file_outline"] = 0xf19f7, + ["md-folder_google_drive"] = 0xf024e, + ["md-folder_heart"] = 0xf10ea, + ["md-folder_heart_outline"] = 0xf10eb, + ["md-folder_hidden"] = 0xf179e, + ["md-folder_home"] = 0xf10b5, + ["md-folder_home_outline"] = 0xf10b6, + ["md-folder_image"] = 0xf024f, + ["md-folder_information"] = 0xf10b7, + ["md-folder_information_outline"] = 0xf10b8, + ["md-folder_key"] = 0xf08ac, + ["md-folder_key_network"] = 0xf08ad, + ["md-folder_key_network_outline"] = 0xf0c80, + ["md-folder_key_outline"] = 0xf10ec, + ["md-folder_lock"] = 0xf0250, + ["md-folder_lock_open"] = 0xf0251, + ["md-folder_lock_open_outline"] = 0xf1aa7, + ["md-folder_lock_outline"] = 0xf1aa8, + ["md-folder_marker"] = 0xf126d, + ["md-folder_marker_outline"] = 0xf126e, + ["md-folder_move"] = 0xf0252, + ["md-folder_move_outline"] = 0xf1246, + ["md-folder_multiple"] = 0xf0253, + ["md-folder_multiple_image"] = 0xf0254, + ["md-folder_multiple_outline"] = 0xf0255, + ["md-folder_multiple_plus"] = 0xf147e, + ["md-folder_multiple_plus_outline"] = 0xf147f, + ["md-folder_music"] = 0xf1359, + ["md-folder_music_outline"] = 0xf135a, + ["md-folder_network"] = 0xf0870, + ["md-folder_network_outline"] = 0xf0c81, + ["md-folder_off"] = 0xf19f8, + ["md-folder_off_outline"] = 0xf19f9, + ["md-folder_open"] = 0xf0770, + ["md-folder_open_outline"] = 0xf0dcf, + ["md-folder_outline"] = 0xf0256, + ["md-folder_play"] = 0xf19fa, + ["md-folder_play_outline"] = 0xf19fb, + ["md-folder_plus"] = 0xf0257, + ["md-folder_plus_outline"] = 0xf0b9d, + ["md-folder_pound"] = 0xf0d09, + ["md-folder_pound_outline"] = 0xf0d0a, + ["md-folder_question"] = 0xf19ca, + ["md-folder_question_outline"] = 0xf19cb, + ["md-folder_refresh"] = 0xf0749, + ["md-folder_refresh_outline"] = 0xf0542, + ["md-folder_remove"] = 0xf0258, + ["md-folder_remove_outline"] = 0xf0b9e, + ["md-folder_search"] = 0xf0968, + ["md-folder_search_outline"] = 0xf0969, + ["md-folder_settings"] = 0xf107d, + ["md-folder_settings_outline"] = 0xf107e, + ["md-folder_star"] = 0xf069d, + ["md-folder_star_multiple"] = 0xf13d3, + ["md-folder_star_multiple_outline"] = 0xf13d4, + ["md-folder_star_outline"] = 0xf0b9f, + ["md-folder_swap"] = 0xf0fb6, + ["md-folder_swap_outline"] = 0xf0fb7, + ["md-folder_sync"] = 0xf0d0b, + ["md-folder_sync_outline"] = 0xf0d0c, + ["md-folder_table"] = 0xf12e3, + ["md-folder_table_outline"] = 0xf12e4, + ["md-folder_text"] = 0xf0c82, + ["md-folder_text_outline"] = 0xf0c83, + ["md-folder_upload"] = 0xf0259, + ["md-folder_upload_outline"] = 0xf10ed, + ["md-folder_wrench"] = 0xf19fc, + ["md-folder_wrench_outline"] = 0xf19fd, + ["md-folder_zip"] = 0xf06eb, + ["md-folder_zip_outline"] = 0xf07b9, + ["md-font_awesome"] = 0xf003a, + ["md-food"] = 0xf025a, + ["md-food_apple"] = 0xf025b, + ["md-food_apple_outline"] = 0xf0c84, + ["md-food_croissant"] = 0xf07c8, + ["md-food_drumstick"] = 0xf141f, + ["md-food_drumstick_off"] = 0xf1468, + ["md-food_drumstick_off_outline"] = 0xf1469, + ["md-food_drumstick_outline"] = 0xf1420, + ["md-food_fork_drink"] = 0xf05f2, + ["md-food_halal"] = 0xf1572, + ["md-food_hot_dog"] = 0xf184b, + ["md-food_kosher"] = 0xf1573, + ["md-food_off"] = 0xf05f3, + ["md-food_off_outline"] = 0xf1915, + ["md-food_outline"] = 0xf1916, + ["md-food_steak"] = 0xf146a, + ["md-food_steak_off"] = 0xf146b, + ["md-food_takeout_box"] = 0xf1836, + ["md-food_takeout_box_outline"] = 0xf1837, + ["md-food_turkey"] = 0xf171c, + ["md-food_variant"] = 0xf025c, + ["md-food_variant_off"] = 0xf13e5, + ["md-foot_print"] = 0xf0f52, + ["md-football"] = 0xf025d, + ["md-football_australian"] = 0xf025e, + ["md-football_helmet"] = 0xf025f, + ["md-forest"] = 0xf1897, + ["md-forklift"] = 0xf07c9, + ["md-form_dropdown"] = 0xf1400, + ["md-form_select"] = 0xf1401, + ["md-form_textarea"] = 0xf1095, + ["md-form_textbox"] = 0xf060e, + ["md-form_textbox_lock"] = 0xf135d, + ["md-form_textbox_password"] = 0xf07f5, + ["md-format_align_bottom"] = 0xf0753, + ["md-format_align_center"] = 0xf0260, + ["md-format_align_justify"] = 0xf0261, + ["md-format_align_left"] = 0xf0262, + ["md-format_align_middle"] = 0xf0754, + ["md-format_align_right"] = 0xf0263, + ["md-format_align_top"] = 0xf0755, + ["md-format_annotation_minus"] = 0xf0abc, + ["md-format_annotation_plus"] = 0xf0646, + ["md-format_bold"] = 0xf0264, + ["md-format_clear"] = 0xf0265, + ["md-format_color_fill"] = 0xf0266, + ["md-format_color_highlight"] = 0xf0e31, + ["md-format_color_marker_cancel"] = 0xf1313, + ["md-format_color_text"] = 0xf069e, + ["md-format_columns"] = 0xf08df, + ["md-format_float_center"] = 0xf0267, + ["md-format_float_left"] = 0xf0268, + ["md-format_float_none"] = 0xf0269, + ["md-format_float_right"] = 0xf026a, + ["md-format_font"] = 0xf06d6, + ["md-format_font_size_decrease"] = 0xf09f3, + ["md-format_font_size_increase"] = 0xf09f4, + ["md-format_header_1"] = 0xf026b, + ["md-format_header_2"] = 0xf026c, + ["md-format_header_3"] = 0xf026d, + ["md-format_header_4"] = 0xf026e, + ["md-format_header_5"] = 0xf026f, + ["md-format_header_6"] = 0xf0270, + ["md-format_header_decrease"] = 0xf0271, + ["md-format_header_equal"] = 0xf0272, + ["md-format_header_increase"] = 0xf0273, + ["md-format_header_pound"] = 0xf0274, + ["md-format_horizontal_align_center"] = 0xf061e, + ["md-format_horizontal_align_left"] = 0xf061f, + ["md-format_horizontal_align_right"] = 0xf0620, + ["md-format_indent_decrease"] = 0xf0275, + ["md-format_indent_increase"] = 0xf0276, + ["md-format_italic"] = 0xf0277, + ["md-format_letter_case"] = 0xf0b34, + ["md-format_letter_case_lower"] = 0xf0b35, + ["md-format_letter_case_upper"] = 0xf0b36, + ["md-format_letter_ends_with"] = 0xf0fb8, + ["md-format_letter_matches"] = 0xf0fb9, + ["md-format_letter_spacing"] = 0xf1956, + ["md-format_letter_starts_with"] = 0xf0fba, + ["md-format_line_spacing"] = 0xf0278, + ["md-format_line_style"] = 0xf05c8, + ["md-format_line_weight"] = 0xf05c9, + ["md-format_list_bulleted"] = 0xf0279, + ["md-format_list_bulleted_square"] = 0xf0dd0, + ["md-format_list_bulleted_triangle"] = 0xf0eb2, + ["md-format_list_bulleted_type"] = 0xf027a, + ["md-format_list_checkbox"] = 0xf096a, + ["md-format_list_checks"] = 0xf0756, + ["md-format_list_group"] = 0xf1860, + ["md-format_list_numbered"] = 0xf027b, + ["md-format_list_numbered_rtl"] = 0xf0d0d, + ["md-format_list_text"] = 0xf126f, + ["md-format_overline"] = 0xf0eb3, + ["md-format_page_break"] = 0xf06d7, + ["md-format_page_split"] = 0xf1917, + ["md-format_paint"] = 0xf027c, + ["md-format_paragraph"] = 0xf027d, + ["md-format_pilcrow"] = 0xf06d8, + ["md-format_quote_close"] = 0xf027e, + ["md-format_quote_close_outline"] = 0xf11a8, + ["md-format_quote_open"] = 0xf0757, + ["md-format_quote_open_outline"] = 0xf11a7, + ["md-format_rotate_90"] = 0xf06aa, + ["md-format_section"] = 0xf069f, + ["md-format_size"] = 0xf027f, + ["md-format_strikethrough"] = 0xf0280, + ["md-format_strikethrough_variant"] = 0xf0281, + ["md-format_subscript"] = 0xf0282, + ["md-format_superscript"] = 0xf0283, + ["md-format_text"] = 0xf0284, + ["md-format_text_rotation_angle_down"] = 0xf0fbb, + ["md-format_text_rotation_angle_up"] = 0xf0fbc, + ["md-format_text_rotation_down"] = 0xf0d73, + ["md-format_text_rotation_down_vertical"] = 0xf0fbd, + ["md-format_text_rotation_none"] = 0xf0d74, + ["md-format_text_rotation_up"] = 0xf0fbe, + ["md-format_text_rotation_vertical"] = 0xf0fbf, + ["md-format_text_variant"] = 0xf0e32, + ["md-format_text_variant_outline"] = 0xf150f, + ["md-format_text_wrapping_clip"] = 0xf0d0e, + ["md-format_text_wrapping_overflow"] = 0xf0d0f, + ["md-format_text_wrapping_wrap"] = 0xf0d10, + ["md-format_textbox"] = 0xf0d11, + ["md-format_textdirection_l_to_r"] = 0xf0285, + ["md-format_textdirection_r_to_l"] = 0xf0286, + ["md-format_title"] = 0xf05f4, + ["md-format_underline"] = 0xf0287, + ["md-format_underline_wavy"] = 0xf18e9, + ["md-format_vertical_align_bottom"] = 0xf0621, + ["md-format_vertical_align_center"] = 0xf0622, + ["md-format_vertical_align_top"] = 0xf0623, + ["md-format_wrap_inline"] = 0xf0288, + ["md-format_wrap_square"] = 0xf0289, + ["md-format_wrap_tight"] = 0xf028a, + ["md-format_wrap_top_bottom"] = 0xf028b, + ["md-forum"] = 0xf028c, + ["md-forum_minus"] = 0xf1aa9, + ["md-forum_minus_outline"] = 0xf1aaa, + ["md-forum_outline"] = 0xf0822, + ["md-forum_plus"] = 0xf1aab, + ["md-forum_plus_outline"] = 0xf1aac, + ["md-forum_remove"] = 0xf1aad, + ["md-forum_remove_outline"] = 0xf1aae, + ["md-forward"] = 0xf028d, + ["md-forwardburger"] = 0xf0d75, + ["md-fountain"] = 0xf096b, + ["md-fountain_pen"] = 0xf0d12, + ["md-fountain_pen_tip"] = 0xf0d13, + ["md-fraction_one_half"] = 0xf1992, + ["md-freebsd"] = 0xf08e0, + ["md-french_fries"] = 0xf1957, + ["md-frequently_asked_questions"] = 0xf0eb4, + ["md-fridge"] = 0xf0290, + ["md-fridge_alert"] = 0xf11b1, + ["md-fridge_alert_outline"] = 0xf11b2, + ["md-fridge_bottom"] = 0xf0292, + ["md-fridge_industrial"] = 0xf15ee, + ["md-fridge_industrial_alert"] = 0xf15ef, + ["md-fridge_industrial_alert_outline"] = 0xf15f0, + ["md-fridge_industrial_off"] = 0xf15f1, + ["md-fridge_industrial_off_outline"] = 0xf15f2, + ["md-fridge_industrial_outline"] = 0xf15f3, + ["md-fridge_off"] = 0xf11af, + ["md-fridge_off_outline"] = 0xf11b0, + ["md-fridge_outline"] = 0xf028f, + ["md-fridge_top"] = 0xf0291, + ["md-fridge_variant"] = 0xf15f4, + ["md-fridge_variant_alert"] = 0xf15f5, + ["md-fridge_variant_alert_outline"] = 0xf15f6, + ["md-fridge_variant_off"] = 0xf15f7, + ["md-fridge_variant_off_outline"] = 0xf15f8, + ["md-fridge_variant_outline"] = 0xf15f9, + ["md-fruit_cherries"] = 0xf1042, + ["md-fruit_cherries_off"] = 0xf13f8, + ["md-fruit_citrus"] = 0xf1043, + ["md-fruit_citrus_off"] = 0xf13f9, + ["md-fruit_grapes"] = 0xf1044, + ["md-fruit_grapes_outline"] = 0xf1045, + ["md-fruit_pear"] = 0xf1a0e, + ["md-fruit_pineapple"] = 0xf1046, + ["md-fruit_watermelon"] = 0xf1047, + ["md-fuel"] = 0xf07ca, + ["md-fuel_cell"] = 0xf18b5, + ["md-fullscreen"] = 0xf0293, + ["md-fullscreen_exit"] = 0xf0294, + ["md-function"] = 0xf0295, + ["md-function_variant"] = 0xf0871, + ["md-furigana_horizontal"] = 0xf1081, + ["md-furigana_vertical"] = 0xf1082, + ["md-fuse"] = 0xf0c85, + ["md-fuse_alert"] = 0xf142d, + ["md-fuse_blade"] = 0xf0c86, + ["md-fuse_off"] = 0xf142c, + ["md-gamepad"] = 0xf0296, + ["md-gamepad_circle"] = 0xf0e33, + ["md-gamepad_circle_down"] = 0xf0e34, + ["md-gamepad_circle_left"] = 0xf0e35, + ["md-gamepad_circle_outline"] = 0xf0e36, + ["md-gamepad_circle_right"] = 0xf0e37, + ["md-gamepad_circle_up"] = 0xf0e38, + ["md-gamepad_down"] = 0xf0e39, + ["md-gamepad_left"] = 0xf0e3a, + ["md-gamepad_outline"] = 0xf1919, + ["md-gamepad_right"] = 0xf0e3b, + ["md-gamepad_round"] = 0xf0e3c, + ["md-gamepad_round_down"] = 0xf0e3d, + ["md-gamepad_round_left"] = 0xf0e3e, + ["md-gamepad_round_outline"] = 0xf0e3f, + ["md-gamepad_round_right"] = 0xf0e40, + ["md-gamepad_round_up"] = 0xf0e41, + ["md-gamepad_square"] = 0xf0eb5, + ["md-gamepad_square_outline"] = 0xf0eb6, + ["md-gamepad_up"] = 0xf0e42, + ["md-gamepad_variant"] = 0xf0297, + ["md-gamepad_variant_outline"] = 0xf0eb7, + ["md-gamma"] = 0xf10ee, + ["md-gantry_crane"] = 0xf0dd1, + ["md-garage"] = 0xf06d9, + ["md-garage_alert"] = 0xf0872, + ["md-garage_alert_variant"] = 0xf12d5, + ["md-garage_lock"] = 0xf17fb, + ["md-garage_open"] = 0xf06da, + ["md-garage_open_variant"] = 0xf12d4, + ["md-garage_variant"] = 0xf12d3, + ["md-garage_variant_lock"] = 0xf17fc, + ["md-gas_burner"] = 0xf1a1b, + ["md-gas_cylinder"] = 0xf0647, + ["md-gas_station"] = 0xf0298, + ["md-gas_station_off"] = 0xf1409, + ["md-gas_station_off_outline"] = 0xf140a, + ["md-gas_station_outline"] = 0xf0eb8, + ["md-gate"] = 0xf0299, + ["md-gate_alert"] = 0xf17f8, + ["md-gate_and"] = 0xf08e1, + ["md-gate_arrow_left"] = 0xf17f7, + ["md-gate_arrow_right"] = 0xf1169, + ["md-gate_nand"] = 0xf08e2, + ["md-gate_nor"] = 0xf08e3, + ["md-gate_not"] = 0xf08e4, + ["md-gate_open"] = 0xf116a, + ["md-gate_or"] = 0xf08e5, + ["md-gate_xnor"] = 0xf08e6, + ["md-gate_xor"] = 0xf08e7, + ["md-gatsby"] = 0xf0e43, + ["md-gauge"] = 0xf029a, + ["md-gauge_empty"] = 0xf0873, + ["md-gauge_full"] = 0xf0874, + ["md-gauge_low"] = 0xf0875, + ["md-gavel"] = 0xf029b, + ["md-gender_female"] = 0xf029c, + ["md-gender_male"] = 0xf029d, + ["md-gender_male_female"] = 0xf029e, + ["md-gender_male_female_variant"] = 0xf113f, + ["md-gender_non_binary"] = 0xf1140, + ["md-gender_transgender"] = 0xf029f, + ["md-gentoo"] = 0xf08e8, + ["md-gesture"] = 0xf07cb, + ["md-gesture_double_tap"] = 0xf073c, + ["md-gesture_pinch"] = 0xf0abd, + ["md-gesture_spread"] = 0xf0abe, + ["md-gesture_swipe"] = 0xf0d76, + ["md-gesture_swipe_down"] = 0xf073d, + ["md-gesture_swipe_horizontal"] = 0xf0abf, + ["md-gesture_swipe_left"] = 0xf073e, + ["md-gesture_swipe_right"] = 0xf073f, + ["md-gesture_swipe_up"] = 0xf0740, + ["md-gesture_swipe_vertical"] = 0xf0ac0, + ["md-gesture_tap"] = 0xf0741, + ["md-gesture_tap_box"] = 0xf12a9, + ["md-gesture_tap_button"] = 0xf12a8, + ["md-gesture_tap_hold"] = 0xf0d77, + ["md-gesture_two_double_tap"] = 0xf0742, + ["md-gesture_two_tap"] = 0xf0743, + ["md-ghost"] = 0xf02a0, + ["md-ghost_off"] = 0xf09f5, + ["md-ghost_off_outline"] = 0xf165c, + ["md-ghost_outline"] = 0xf165d, + ["md-gift"] = 0xf0e44, + ["md-gift_off"] = 0xf16ef, + ["md-gift_off_outline"] = 0xf16f0, + ["md-gift_open"] = 0xf16f1, + ["md-gift_open_outline"] = 0xf16f2, + ["md-gift_outline"] = 0xf02a1, + ["md-git"] = 0xf02a2, + ["md-github"] = 0xf02a4, + ["md-gitlab"] = 0xf0ba0, + ["md-glass_cocktail"] = 0xf0356, + ["md-glass_cocktail_off"] = 0xf15e6, + ["md-glass_flute"] = 0xf02a5, + ["md-glass_fragile"] = 0xf1873, + ["md-glass_mug"] = 0xf02a6, + ["md-glass_mug_off"] = 0xf15e7, + ["md-glass_mug_variant"] = 0xf1116, + ["md-glass_mug_variant_off"] = 0xf15e8, + ["md-glass_pint_outline"] = 0xf130d, + ["md-glass_stange"] = 0xf02a7, + ["md-glass_tulip"] = 0xf02a8, + ["md-glass_wine"] = 0xf0876, + ["md-glasses"] = 0xf02aa, + ["md-globe_light"] = 0xf12d7, + ["md-globe_model"] = 0xf08e9, + ["md-gmail"] = 0xf02ab, + ["md-gnome"] = 0xf02ac, + ["md-go_kart"] = 0xf0d79, + ["md-go_kart_track"] = 0xf0d7a, + ["md-gog"] = 0xf0ba1, + ["md-gold"] = 0xf124f, + ["md-golf"] = 0xf0823, + ["md-golf_cart"] = 0xf11a4, + ["md-golf_tee"] = 0xf1083, + ["md-gondola"] = 0xf0686, + ["md-goodreads"] = 0xf0d7b, + ["md-google"] = 0xf02ad, + ["md-google_ads"] = 0xf0c87, + ["md-google_analytics"] = 0xf07cc, + ["md-google_assistant"] = 0xf07cd, + ["md-google_cardboard"] = 0xf02ae, + ["md-google_chrome"] = 0xf02af, + ["md-google_circles"] = 0xf02b0, + ["md-google_circles_communities"] = 0xf02b1, + ["md-google_circles_extended"] = 0xf02b2, + ["md-google_circles_group"] = 0xf02b3, + ["md-google_classroom"] = 0xf02c0, + ["md-google_cloud"] = 0xf11f6, + ["md-google_controller"] = 0xf02b4, + ["md-google_controller_off"] = 0xf02b5, + ["md-google_downasaur"] = 0xf1362, + ["md-google_drive"] = 0xf02b6, + ["md-google_earth"] = 0xf02b7, + ["md-google_fit"] = 0xf096c, + ["md-google_glass"] = 0xf02b8, + ["md-google_hangouts"] = 0xf02c9, + ["md-google_home"] = 0xf0824, + ["md-google_keep"] = 0xf06dc, + ["md-google_lens"] = 0xf09f6, + ["md-google_maps"] = 0xf05f5, + ["md-google_my_business"] = 0xf1048, + ["md-google_nearby"] = 0xf02b9, + ["md-google_play"] = 0xf02bc, + ["md-google_plus"] = 0xf02bd, + ["md-google_podcast"] = 0xf0eb9, + ["md-google_spreadsheet"] = 0xf09f7, + ["md-google_street_view"] = 0xf0c88, + ["md-google_translate"] = 0xf02bf, + ["md-gradient_horizontal"] = 0xf174a, + ["md-gradient_vertical"] = 0xf06a0, + ["md-grain"] = 0xf0d7c, + ["md-graph"] = 0xf1049, + ["md-graph_outline"] = 0xf104a, + ["md-graphql"] = 0xf0877, + ["md-grass"] = 0xf1510, + ["md-grave_stone"] = 0xf0ba2, + ["md-grease_pencil"] = 0xf0648, + ["md-greater_than"] = 0xf096d, + ["md-greater_than_or_equal"] = 0xf096e, + ["md-greenhouse"] = 0xf002d, + ["md-grid"] = 0xf02c1, + ["md-grid_large"] = 0xf0758, + ["md-grid_off"] = 0xf02c2, + ["md-grill"] = 0xf0e45, + ["md-grill_outline"] = 0xf118a, + ["md-group"] = 0xf02c3, + ["md-guitar_acoustic"] = 0xf0771, + ["md-guitar_electric"] = 0xf02c4, + ["md-guitar_pick"] = 0xf02c5, + ["md-guitar_pick_outline"] = 0xf02c6, + ["md-guy_fawkes_mask"] = 0xf0825, + ["md-gymnastics"] = 0xf1a41, + ["md-hail"] = 0xf0ac1, + ["md-hair_dryer"] = 0xf10ef, + ["md-hair_dryer_outline"] = 0xf10f0, + ["md-halloween"] = 0xf0ba3, + ["md-hamburger"] = 0xf0685, + ["md-hamburger_check"] = 0xf1776, + ["md-hamburger_minus"] = 0xf1777, + ["md-hamburger_off"] = 0xf1778, + ["md-hamburger_plus"] = 0xf1779, + ["md-hamburger_remove"] = 0xf177a, + ["md-hammer"] = 0xf08ea, + ["md-hammer_screwdriver"] = 0xf1322, + ["md-hammer_sickle"] = 0xf1887, + ["md-hammer_wrench"] = 0xf1323, + ["md-hand_back_left"] = 0xf0e46, + ["md-hand_back_left_off"] = 0xf1830, + ["md-hand_back_left_off_outline"] = 0xf1832, + ["md-hand_back_left_outline"] = 0xf182c, + ["md-hand_back_right"] = 0xf0e47, + ["md-hand_back_right_off"] = 0xf1831, + ["md-hand_back_right_off_outline"] = 0xf1833, + ["md-hand_back_right_outline"] = 0xf182d, + ["md-hand_clap"] = 0xf194b, + ["md-hand_clap_off"] = 0xf1a42, + ["md-hand_coin"] = 0xf188f, + ["md-hand_coin_outline"] = 0xf1890, + ["md-hand_extended"] = 0xf18b6, + ["md-hand_extended_outline"] = 0xf18b7, + ["md-hand_front_left"] = 0xf182b, + ["md-hand_front_left_outline"] = 0xf182e, + ["md-hand_front_right"] = 0xf0a4f, + ["md-hand_front_right_outline"] = 0xf182f, + ["md-hand_heart"] = 0xf10f1, + ["md-hand_heart_outline"] = 0xf157e, + ["md-hand_okay"] = 0xf0a50, + ["md-hand_peace"] = 0xf0a51, + ["md-hand_peace_variant"] = 0xf0a52, + ["md-hand_pointing_down"] = 0xf0a53, + ["md-hand_pointing_left"] = 0xf0a54, + ["md-hand_pointing_right"] = 0xf02c7, + ["md-hand_pointing_up"] = 0xf0a55, + ["md-hand_saw"] = 0xf0e48, + ["md-hand_wash"] = 0xf157f, + ["md-hand_wash_outline"] = 0xf1580, + ["md-hand_water"] = 0xf139f, + ["md-hand_wave"] = 0xf1821, + ["md-hand_wave_outline"] = 0xf1822, + ["md-handball"] = 0xf0f53, + ["md-handcuffs"] = 0xf113e, + ["md-hands_pray"] = 0xf0579, + ["md-handshake"] = 0xf1218, + ["md-handshake_outline"] = 0xf15a1, + ["md-hanger"] = 0xf02c8, + ["md-hard_hat"] = 0xf096f, + ["md-harddisk"] = 0xf02ca, + ["md-harddisk_plus"] = 0xf104b, + ["md-harddisk_remove"] = 0xf104c, + ["md-hat_fedora"] = 0xf0ba4, + ["md-hazard_lights"] = 0xf0c89, + ["md-hdr"] = 0xf0d7d, + ["md-hdr_off"] = 0xf0d7e, + ["md-head"] = 0xf135e, + ["md-head_alert"] = 0xf1338, + ["md-head_alert_outline"] = 0xf1339, + ["md-head_check"] = 0xf133a, + ["md-head_check_outline"] = 0xf133b, + ["md-head_cog"] = 0xf133c, + ["md-head_cog_outline"] = 0xf133d, + ["md-head_dots_horizontal"] = 0xf133e, + ["md-head_dots_horizontal_outline"] = 0xf133f, + ["md-head_flash"] = 0xf1340, + ["md-head_flash_outline"] = 0xf1341, + ["md-head_heart"] = 0xf1342, + ["md-head_heart_outline"] = 0xf1343, + ["md-head_lightbulb"] = 0xf1344, + ["md-head_lightbulb_outline"] = 0xf1345, + ["md-head_minus"] = 0xf1346, + ["md-head_minus_outline"] = 0xf1347, + ["md-head_outline"] = 0xf135f, + ["md-head_plus"] = 0xf1348, + ["md-head_plus_outline"] = 0xf1349, + ["md-head_question"] = 0xf134a, + ["md-head_question_outline"] = 0xf134b, + ["md-head_remove"] = 0xf134c, + ["md-head_remove_outline"] = 0xf134d, + ["md-head_snowflake"] = 0xf134e, + ["md-head_snowflake_outline"] = 0xf134f, + ["md-head_sync"] = 0xf1350, + ["md-head_sync_outline"] = 0xf1351, + ["md-headphones"] = 0xf02cb, + ["md-headphones_bluetooth"] = 0xf0970, + ["md-headphones_box"] = 0xf02cc, + ["md-headphones_off"] = 0xf07ce, + ["md-headphones_settings"] = 0xf02cd, + ["md-headset"] = 0xf02ce, + ["md-headset_dock"] = 0xf02cf, + ["md-headset_off"] = 0xf02d0, + ["md-heart"] = 0xf08d0, + ["md-heart_box"] = 0xf02d2, + ["md-heart_box_outline"] = 0xf02d3, + ["md-heart_broken"] = 0xf02d4, + ["md-heart_broken_outline"] = 0xf0d14, + ["md-heart_circle"] = 0xf0971, + ["md-heart_circle_outline"] = 0xf0972, + ["md-heart_cog"] = 0xf1663, + ["md-heart_cog_outline"] = 0xf1664, + ["md-heart_flash"] = 0xf0ef9, + ["md-heart_half"] = 0xf06df, + ["md-heart_half_full"] = 0xf06de, + ["md-heart_half_outline"] = 0xf06e0, + ["md-heart_minus"] = 0xf142f, + ["md-heart_minus_outline"] = 0xf1432, + ["md-heart_multiple"] = 0xf0a56, + ["md-heart_multiple_outline"] = 0xf0a57, + ["md-heart_off"] = 0xf0759, + ["md-heart_off_outline"] = 0xf1434, + ["md-heart_outline"] = 0xf18a0, + ["md-heart_plus"] = 0xf142e, + ["md-heart_plus_outline"] = 0xf1431, + ["md-heart_pulse"] = 0xf05f6, + ["md-heart_remove"] = 0xf1430, + ["md-heart_remove_outline"] = 0xf1433, + ["md-heart_settings"] = 0xf1665, + ["md-heart_settings_outline"] = 0xf1666, + ["md-heat_pump"] = 0xf1a43, + ["md-heat_pump_outline"] = 0xf1a44, + ["md-heat_wave"] = 0xf1a45, + ["md-heating_coil"] = 0xf1aaf, + ["md-helicopter"] = 0xf0ac2, + ["md-help"] = 0xf02d6, + ["md-help_box"] = 0xf078b, + ["md-help_circle"] = 0xf02d7, + ["md-help_circle_outline"] = 0xf0625, + ["md-help_network"] = 0xf06f5, + ["md-help_network_outline"] = 0xf0c8a, + ["md-help_rhombus"] = 0xf0ba5, + ["md-help_rhombus_outline"] = 0xf0ba6, + ["md-hexadecimal"] = 0xf12a7, + ["md-hexagon"] = 0xf02d8, + ["md-hexagon_multiple"] = 0xf06e1, + ["md-hexagon_multiple_outline"] = 0xf10f2, + ["md-hexagon_outline"] = 0xf02d9, + ["md-hexagon_slice_1"] = 0xf0ac3, + ["md-hexagon_slice_2"] = 0xf0ac4, + ["md-hexagon_slice_3"] = 0xf0ac5, + ["md-hexagon_slice_4"] = 0xf0ac6, + ["md-hexagon_slice_5"] = 0xf0ac7, + ["md-hexagon_slice_6"] = 0xf0ac8, + ["md-hexagram"] = 0xf0ac9, + ["md-hexagram_outline"] = 0xf0aca, + ["md-high_definition"] = 0xf07cf, + ["md-high_definition_box"] = 0xf0878, + ["md-highway"] = 0xf05f7, + ["md-hiking"] = 0xf0d7f, + ["md-history"] = 0xf02da, + ["md-hockey_puck"] = 0xf0879, + ["md-hockey_sticks"] = 0xf087a, + ["md-hololens"] = 0xf02db, + ["md-home"] = 0xf02dc, + ["md-home_account"] = 0xf0826, + ["md-home_alert"] = 0xf087b, + ["md-home_alert_outline"] = 0xf15d0, + ["md-home_analytics"] = 0xf0eba, + ["md-home_assistant"] = 0xf07d0, + ["md-home_automation"] = 0xf07d1, + ["md-home_battery"] = 0xf1901, + ["md-home_battery_outline"] = 0xf1902, + ["md-home_circle"] = 0xf07d2, + ["md-home_circle_outline"] = 0xf104d, + ["md-home_city"] = 0xf0d15, + ["md-home_city_outline"] = 0xf0d16, + ["md-home_clock"] = 0xf1a12, + ["md-home_clock_outline"] = 0xf1a13, + ["md-home_edit"] = 0xf1159, + ["md-home_edit_outline"] = 0xf115a, + ["md-home_export_outline"] = 0xf0f9b, + ["md-home_flood"] = 0xf0efa, + ["md-home_floor_0"] = 0xf0dd2, + ["md-home_floor_1"] = 0xf0d80, + ["md-home_floor_2"] = 0xf0d81, + ["md-home_floor_3"] = 0xf0d82, + ["md-home_floor_a"] = 0xf0d83, + ["md-home_floor_b"] = 0xf0d84, + ["md-home_floor_g"] = 0xf0d85, + ["md-home_floor_l"] = 0xf0d86, + ["md-home_floor_negative_1"] = 0xf0dd3, + ["md-home_group"] = 0xf0dd4, + ["md-home_group_minus"] = 0xf19c1, + ["md-home_group_plus"] = 0xf19c0, + ["md-home_group_remove"] = 0xf19c2, + ["md-home_heart"] = 0xf0827, + ["md-home_import_outline"] = 0xf0f9c, + ["md-home_lightbulb"] = 0xf1251, + ["md-home_lightbulb_outline"] = 0xf1252, + ["md-home_lightning_bolt"] = 0xf1903, + ["md-home_lightning_bolt_outline"] = 0xf1904, + ["md-home_lock"] = 0xf08eb, + ["md-home_lock_open"] = 0xf08ec, + ["md-home_map_marker"] = 0xf05f8, + ["md-home_minus"] = 0xf0974, + ["md-home_minus_outline"] = 0xf13d5, + ["md-home_modern"] = 0xf02dd, + ["md-home_off"] = 0xf1a46, + ["md-home_off_outline"] = 0xf1a47, + ["md-home_outline"] = 0xf06a1, + ["md-home_plus"] = 0xf0975, + ["md-home_plus_outline"] = 0xf13d6, + ["md-home_remove"] = 0xf1247, + ["md-home_remove_outline"] = 0xf13d7, + ["md-home_roof"] = 0xf112b, + ["md-home_search"] = 0xf13b0, + ["md-home_search_outline"] = 0xf13b1, + ["md-home_switch"] = 0xf1794, + ["md-home_switch_outline"] = 0xf1795, + ["md-home_thermometer"] = 0xf0f54, + ["md-home_thermometer_outline"] = 0xf0f55, + ["md-home_variant"] = 0xf02de, + ["md-home_variant_outline"] = 0xf0ba7, + ["md-hook"] = 0xf06e2, + ["md-hook_off"] = 0xf06e3, + ["md-hoop_house"] = 0xf0e56, + ["md-hops"] = 0xf02df, + ["md-horizontal_rotate_clockwise"] = 0xf10f3, + ["md-horizontal_rotate_counterclockwise"] = 0xf10f4, + ["md-horse"] = 0xf15bf, + ["md-horse_human"] = 0xf15c0, + ["md-horse_variant"] = 0xf15c1, + ["md-horse_variant_fast"] = 0xf186e, + ["md-horseshoe"] = 0xf0a58, + ["md-hospital"] = 0xf0ff6, + ["md-hospital_box"] = 0xf02e0, + ["md-hospital_box_outline"] = 0xf0ff7, + ["md-hospital_building"] = 0xf02e1, + ["md-hospital_marker"] = 0xf02e2, + ["md-hot_tub"] = 0xf0828, + ["md-hours_24"] = 0xf1478, + ["md-hubspot"] = 0xf0d17, + ["md-hulu"] = 0xf0829, + ["md-human"] = 0xf02e6, + ["md-human_baby_changing_table"] = 0xf138b, + ["md-human_cane"] = 0xf1581, + ["md-human_capacity_decrease"] = 0xf159b, + ["md-human_capacity_increase"] = 0xf159c, + ["md-human_child"] = 0xf02e7, + ["md-human_dolly"] = 0xf1980, + ["md-human_edit"] = 0xf14e8, + ["md-human_female"] = 0xf0649, + ["md-human_female_boy"] = 0xf0a59, + ["md-human_female_dance"] = 0xf15c9, + ["md-human_female_female"] = 0xf0a5a, + ["md-human_female_girl"] = 0xf0a5b, + ["md-human_greeting"] = 0xf17c4, + ["md-human_greeting_proximity"] = 0xf159d, + ["md-human_greeting_variant"] = 0xf064a, + ["md-human_handsdown"] = 0xf064b, + ["md-human_handsup"] = 0xf064c, + ["md-human_male"] = 0xf064d, + ["md-human_male_board"] = 0xf0890, + ["md-human_male_board_poll"] = 0xf0846, + ["md-human_male_boy"] = 0xf0a5c, + ["md-human_male_child"] = 0xf138c, + ["md-human_male_female"] = 0xf02e8, + ["md-human_male_female_child"] = 0xf1823, + ["md-human_male_girl"] = 0xf0a5d, + ["md-human_male_height"] = 0xf0efb, + ["md-human_male_height_variant"] = 0xf0efc, + ["md-human_male_male"] = 0xf0a5e, + ["md-human_non_binary"] = 0xf1848, + ["md-human_pregnant"] = 0xf05cf, + ["md-human_queue"] = 0xf1571, + ["md-human_scooter"] = 0xf11e9, + ["md-human_wheelchair"] = 0xf138d, + ["md-human_white_cane"] = 0xf1981, + ["md-humble_bundle"] = 0xf0744, + ["md-hvac"] = 0xf1352, + ["md-hvac_off"] = 0xf159e, + ["md-hydraulic_oil_level"] = 0xf1324, + ["md-hydraulic_oil_temperature"] = 0xf1325, + ["md-hydro_power"] = 0xf12e5, + ["md-hydrogen_station"] = 0xf1894, + ["md-ice_cream"] = 0xf082a, + ["md-ice_cream_off"] = 0xf0e52, + ["md-ice_pop"] = 0xf0efd, + ["md-id_card"] = 0xf0fc0, + ["md-identifier"] = 0xf0efe, + ["md-ideogram_cjk"] = 0xf1331, + ["md-ideogram_cjk_variant"] = 0xf1332, + ["md-image"] = 0xf02e9, + ["md-image_album"] = 0xf02ea, + ["md-image_area"] = 0xf02eb, + ["md-image_area_close"] = 0xf02ec, + ["md-image_auto_adjust"] = 0xf0fc1, + ["md-image_broken"] = 0xf02ed, + ["md-image_broken_variant"] = 0xf02ee, + ["md-image_edit"] = 0xf11e3, + ["md-image_edit_outline"] = 0xf11e4, + ["md-image_filter_black_white"] = 0xf02f0, + ["md-image_filter_center_focus"] = 0xf02f1, + ["md-image_filter_center_focus_strong"] = 0xf0eff, + ["md-image_filter_center_focus_strong_outline"] = 0xf0f00, + ["md-image_filter_center_focus_weak"] = 0xf02f2, + ["md-image_filter_drama"] = 0xf02f3, + ["md-image_filter_frames"] = 0xf02f4, + ["md-image_filter_hdr"] = 0xf0509, + ["md-image_filter_none"] = 0xf02f6, + ["md-image_filter_tilt_shift"] = 0xf02f7, + ["md-image_filter_vintage"] = 0xf02f8, + ["md-image_frame"] = 0xf0e49, + ["md-image_lock"] = 0xf1ab0, + ["md-image_lock_outline"] = 0xf1ab1, + ["md-image_marker"] = 0xf177b, + ["md-image_marker_outline"] = 0xf177c, + ["md-image_minus"] = 0xf1419, + ["md-image_move"] = 0xf09f8, + ["md-image_multiple"] = 0xf02f9, + ["md-image_multiple_outline"] = 0xf02ef, + ["md-image_off"] = 0xf082b, + ["md-image_off_outline"] = 0xf11d1, + ["md-image_outline"] = 0xf0976, + ["md-image_plus"] = 0xf087c, + ["md-image_refresh"] = 0xf19fe, + ["md-image_refresh_outline"] = 0xf19ff, + ["md-image_remove"] = 0xf1418, + ["md-image_search"] = 0xf0977, + ["md-image_search_outline"] = 0xf0978, + ["md-image_size_select_actual"] = 0xf0c8d, + ["md-image_size_select_large"] = 0xf0c8e, + ["md-image_size_select_small"] = 0xf0c8f, + ["md-image_sync"] = 0xf1a00, + ["md-image_sync_outline"] = 0xf1a01, + ["md-image_text"] = 0xf160d, + ["md-import"] = 0xf02fa, + ["md-inbox"] = 0xf0687, + ["md-inbox_arrow_down"] = 0xf02fb, + ["md-inbox_arrow_down_outline"] = 0xf1270, + ["md-inbox_arrow_up"] = 0xf03d1, + ["md-inbox_arrow_up_outline"] = 0xf1271, + ["md-inbox_full"] = 0xf1272, + ["md-inbox_full_outline"] = 0xf1273, + ["md-inbox_multiple"] = 0xf08b0, + ["md-inbox_multiple_outline"] = 0xf0ba8, + ["md-inbox_outline"] = 0xf1274, + ["md-inbox_remove"] = 0xf159f, + ["md-inbox_remove_outline"] = 0xf15a0, + ["md-incognito"] = 0xf05f9, + ["md-incognito_circle"] = 0xf1421, + ["md-incognito_circle_off"] = 0xf1422, + ["md-incognito_off"] = 0xf0075, + ["md-induction"] = 0xf184c, + ["md-infinity"] = 0xf06e4, + ["md-information"] = 0xf02fc, + ["md-information_off"] = 0xf178c, + ["md-information_off_outline"] = 0xf178d, + ["md-information_outline"] = 0xf02fd, + ["md-information_variant"] = 0xf064e, + ["md-instagram"] = 0xf02fe, + ["md-instrument_triangle"] = 0xf104e, + ["md-integrated_circuit_chip"] = 0xf1913, + ["md-invert_colors"] = 0xf0301, + ["md-invert_colors_off"] = 0xf0e4a, + ["md-iobroker"] = 0xf12e8, + ["md-ip"] = 0xf0a5f, + ["md-ip_network"] = 0xf0a60, + ["md-ip_network_outline"] = 0xf0c90, + ["md-ip_outline"] = 0xf1982, + ["md-ipod"] = 0xf0c91, + ["md-iron"] = 0xf1824, + ["md-iron_board"] = 0xf1838, + ["md-iron_outline"] = 0xf1825, + ["md-island"] = 0xf104f, + ["md-iv_bag"] = 0xf10b9, + ["md-jabber"] = 0xf0dd5, + ["md-jeepney"] = 0xf0302, + ["md-jellyfish"] = 0xf0f01, + ["md-jellyfish_outline"] = 0xf0f02, + ["md-jira"] = 0xf0303, + ["md-jquery"] = 0xf087d, + ["md-jsfiddle"] = 0xf0304, + ["md-jump_rope"] = 0xf12ff, + ["md-kabaddi"] = 0xf0d87, + ["md-kangaroo"] = 0xf1558, + ["md-karate"] = 0xf082c, + ["md-kayaking"] = 0xf08af, + ["md-keg"] = 0xf0305, + ["md-kettle"] = 0xf05fa, + ["md-kettle_alert"] = 0xf1317, + ["md-kettle_alert_outline"] = 0xf1318, + ["md-kettle_off"] = 0xf131b, + ["md-kettle_off_outline"] = 0xf131c, + ["md-kettle_outline"] = 0xf0f56, + ["md-kettle_pour_over"] = 0xf173c, + ["md-kettle_steam"] = 0xf1319, + ["md-kettle_steam_outline"] = 0xf131a, + ["md-kettlebell"] = 0xf1300, + ["md-key"] = 0xf0306, + ["md-key_alert"] = 0xf1983, + ["md-key_alert_outline"] = 0xf1984, + ["md-key_arrow_right"] = 0xf1312, + ["md-key_chain"] = 0xf1574, + ["md-key_chain_variant"] = 0xf1575, + ["md-key_change"] = 0xf0307, + ["md-key_link"] = 0xf119f, + ["md-key_minus"] = 0xf0308, + ["md-key_outline"] = 0xf0dd6, + ["md-key_plus"] = 0xf0309, + ["md-key_remove"] = 0xf030a, + ["md-key_star"] = 0xf119e, + ["md-key_variant"] = 0xf030b, + ["md-key_wireless"] = 0xf0fc2, + ["md-keyboard"] = 0xf030c, + ["md-keyboard_backspace"] = 0xf030d, + ["md-keyboard_caps"] = 0xf030e, + ["md-keyboard_close"] = 0xf030f, + ["md-keyboard_esc"] = 0xf12b7, + ["md-keyboard_f1"] = 0xf12ab, + ["md-keyboard_f10"] = 0xf12b4, + ["md-keyboard_f11"] = 0xf12b5, + ["md-keyboard_f12"] = 0xf12b6, + ["md-keyboard_f2"] = 0xf12ac, + ["md-keyboard_f3"] = 0xf12ad, + ["md-keyboard_f4"] = 0xf12ae, + ["md-keyboard_f5"] = 0xf12af, + ["md-keyboard_f6"] = 0xf12b0, + ["md-keyboard_f7"] = 0xf12b1, + ["md-keyboard_f8"] = 0xf12b2, + ["md-keyboard_f9"] = 0xf12b3, + ["md-keyboard_off"] = 0xf0310, + ["md-keyboard_off_outline"] = 0xf0e4b, + ["md-keyboard_outline"] = 0xf097b, + ["md-keyboard_return"] = 0xf0311, + ["md-keyboard_settings"] = 0xf09f9, + ["md-keyboard_settings_outline"] = 0xf09fa, + ["md-keyboard_space"] = 0xf1050, + ["md-keyboard_tab"] = 0xf0312, + ["md-keyboard_tab_reverse"] = 0xf0325, + ["md-keyboard_variant"] = 0xf0313, + ["md-khanda"] = 0xf10fd, + ["md-kickstarter"] = 0xf0745, + ["md-kite"] = 0xf1985, + ["md-kite_outline"] = 0xf1986, + ["md-kitesurfing"] = 0xf1744, + ["md-klingon"] = 0xf135b, + ["md-knife"] = 0xf09fb, + ["md-knife_military"] = 0xf09fc, + ["md-koala"] = 0xf173f, + ["md-kodi"] = 0xf0314, + ["md-kubernetes"] = 0xf10fe, + ["md-label"] = 0xf0315, + ["md-label_multiple"] = 0xf1375, + ["md-label_multiple_outline"] = 0xf1376, + ["md-label_off"] = 0xf0acb, + ["md-label_off_outline"] = 0xf0acc, + ["md-label_outline"] = 0xf0316, + ["md-label_percent"] = 0xf12ea, + ["md-label_percent_outline"] = 0xf12eb, + ["md-label_variant"] = 0xf0acd, + ["md-label_variant_outline"] = 0xf0ace, + ["md-ladder"] = 0xf15a2, + ["md-ladybug"] = 0xf082d, + ["md-lambda"] = 0xf0627, + ["md-lamp"] = 0xf06b5, + ["md-lamp_outline"] = 0xf17d0, + ["md-lamps"] = 0xf1576, + ["md-lamps_outline"] = 0xf17d1, + ["md-lan"] = 0xf0317, + ["md-lan_check"] = 0xf12aa, + ["md-lan_connect"] = 0xf0318, + ["md-lan_disconnect"] = 0xf0319, + ["md-lan_pending"] = 0xf031a, + ["md-land_fields"] = 0xf1ab2, + ["md-land_plots"] = 0xf1ab3, + ["md-land_plots_circle"] = 0xf1ab4, + ["md-land_plots_circle_variant"] = 0xf1ab5, + ["md-land_rows_horizontal"] = 0xf1ab6, + ["md-land_rows_vertical"] = 0xf1ab7, + ["md-landslide"] = 0xf1a48, + ["md-landslide_outline"] = 0xf1a49, + ["md-language_c"] = 0xf0671, + ["md-language_cpp"] = 0xf0672, + ["md-language_csharp"] = 0xf031b, + ["md-language_css3"] = 0xf031c, + ["md-language_fortran"] = 0xf121a, + ["md-language_go"] = 0xf07d3, + ["md-language_haskell"] = 0xf0c92, + ["md-language_html5"] = 0xf031d, + ["md-language_java"] = 0xf0b37, + ["md-language_javascript"] = 0xf031e, + ["md-language_kotlin"] = 0xf1219, + ["md-language_lua"] = 0xf08b1, + ["md-language_markdown"] = 0xf0354, + ["md-language_markdown_outline"] = 0xf0f5b, + ["md-language_php"] = 0xf031f, + ["md-language_python"] = 0xf0320, + ["md-language_r"] = 0xf07d4, + ["md-language_ruby"] = 0xf0d2d, + ["md-language_ruby_on_rails"] = 0xf0acf, + ["md-language_rust"] = 0xf1617, + ["md-language_swift"] = 0xf06e5, + ["md-language_typescript"] = 0xf06e6, + ["md-language_xaml"] = 0xf0673, + ["md-laptop"] = 0xf0322, + ["md-laptop_account"] = 0xf1a4a, + ["md-laptop_off"] = 0xf06e7, + ["md-laravel"] = 0xf0ad0, + ["md-laser_pointer"] = 0xf1484, + ["md-lasso"] = 0xf0f03, + ["md-lastpass"] = 0xf0446, + ["md-latitude"] = 0xf0f57, + ["md-launch"] = 0xf0327, + ["md-lava_lamp"] = 0xf07d5, + ["md-layers"] = 0xf0328, + ["md-layers_edit"] = 0xf1892, + ["md-layers_minus"] = 0xf0e4c, + ["md-layers_off"] = 0xf0329, + ["md-layers_off_outline"] = 0xf09fd, + ["md-layers_outline"] = 0xf09fe, + ["md-layers_plus"] = 0xf0e4d, + ["md-layers_remove"] = 0xf0e4e, + ["md-layers_search"] = 0xf1206, + ["md-layers_search_outline"] = 0xf1207, + ["md-layers_triple"] = 0xf0f58, + ["md-layers_triple_outline"] = 0xf0f59, + ["md-lead_pencil"] = 0xf064f, + ["md-leaf"] = 0xf032a, + ["md-leaf_circle"] = 0xf1905, + ["md-leaf_circle_outline"] = 0xf1906, + ["md-leaf_maple"] = 0xf0c93, + ["md-leaf_maple_off"] = 0xf12da, + ["md-leaf_off"] = 0xf12d9, + ["md-leak"] = 0xf0dd7, + ["md-leak_off"] = 0xf0dd8, + ["md-lecturn"] = 0xf1af0, + ["md-led_off"] = 0xf032b, + ["md-led_on"] = 0xf032c, + ["md-led_outline"] = 0xf032d, + ["md-led_strip"] = 0xf07d6, + ["md-led_strip_variant"] = 0xf1051, + ["md-led_strip_variant_off"] = 0xf1a4b, + ["md-led_variant_off"] = 0xf032e, + ["md-led_variant_on"] = 0xf032f, + ["md-led_variant_outline"] = 0xf0330, + ["md-leek"] = 0xf117d, + ["md-less_than"] = 0xf097c, + ["md-less_than_or_equal"] = 0xf097d, + ["md-library"] = 0xf0331, + ["md-library_outline"] = 0xf1a22, + ["md-library_shelves"] = 0xf0ba9, + ["md-license"] = 0xf0fc3, + ["md-lifebuoy"] = 0xf087e, + ["md-light_flood_down"] = 0xf1987, + ["md-light_flood_up"] = 0xf1988, + ["md-light_recessed"] = 0xf179b, + ["md-light_switch"] = 0xf097e, + ["md-light_switch_off"] = 0xf1a24, + ["md-lightbulb"] = 0xf0335, + ["md-lightbulb_alert"] = 0xf19e1, + ["md-lightbulb_alert_outline"] = 0xf19e2, + ["md-lightbulb_auto"] = 0xf1800, + ["md-lightbulb_auto_outline"] = 0xf1801, + ["md-lightbulb_cfl"] = 0xf1208, + ["md-lightbulb_cfl_off"] = 0xf1209, + ["md-lightbulb_cfl_spiral"] = 0xf1275, + ["md-lightbulb_cfl_spiral_off"] = 0xf12c3, + ["md-lightbulb_fluorescent_tube"] = 0xf1804, + ["md-lightbulb_fluorescent_tube_outline"] = 0xf1805, + ["md-lightbulb_group"] = 0xf1253, + ["md-lightbulb_group_off"] = 0xf12cd, + ["md-lightbulb_group_off_outline"] = 0xf12ce, + ["md-lightbulb_group_outline"] = 0xf1254, + ["md-lightbulb_multiple"] = 0xf1255, + ["md-lightbulb_multiple_off"] = 0xf12cf, + ["md-lightbulb_multiple_off_outline"] = 0xf12d0, + ["md-lightbulb_multiple_outline"] = 0xf1256, + ["md-lightbulb_night"] = 0xf1a4c, + ["md-lightbulb_night_outline"] = 0xf1a4d, + ["md-lightbulb_off"] = 0xf0e4f, + ["md-lightbulb_off_outline"] = 0xf0e50, + ["md-lightbulb_on"] = 0xf06e8, + ["md-lightbulb_on_10"] = 0xf1a4e, + ["md-lightbulb_on_20"] = 0xf1a4f, + ["md-lightbulb_on_30"] = 0xf1a50, + ["md-lightbulb_on_40"] = 0xf1a51, + ["md-lightbulb_on_50"] = 0xf1a52, + ["md-lightbulb_on_60"] = 0xf1a53, + ["md-lightbulb_on_70"] = 0xf1a54, + ["md-lightbulb_on_80"] = 0xf1a55, + ["md-lightbulb_on_90"] = 0xf1a56, + ["md-lightbulb_on_outline"] = 0xf06e9, + ["md-lightbulb_outline"] = 0xf0336, + ["md-lightbulb_question"] = 0xf19e3, + ["md-lightbulb_question_outline"] = 0xf19e4, + ["md-lightbulb_spot"] = 0xf17f4, + ["md-lightbulb_spot_off"] = 0xf17f5, + ["md-lightbulb_variant"] = 0xf1802, + ["md-lightbulb_variant_outline"] = 0xf1803, + ["md-lighthouse"] = 0xf09ff, + ["md-lighthouse_on"] = 0xf0a00, + ["md-lightning_bolt"] = 0xf140b, + ["md-lightning_bolt_circle"] = 0xf0820, + ["md-lightning_bolt_outline"] = 0xf140c, + ["md-line_scan"] = 0xf0624, + ["md-lingerie"] = 0xf1476, + ["md-link"] = 0xf0337, + ["md-link_box"] = 0xf0d1a, + ["md-link_box_outline"] = 0xf0d1b, + ["md-link_box_variant"] = 0xf0d1c, + ["md-link_box_variant_outline"] = 0xf0d1d, + ["md-link_lock"] = 0xf10ba, + ["md-link_off"] = 0xf0338, + ["md-link_plus"] = 0xf0c94, + ["md-link_variant"] = 0xf0339, + ["md-link_variant_minus"] = 0xf10ff, + ["md-link_variant_off"] = 0xf033a, + ["md-link_variant_plus"] = 0xf1100, + ["md-link_variant_remove"] = 0xf1101, + ["md-linkedin"] = 0xf033b, + ["md-linux"] = 0xf033d, + ["md-linux_mint"] = 0xf08ed, + ["md-lipstick"] = 0xf13b5, + ["md-liquid_spot"] = 0xf1826, + ["md-liquor"] = 0xf191e, + ["md-list_status"] = 0xf15ab, + ["md-litecoin"] = 0xf0a61, + ["md-loading"] = 0xf0772, + ["md-location_enter"] = 0xf0fc4, + ["md-location_exit"] = 0xf0fc5, + ["md-lock"] = 0xf033e, + ["md-lock_alert"] = 0xf08ee, + ["md-lock_alert_outline"] = 0xf15d1, + ["md-lock_check"] = 0xf139a, + ["md-lock_check_outline"] = 0xf16a8, + ["md-lock_clock"] = 0xf097f, + ["md-lock_minus"] = 0xf16a9, + ["md-lock_minus_outline"] = 0xf16aa, + ["md-lock_off"] = 0xf1671, + ["md-lock_off_outline"] = 0xf1672, + ["md-lock_open"] = 0xf033f, + ["md-lock_open_alert"] = 0xf139b, + ["md-lock_open_alert_outline"] = 0xf15d2, + ["md-lock_open_check"] = 0xf139c, + ["md-lock_open_check_outline"] = 0xf16ab, + ["md-lock_open_minus"] = 0xf16ac, + ["md-lock_open_minus_outline"] = 0xf16ad, + ["md-lock_open_outline"] = 0xf0340, + ["md-lock_open_plus"] = 0xf16ae, + ["md-lock_open_plus_outline"] = 0xf16af, + ["md-lock_open_remove"] = 0xf16b0, + ["md-lock_open_remove_outline"] = 0xf16b1, + ["md-lock_open_variant"] = 0xf0fc6, + ["md-lock_open_variant_outline"] = 0xf0fc7, + ["md-lock_outline"] = 0xf0341, + ["md-lock_pattern"] = 0xf06ea, + ["md-lock_plus"] = 0xf05fb, + ["md-lock_plus_outline"] = 0xf16b2, + ["md-lock_question"] = 0xf08ef, + ["md-lock_remove"] = 0xf16b3, + ["md-lock_remove_outline"] = 0xf16b4, + ["md-lock_reset"] = 0xf0773, + ["md-lock_smart"] = 0xf08b2, + ["md-locker"] = 0xf07d7, + ["md-locker_multiple"] = 0xf07d8, + ["md-login"] = 0xf0342, + ["md-logout"] = 0xf0343, + ["md-logout_variant"] = 0xf05fd, + ["md-longitude"] = 0xf0f5a, + ["md-looks"] = 0xf0344, + ["md-lotion"] = 0xf1582, + ["md-lotion_outline"] = 0xf1583, + ["md-lotion_plus"] = 0xf1584, + ["md-lotion_plus_outline"] = 0xf1585, + ["md-loupe"] = 0xf0345, + ["md-lumx"] = 0xf0346, + ["md-lungs"] = 0xf1084, + ["md-mace"] = 0xf1843, + ["md-magazine_pistol"] = 0xf0324, + ["md-magazine_rifle"] = 0xf0323, + ["md-magic_staff"] = 0xf1844, + ["md-magnet"] = 0xf0347, + ["md-magnet_on"] = 0xf0348, + ["md-magnify"] = 0xf0349, + ["md-magnify_close"] = 0xf0980, + ["md-magnify_expand"] = 0xf1874, + ["md-magnify_minus"] = 0xf034a, + ["md-magnify_minus_cursor"] = 0xf0a62, + ["md-magnify_minus_outline"] = 0xf06ec, + ["md-magnify_plus"] = 0xf034b, + ["md-magnify_plus_cursor"] = 0xf0a63, + ["md-magnify_plus_outline"] = 0xf06ed, + ["md-magnify_remove_cursor"] = 0xf120c, + ["md-magnify_remove_outline"] = 0xf120d, + ["md-magnify_scan"] = 0xf1276, + ["md-mail"] = 0xf0ebb, + ["md-mailbox"] = 0xf06ee, + ["md-mailbox_open"] = 0xf0d88, + ["md-mailbox_open_outline"] = 0xf0d89, + ["md-mailbox_open_up"] = 0xf0d8a, + ["md-mailbox_open_up_outline"] = 0xf0d8b, + ["md-mailbox_outline"] = 0xf0d8c, + ["md-mailbox_up"] = 0xf0d8d, + ["md-mailbox_up_outline"] = 0xf0d8e, + ["md-manjaro"] = 0xf160a, + ["md-map"] = 0xf034d, + ["md-map_check"] = 0xf0ebc, + ["md-map_check_outline"] = 0xf0ebd, + ["md-map_clock"] = 0xf0d1e, + ["md-map_clock_outline"] = 0xf0d1f, + ["md-map_legend"] = 0xf0a01, + ["md-map_marker"] = 0xf034e, + ["md-map_marker_account"] = 0xf18e3, + ["md-map_marker_account_outline"] = 0xf18e4, + ["md-map_marker_alert"] = 0xf0f05, + ["md-map_marker_alert_outline"] = 0xf0f06, + ["md-map_marker_check"] = 0xf0c95, + ["md-map_marker_check_outline"] = 0xf12fb, + ["md-map_marker_circle"] = 0xf034f, + ["md-map_marker_distance"] = 0xf08f0, + ["md-map_marker_down"] = 0xf1102, + ["md-map_marker_left"] = 0xf12db, + ["md-map_marker_left_outline"] = 0xf12dd, + ["md-map_marker_minus"] = 0xf0650, + ["md-map_marker_minus_outline"] = 0xf12f9, + ["md-map_marker_multiple"] = 0xf0350, + ["md-map_marker_multiple_outline"] = 0xf1277, + ["md-map_marker_off"] = 0xf0351, + ["md-map_marker_off_outline"] = 0xf12fd, + ["md-map_marker_outline"] = 0xf07d9, + ["md-map_marker_path"] = 0xf0d20, + ["md-map_marker_plus"] = 0xf0651, + ["md-map_marker_plus_outline"] = 0xf12f8, + ["md-map_marker_question"] = 0xf0f07, + ["md-map_marker_question_outline"] = 0xf0f08, + ["md-map_marker_radius"] = 0xf0352, + ["md-map_marker_radius_outline"] = 0xf12fc, + ["md-map_marker_remove"] = 0xf0f09, + ["md-map_marker_remove_outline"] = 0xf12fa, + ["md-map_marker_remove_variant"] = 0xf0f0a, + ["md-map_marker_right"] = 0xf12dc, + ["md-map_marker_right_outline"] = 0xf12de, + ["md-map_marker_star"] = 0xf1608, + ["md-map_marker_star_outline"] = 0xf1609, + ["md-map_marker_up"] = 0xf1103, + ["md-map_minus"] = 0xf0981, + ["md-map_outline"] = 0xf0982, + ["md-map_plus"] = 0xf0983, + ["md-map_search"] = 0xf0984, + ["md-map_search_outline"] = 0xf0985, + ["md-mapbox"] = 0xf0baa, + ["md-margin"] = 0xf0353, + ["md-marker"] = 0xf0652, + ["md-marker_cancel"] = 0xf0dd9, + ["md-marker_check"] = 0xf0355, + ["md-mastodon"] = 0xf0ad1, + ["md-material_design"] = 0xf0986, + ["md-material_ui"] = 0xf0357, + ["md-math_compass"] = 0xf0358, + ["md-math_cos"] = 0xf0c96, + ["md-math_integral"] = 0xf0fc8, + ["md-math_integral_box"] = 0xf0fc9, + ["md-math_log"] = 0xf1085, + ["md-math_norm"] = 0xf0fca, + ["md-math_norm_box"] = 0xf0fcb, + ["md-math_sin"] = 0xf0c97, + ["md-math_tan"] = 0xf0c98, + ["md-matrix"] = 0xf0628, + ["md-medal"] = 0xf0987, + ["md-medal_outline"] = 0xf1326, + ["md-medical_bag"] = 0xf06ef, + ["md-medical_cotton_swab"] = 0xf1ab8, + ["md-meditation"] = 0xf117b, + ["md-memory"] = 0xf035b, + ["md-menorah"] = 0xf17d4, + ["md-menorah_fire"] = 0xf17d5, + ["md-menu"] = 0xf035c, + ["md-menu_down"] = 0xf035d, + ["md-menu_down_outline"] = 0xf06b6, + ["md-menu_left"] = 0xf035e, + ["md-menu_left_outline"] = 0xf0a02, + ["md-menu_open"] = 0xf0bab, + ["md-menu_right"] = 0xf035f, + ["md-menu_right_outline"] = 0xf0a03, + ["md-menu_swap"] = 0xf0a64, + ["md-menu_swap_outline"] = 0xf0a65, + ["md-menu_up"] = 0xf0360, + ["md-menu_up_outline"] = 0xf06b7, + ["md-merge"] = 0xf0f5c, + ["md-message"] = 0xf0361, + ["md-message_alert"] = 0xf0362, + ["md-message_alert_outline"] = 0xf0a04, + ["md-message_arrow_left"] = 0xf12f2, + ["md-message_arrow_left_outline"] = 0xf12f3, + ["md-message_arrow_right"] = 0xf12f4, + ["md-message_arrow_right_outline"] = 0xf12f5, + ["md-message_badge"] = 0xf1941, + ["md-message_badge_outline"] = 0xf1942, + ["md-message_bookmark"] = 0xf15ac, + ["md-message_bookmark_outline"] = 0xf15ad, + ["md-message_bulleted"] = 0xf06a2, + ["md-message_bulleted_off"] = 0xf06a3, + ["md-message_cog"] = 0xf06f1, + ["md-message_cog_outline"] = 0xf1172, + ["md-message_draw"] = 0xf0363, + ["md-message_fast"] = 0xf19cc, + ["md-message_fast_outline"] = 0xf19cd, + ["md-message_flash"] = 0xf15a9, + ["md-message_flash_outline"] = 0xf15aa, + ["md-message_image"] = 0xf0364, + ["md-message_image_outline"] = 0xf116c, + ["md-message_lock"] = 0xf0fcc, + ["md-message_lock_outline"] = 0xf116d, + ["md-message_minus"] = 0xf116e, + ["md-message_minus_outline"] = 0xf116f, + ["md-message_off"] = 0xf164d, + ["md-message_off_outline"] = 0xf164e, + ["md-message_outline"] = 0xf0365, + ["md-message_plus"] = 0xf0653, + ["md-message_plus_outline"] = 0xf10bb, + ["md-message_processing"] = 0xf0366, + ["md-message_processing_outline"] = 0xf1170, + ["md-message_question"] = 0xf173a, + ["md-message_question_outline"] = 0xf173b, + ["md-message_reply"] = 0xf0367, + ["md-message_reply_outline"] = 0xf173d, + ["md-message_reply_text"] = 0xf0368, + ["md-message_reply_text_outline"] = 0xf173e, + ["md-message_settings"] = 0xf06f0, + ["md-message_settings_outline"] = 0xf1171, + ["md-message_star"] = 0xf069a, + ["md-message_star_outline"] = 0xf1250, + ["md-message_text"] = 0xf0369, + ["md-message_text_clock"] = 0xf1173, + ["md-message_text_clock_outline"] = 0xf1174, + ["md-message_text_fast"] = 0xf19ce, + ["md-message_text_fast_outline"] = 0xf19cf, + ["md-message_text_lock"] = 0xf0fcd, + ["md-message_text_lock_outline"] = 0xf1175, + ["md-message_text_outline"] = 0xf036a, + ["md-message_video"] = 0xf036b, + ["md-meteor"] = 0xf0629, + ["md-meter_electric"] = 0xf1a57, + ["md-meter_electric_outline"] = 0xf1a58, + ["md-meter_gas"] = 0xf1a59, + ["md-meter_gas_outline"] = 0xf1a5a, + ["md-metronome"] = 0xf07da, + ["md-metronome_tick"] = 0xf07db, + ["md-micro_sd"] = 0xf07dc, + ["md-microphone"] = 0xf036c, + ["md-microphone_minus"] = 0xf08b3, + ["md-microphone_off"] = 0xf036d, + ["md-microphone_outline"] = 0xf036e, + ["md-microphone_plus"] = 0xf08b4, + ["md-microphone_question"] = 0xf1989, + ["md-microphone_question_outline"] = 0xf198a, + ["md-microphone_settings"] = 0xf036f, + ["md-microphone_variant"] = 0xf0370, + ["md-microphone_variant_off"] = 0xf0371, + ["md-microscope"] = 0xf0654, + ["md-microsoft"] = 0xf0372, + ["md-microsoft_access"] = 0xf138e, + ["md-microsoft_azure"] = 0xf0805, + ["md-microsoft_azure_devops"] = 0xf0fd5, + ["md-microsoft_bing"] = 0xf00a4, + ["md-microsoft_dynamics_365"] = 0xf0988, + ["md-microsoft_edge"] = 0xf01e9, + ["md-microsoft_excel"] = 0xf138f, + ["md-microsoft_internet_explorer"] = 0xf0300, + ["md-microsoft_office"] = 0xf03c6, + ["md-microsoft_onedrive"] = 0xf03ca, + ["md-microsoft_onenote"] = 0xf0747, + ["md-microsoft_outlook"] = 0xf0d22, + ["md-microsoft_powerpoint"] = 0xf1390, + ["md-microsoft_sharepoint"] = 0xf1391, + ["md-microsoft_teams"] = 0xf02bb, + ["md-microsoft_visual_studio"] = 0xf0610, + ["md-microsoft_visual_studio_code"] = 0xf0a1e, + ["md-microsoft_windows"] = 0xf05b3, + ["md-microsoft_windows_classic"] = 0xf0a21, + ["md-microsoft_word"] = 0xf1392, + ["md-microsoft_xbox"] = 0xf05b9, + ["md-microsoft_xbox_controller"] = 0xf05ba, + ["md-microsoft_xbox_controller_battery_alert"] = 0xf074b, + ["md-microsoft_xbox_controller_battery_charging"] = 0xf0a22, + ["md-microsoft_xbox_controller_battery_empty"] = 0xf074c, + ["md-microsoft_xbox_controller_battery_full"] = 0xf074d, + ["md-microsoft_xbox_controller_battery_low"] = 0xf074e, + ["md-microsoft_xbox_controller_battery_medium"] = 0xf074f, + ["md-microsoft_xbox_controller_battery_unknown"] = 0xf0750, + ["md-microsoft_xbox_controller_menu"] = 0xf0e6f, + ["md-microsoft_xbox_controller_off"] = 0xf05bb, + ["md-microsoft_xbox_controller_view"] = 0xf0e70, + ["md-microwave"] = 0xf0c99, + ["md-microwave_off"] = 0xf1423, + ["md-middleware"] = 0xf0f5d, + ["md-middleware_outline"] = 0xf0f5e, + ["md-midi"] = 0xf08f1, + ["md-midi_port"] = 0xf08f2, + ["md-mine"] = 0xf0dda, + ["md-minecraft"] = 0xf0373, + ["md-mini_sd"] = 0xf0a05, + ["md-minidisc"] = 0xf0a06, + ["md-minus"] = 0xf0374, + ["md-minus_box"] = 0xf0375, + ["md-minus_box_multiple"] = 0xf1141, + ["md-minus_box_multiple_outline"] = 0xf1142, + ["md-minus_box_outline"] = 0xf06f2, + ["md-minus_circle"] = 0xf0376, + ["md-minus_circle_multiple"] = 0xf035a, + ["md-minus_circle_multiple_outline"] = 0xf0ad3, + ["md-minus_circle_off"] = 0xf1459, + ["md-minus_circle_off_outline"] = 0xf145a, + ["md-minus_circle_outline"] = 0xf0377, + ["md-minus_network"] = 0xf0378, + ["md-minus_network_outline"] = 0xf0c9a, + ["md-minus_thick"] = 0xf1639, + ["md-mirror"] = 0xf11fd, + ["md-mirror_rectangle"] = 0xf179f, + ["md-mirror_variant"] = 0xf17a0, + ["md-mixed_martial_arts"] = 0xf0d8f, + ["md-mixed_reality"] = 0xf087f, + ["md-molecule"] = 0xf0bac, + ["md-molecule_co"] = 0xf12fe, + ["md-molecule_co2"] = 0xf07e4, + ["md-monitor"] = 0xf0379, + ["md-monitor_account"] = 0xf1a5b, + ["md-monitor_arrow_down"] = 0xf19d0, + ["md-monitor_arrow_down_variant"] = 0xf19d1, + ["md-monitor_cellphone"] = 0xf0989, + ["md-monitor_cellphone_star"] = 0xf098a, + ["md-monitor_dashboard"] = 0xf0a07, + ["md-monitor_edit"] = 0xf12c6, + ["md-monitor_eye"] = 0xf13b4, + ["md-monitor_lock"] = 0xf0ddb, + ["md-monitor_multiple"] = 0xf037a, + ["md-monitor_off"] = 0xf0d90, + ["md-monitor_screenshot"] = 0xf0e51, + ["md-monitor_share"] = 0xf1483, + ["md-monitor_shimmer"] = 0xf1104, + ["md-monitor_small"] = 0xf1876, + ["md-monitor_speaker"] = 0xf0f5f, + ["md-monitor_speaker_off"] = 0xf0f60, + ["md-monitor_star"] = 0xf0ddc, + ["md-moon_first_quarter"] = 0xf0f61, + ["md-moon_full"] = 0xf0f62, + ["md-moon_last_quarter"] = 0xf0f63, + ["md-moon_new"] = 0xf0f64, + ["md-moon_waning_crescent"] = 0xf0f65, + ["md-moon_waning_gibbous"] = 0xf0f66, + ["md-moon_waxing_crescent"] = 0xf0f67, + ["md-moon_waxing_gibbous"] = 0xf0f68, + ["md-moped"] = 0xf1086, + ["md-moped_electric"] = 0xf15b7, + ["md-moped_electric_outline"] = 0xf15b8, + ["md-moped_outline"] = 0xf15b9, + ["md-more"] = 0xf037b, + ["md-mortar_pestle"] = 0xf1748, + ["md-mortar_pestle_plus"] = 0xf03f1, + ["md-mosque"] = 0xf1827, + ["md-mother_heart"] = 0xf1314, + ["md-mother_nurse"] = 0xf0d21, + ["md-motion"] = 0xf15b2, + ["md-motion_outline"] = 0xf15b3, + ["md-motion_pause"] = 0xf1590, + ["md-motion_pause_outline"] = 0xf1592, + ["md-motion_play"] = 0xf158f, + ["md-motion_play_outline"] = 0xf1591, + ["md-motion_sensor"] = 0xf0d91, + ["md-motion_sensor_off"] = 0xf1435, + ["md-motorbike"] = 0xf037c, + ["md-motorbike_electric"] = 0xf15ba, + ["md-mouse"] = 0xf037d, + ["md-mouse_bluetooth"] = 0xf098b, + ["md-mouse_move_down"] = 0xf1550, + ["md-mouse_move_up"] = 0xf1551, + ["md-mouse_move_vertical"] = 0xf1552, + ["md-mouse_off"] = 0xf037e, + ["md-mouse_variant"] = 0xf037f, + ["md-mouse_variant_off"] = 0xf0380, + ["md-move_resize"] = 0xf0655, + ["md-move_resize_variant"] = 0xf0656, + ["md-movie"] = 0xf0381, + ["md-movie_check"] = 0xf16f3, + ["md-movie_check_outline"] = 0xf16f4, + ["md-movie_cog"] = 0xf16f5, + ["md-movie_cog_outline"] = 0xf16f6, + ["md-movie_edit"] = 0xf1122, + ["md-movie_edit_outline"] = 0xf1123, + ["md-movie_filter"] = 0xf1124, + ["md-movie_filter_outline"] = 0xf1125, + ["md-movie_minus"] = 0xf16f7, + ["md-movie_minus_outline"] = 0xf16f8, + ["md-movie_off"] = 0xf16f9, + ["md-movie_off_outline"] = 0xf16fa, + ["md-movie_open"] = 0xf0fce, + ["md-movie_open_check"] = 0xf16fb, + ["md-movie_open_check_outline"] = 0xf16fc, + ["md-movie_open_cog"] = 0xf16fd, + ["md-movie_open_cog_outline"] = 0xf16fe, + ["md-movie_open_edit"] = 0xf16ff, + ["md-movie_open_edit_outline"] = 0xf1700, + ["md-movie_open_minus"] = 0xf1701, + ["md-movie_open_minus_outline"] = 0xf1702, + ["md-movie_open_off"] = 0xf1703, + ["md-movie_open_off_outline"] = 0xf1704, + ["md-movie_open_outline"] = 0xf0fcf, + ["md-movie_open_play"] = 0xf1705, + ["md-movie_open_play_outline"] = 0xf1706, + ["md-movie_open_plus"] = 0xf1707, + ["md-movie_open_plus_outline"] = 0xf1708, + ["md-movie_open_remove"] = 0xf1709, + ["md-movie_open_remove_outline"] = 0xf170a, + ["md-movie_open_settings"] = 0xf170b, + ["md-movie_open_settings_outline"] = 0xf170c, + ["md-movie_open_star"] = 0xf170d, + ["md-movie_open_star_outline"] = 0xf170e, + ["md-movie_outline"] = 0xf0ddd, + ["md-movie_play"] = 0xf170f, + ["md-movie_play_outline"] = 0xf1710, + ["md-movie_plus"] = 0xf1711, + ["md-movie_plus_outline"] = 0xf1712, + ["md-movie_remove"] = 0xf1713, + ["md-movie_remove_outline"] = 0xf1714, + ["md-movie_roll"] = 0xf07de, + ["md-movie_search"] = 0xf11d2, + ["md-movie_search_outline"] = 0xf11d3, + ["md-movie_settings"] = 0xf1715, + ["md-movie_settings_outline"] = 0xf1716, + ["md-movie_star"] = 0xf1717, + ["md-movie_star_outline"] = 0xf1718, + ["md-mower"] = 0xf166f, + ["md-mower_bag"] = 0xf1670, + ["md-muffin"] = 0xf098c, + ["md-multicast"] = 0xf1893, + ["md-multiplication"] = 0xf0382, + ["md-multiplication_box"] = 0xf0383, + ["md-mushroom"] = 0xf07df, + ["md-mushroom_off"] = 0xf13fa, + ["md-mushroom_off_outline"] = 0xf13fb, + ["md-mushroom_outline"] = 0xf07e0, + ["md-music"] = 0xf075a, + ["md-music_accidental_double_flat"] = 0xf0f69, + ["md-music_accidental_double_sharp"] = 0xf0f6a, + ["md-music_accidental_flat"] = 0xf0f6b, + ["md-music_accidental_natural"] = 0xf0f6c, + ["md-music_accidental_sharp"] = 0xf0f6d, + ["md-music_box"] = 0xf0384, + ["md-music_box_multiple"] = 0xf0333, + ["md-music_box_multiple_outline"] = 0xf0f04, + ["md-music_box_outline"] = 0xf0385, + ["md-music_circle"] = 0xf0386, + ["md-music_circle_outline"] = 0xf0ad4, + ["md-music_clef_alto"] = 0xf0f6e, + ["md-music_clef_bass"] = 0xf0f6f, + ["md-music_clef_treble"] = 0xf0f70, + ["md-music_note"] = 0xf0388, + ["md-music_note_bluetooth"] = 0xf05fe, + ["md-music_note_bluetooth_off"] = 0xf05ff, + ["md-music_note_eighth_dotted"] = 0xf0f71, + ["md-music_note_half"] = 0xf0389, + ["md-music_note_half_dotted"] = 0xf0f72, + ["md-music_note_off"] = 0xf038a, + ["md-music_note_off_outline"] = 0xf0f73, + ["md-music_note_outline"] = 0xf0f74, + ["md-music_note_plus"] = 0xf0dde, + ["md-music_note_quarter"] = 0xf038b, + ["md-music_note_quarter_dotted"] = 0xf0f75, + ["md-music_note_sixteenth"] = 0xf038c, + ["md-music_note_sixteenth_dotted"] = 0xf0f76, + ["md-music_note_whole"] = 0xf038d, + ["md-music_note_whole_dotted"] = 0xf0f77, + ["md-music_off"] = 0xf075b, + ["md-music_rest_eighth"] = 0xf0f78, + ["md-music_rest_half"] = 0xf0f79, + ["md-music_rest_quarter"] = 0xf0f7a, + ["md-music_rest_sixteenth"] = 0xf0f7b, + ["md-music_rest_whole"] = 0xf0f7c, + ["md-mustache"] = 0xf15de, + ["md-nail"] = 0xf0ddf, + ["md-nas"] = 0xf08f3, + ["md-nativescript"] = 0xf0880, + ["md-nature"] = 0xf038e, + ["md-nature_people"] = 0xf038f, + ["md-navigation"] = 0xf0390, + ["md-navigation_outline"] = 0xf1607, + ["md-navigation_variant_outline"] = 0xf18f1, + ["md-near_me"] = 0xf18f0, + ["md-necklace"] = 0xf0f0b, + ["md-needle"] = 0xf0391, + ["md-needle_off"] = 0xf19d2, + ["md-netflix"] = 0xf0746, + ["md-network"] = 0xf06f3, + ["md-network_off"] = 0xf0c9b, + ["md-network_off_outline"] = 0xf0c9c, + ["md-network_outline"] = 0xf0c9d, + ["md-network_pos"] = 0xf1acb, + ["md-network_strength_1"] = 0xf08f4, + ["md-network_strength_1_alert"] = 0xf08f5, + ["md-network_strength_2"] = 0xf08f6, + ["md-network_strength_2_alert"] = 0xf08f7, + ["md-network_strength_3"] = 0xf08f8, + ["md-network_strength_3_alert"] = 0xf08f9, + ["md-network_strength_4"] = 0xf08fa, + ["md-network_strength_4_alert"] = 0xf08fb, + ["md-network_strength_4_cog"] = 0xf191a, + ["md-network_strength_off"] = 0xf08fc, + ["md-network_strength_off_outline"] = 0xf08fd, + ["md-network_strength_outline"] = 0xf08fe, + ["md-new_box"] = 0xf0394, + ["md-newspaper"] = 0xf0395, + ["md-newspaper_check"] = 0xf1943, + ["md-newspaper_minus"] = 0xf0f0c, + ["md-newspaper_plus"] = 0xf0f0d, + ["md-newspaper_remove"] = 0xf1944, + ["md-newspaper_variant"] = 0xf1001, + ["md-newspaper_variant_multiple"] = 0xf1002, + ["md-newspaper_variant_multiple_outline"] = 0xf1003, + ["md-newspaper_variant_outline"] = 0xf1004, + ["md-nfc"] = 0xf0396, + ["md-nfc_search_variant"] = 0xf0e53, + ["md-nfc_tap"] = 0xf0397, + ["md-nfc_variant"] = 0xf0398, + ["md-nfc_variant_off"] = 0xf0e54, + ["md-ninja"] = 0xf0774, + ["md-nintendo_game_boy"] = 0xf1393, + ["md-nintendo_switch"] = 0xf07e1, + ["md-nintendo_wii"] = 0xf05ab, + ["md-nintendo_wiiu"] = 0xf072d, + ["md-nix"] = 0xf1105, + ["md-nodejs"] = 0xf0399, + ["md-noodles"] = 0xf117e, + ["md-not_equal"] = 0xf098d, + ["md-not_equal_variant"] = 0xf098e, + ["md-note"] = 0xf039a, + ["md-note_alert"] = 0xf177d, + ["md-note_alert_outline"] = 0xf177e, + ["md-note_check"] = 0xf177f, + ["md-note_check_outline"] = 0xf1780, + ["md-note_edit"] = 0xf1781, + ["md-note_edit_outline"] = 0xf1782, + ["md-note_minus"] = 0xf164f, + ["md-note_minus_outline"] = 0xf1650, + ["md-note_multiple"] = 0xf06b8, + ["md-note_multiple_outline"] = 0xf06b9, + ["md-note_off"] = 0xf1783, + ["md-note_off_outline"] = 0xf1784, + ["md-note_outline"] = 0xf039b, + ["md-note_plus"] = 0xf039c, + ["md-note_plus_outline"] = 0xf039d, + ["md-note_remove"] = 0xf1651, + ["md-note_remove_outline"] = 0xf1652, + ["md-note_search"] = 0xf1653, + ["md-note_search_outline"] = 0xf1654, + ["md-note_text"] = 0xf039e, + ["md-note_text_outline"] = 0xf11d7, + ["md-notebook"] = 0xf082e, + ["md-notebook_check"] = 0xf14f5, + ["md-notebook_check_outline"] = 0xf14f6, + ["md-notebook_edit"] = 0xf14e7, + ["md-notebook_edit_outline"] = 0xf14e9, + ["md-notebook_heart"] = 0xf1a0b, + ["md-notebook_heart_outline"] = 0xf1a0c, + ["md-notebook_minus"] = 0xf1610, + ["md-notebook_minus_outline"] = 0xf1611, + ["md-notebook_multiple"] = 0xf0e55, + ["md-notebook_outline"] = 0xf0ebf, + ["md-notebook_plus"] = 0xf1612, + ["md-notebook_plus_outline"] = 0xf1613, + ["md-notebook_remove"] = 0xf1614, + ["md-notebook_remove_outline"] = 0xf1615, + ["md-notification_clear_all"] = 0xf039f, + ["md-npm"] = 0xf06f7, + ["md-nuke"] = 0xf06a4, + ["md-null"] = 0xf07e2, + ["md-numeric"] = 0xf03a0, + ["md-numeric_0_box"] = 0xf03a1, + ["md-numeric_0_box_multiple"] = 0xf0f0e, + ["md-numeric_0_box_multiple_outline"] = 0xf03a2, + ["md-numeric_0_box_outline"] = 0xf03a3, + ["md-numeric_1"] = 0xf0b3a, + ["md-numeric_10"] = 0xf0fe9, + ["md-numeric_10_box"] = 0xf0f7d, + ["md-numeric_10_box_multiple"] = 0xf0fea, + ["md-numeric_10_box_multiple_outline"] = 0xf0feb, + ["md-numeric_10_box_outline"] = 0xf0f7e, + ["md-numeric_10_circle"] = 0xf0fec, + ["md-numeric_10_circle_outline"] = 0xf0fed, + ["md-numeric_1_box"] = 0xf03a4, + ["md-numeric_1_box_multiple"] = 0xf0f0f, + ["md-numeric_1_box_multiple_outline"] = 0xf03a5, + ["md-numeric_1_box_outline"] = 0xf03a6, + ["md-numeric_1_circle"] = 0xf0ca0, + ["md-numeric_1_circle_outline"] = 0xf0ca1, + ["md-numeric_2"] = 0xf0b3b, + ["md-numeric_2_box"] = 0xf03a7, + ["md-numeric_2_box_multiple"] = 0xf0f10, + ["md-numeric_2_box_multiple_outline"] = 0xf03a8, + ["md-numeric_2_box_outline"] = 0xf03a9, + ["md-numeric_2_circle"] = 0xf0ca2, + ["md-numeric_2_circle_outline"] = 0xf0ca3, + ["md-numeric_3"] = 0xf0b3c, + ["md-numeric_3_box"] = 0xf03aa, + ["md-numeric_3_box_multiple"] = 0xf0f11, + ["md-numeric_3_box_multiple_outline"] = 0xf03ab, + ["md-numeric_3_box_outline"] = 0xf03ac, + ["md-numeric_3_circle"] = 0xf0ca4, + ["md-numeric_3_circle_outline"] = 0xf0ca5, + ["md-numeric_4"] = 0xf0b3d, + ["md-numeric_4_box"] = 0xf03ad, + ["md-numeric_4_box_multiple"] = 0xf0f12, + ["md-numeric_4_box_multiple_outline"] = 0xf03b2, + ["md-numeric_4_box_outline"] = 0xf03ae, + ["md-numeric_4_circle"] = 0xf0ca6, + ["md-numeric_4_circle_outline"] = 0xf0ca7, + ["md-numeric_5"] = 0xf0b3e, + ["md-numeric_5_box"] = 0xf03b1, + ["md-numeric_5_box_multiple"] = 0xf0f13, + ["md-numeric_5_box_multiple_outline"] = 0xf03af, + ["md-numeric_5_box_outline"] = 0xf03b0, + ["md-numeric_5_circle"] = 0xf0ca8, + ["md-numeric_5_circle_outline"] = 0xf0ca9, + ["md-numeric_6"] = 0xf0b3f, + ["md-numeric_6_box"] = 0xf03b3, + ["md-numeric_6_box_multiple"] = 0xf0f14, + ["md-numeric_6_box_multiple_outline"] = 0xf03b4, + ["md-numeric_6_box_outline"] = 0xf03b5, + ["md-numeric_6_circle"] = 0xf0caa, + ["md-numeric_6_circle_outline"] = 0xf0cab, + ["md-numeric_7"] = 0xf0b40, + ["md-numeric_7_box"] = 0xf03b6, + ["md-numeric_7_box_multiple"] = 0xf0f15, + ["md-numeric_7_box_multiple_outline"] = 0xf03b7, + ["md-numeric_7_box_outline"] = 0xf03b8, + ["md-numeric_7_circle"] = 0xf0cac, + ["md-numeric_7_circle_outline"] = 0xf0cad, + ["md-numeric_8"] = 0xf0b41, + ["md-numeric_8_box"] = 0xf03b9, + ["md-numeric_8_box_multiple"] = 0xf0f16, + ["md-numeric_8_box_multiple_outline"] = 0xf03ba, + ["md-numeric_8_box_outline"] = 0xf03bb, + ["md-numeric_8_circle"] = 0xf0cae, + ["md-numeric_8_circle_outline"] = 0xf0caf, + ["md-numeric_9"] = 0xf0b42, + ["md-numeric_9_box"] = 0xf03bc, + ["md-numeric_9_box_multiple"] = 0xf0f17, + ["md-numeric_9_box_multiple_outline"] = 0xf03bd, + ["md-numeric_9_box_outline"] = 0xf03be, + ["md-numeric_9_circle"] = 0xf0cb0, + ["md-numeric_9_circle_outline"] = 0xf0cb1, + ["md-numeric_9_plus"] = 0xf0fee, + ["md-numeric_9_plus_box"] = 0xf03bf, + ["md-numeric_9_plus_box_multiple"] = 0xf0f18, + ["md-numeric_9_plus_box_multiple_outline"] = 0xf03c0, + ["md-numeric_9_plus_box_outline"] = 0xf03c1, + ["md-numeric_9_plus_circle"] = 0xf0cb2, + ["md-numeric_9_plus_circle_outline"] = 0xf0cb3, + ["md-numeric_negative_1"] = 0xf1052, + ["md-numeric_off"] = 0xf19d3, + ["md-numeric_positive_1"] = 0xf15cb, + ["md-nut"] = 0xf06f8, + ["md-nutrition"] = 0xf03c2, + ["md-nuxt"] = 0xf1106, + ["md-oar"] = 0xf067c, + ["md-ocarina"] = 0xf0de0, + ["md-oci"] = 0xf12e9, + ["md-ocr"] = 0xf113a, + ["md-octagon"] = 0xf03c3, + ["md-octagon_outline"] = 0xf03c4, + ["md-octagram"] = 0xf06f9, + ["md-octagram_outline"] = 0xf0775, + ["md-octahedron"] = 0xf1950, + ["md-octahedron_off"] = 0xf1951, + ["md-odnoklassniki"] = 0xf03c5, + ["md-offer"] = 0xf121b, + ["md-office_building"] = 0xf0991, + ["md-office_building_cog"] = 0xf1949, + ["md-office_building_cog_outline"] = 0xf194a, + ["md-office_building_marker"] = 0xf1520, + ["md-office_building_marker_outline"] = 0xf1521, + ["md-office_building_outline"] = 0xf151f, + ["md-oil"] = 0xf03c7, + ["md-oil_lamp"] = 0xf0f19, + ["md-oil_level"] = 0xf1053, + ["md-oil_temperature"] = 0xf0ff8, + ["md-om"] = 0xf0973, + ["md-omega"] = 0xf03c9, + ["md-one_up"] = 0xf0bad, + ["md-onepassword"] = 0xf0881, + ["md-opacity"] = 0xf05cc, + ["md-open_in_app"] = 0xf03cb, + ["md-open_in_new"] = 0xf03cc, + ["md-open_source_initiative"] = 0xf0bae, + ["md-openid"] = 0xf03cd, + ["md-opera"] = 0xf03ce, + ["md-orbit"] = 0xf0018, + ["md-orbit_variant"] = 0xf15db, + ["md-order_alphabetical_ascending"] = 0xf020d, + ["md-order_alphabetical_descending"] = 0xf0d07, + ["md-order_bool_ascending"] = 0xf02be, + ["md-order_bool_ascending_variant"] = 0xf098f, + ["md-order_bool_descending"] = 0xf1384, + ["md-order_bool_descending_variant"] = 0xf0990, + ["md-order_numeric_ascending"] = 0xf0545, + ["md-order_numeric_descending"] = 0xf0546, + ["md-origin"] = 0xf0b43, + ["md-ornament"] = 0xf03cf, + ["md-ornament_variant"] = 0xf03d0, + ["md-outdoor_lamp"] = 0xf1054, + ["md-overscan"] = 0xf1005, + ["md-owl"] = 0xf03d2, + ["md-pac_man"] = 0xf0baf, + ["md-package"] = 0xf03d3, + ["md-package_down"] = 0xf03d4, + ["md-package_up"] = 0xf03d5, + ["md-package_variant"] = 0xf03d6, + ["md-package_variant_closed"] = 0xf03d7, + ["md-package_variant_closed_minus"] = 0xf19d4, + ["md-package_variant_closed_plus"] = 0xf19d5, + ["md-package_variant_closed_remove"] = 0xf19d6, + ["md-package_variant_minus"] = 0xf19d7, + ["md-package_variant_plus"] = 0xf19d8, + ["md-package_variant_remove"] = 0xf19d9, + ["md-page_first"] = 0xf0600, + ["md-page_last"] = 0xf0601, + ["md-page_layout_body"] = 0xf06fa, + ["md-page_layout_footer"] = 0xf06fb, + ["md-page_layout_header"] = 0xf06fc, + ["md-page_layout_header_footer"] = 0xf0f7f, + ["md-page_layout_sidebar_left"] = 0xf06fd, + ["md-page_layout_sidebar_right"] = 0xf06fe, + ["md-page_next"] = 0xf0bb0, + ["md-page_next_outline"] = 0xf0bb1, + ["md-page_previous"] = 0xf0bb2, + ["md-page_previous_outline"] = 0xf0bb3, + ["md-pail"] = 0xf1417, + ["md-pail_minus"] = 0xf1437, + ["md-pail_minus_outline"] = 0xf143c, + ["md-pail_off"] = 0xf1439, + ["md-pail_off_outline"] = 0xf143e, + ["md-pail_outline"] = 0xf143a, + ["md-pail_plus"] = 0xf1436, + ["md-pail_plus_outline"] = 0xf143b, + ["md-pail_remove"] = 0xf1438, + ["md-pail_remove_outline"] = 0xf143d, + ["md-palette"] = 0xf03d8, + ["md-palette_advanced"] = 0xf03d9, + ["md-palette_outline"] = 0xf0e0c, + ["md-palette_swatch"] = 0xf08b5, + ["md-palette_swatch_outline"] = 0xf135c, + ["md-palette_swatch_variant"] = 0xf195a, + ["md-palm_tree"] = 0xf1055, + ["md-pan"] = 0xf0bb4, + ["md-pan_bottom_left"] = 0xf0bb5, + ["md-pan_bottom_right"] = 0xf0bb6, + ["md-pan_down"] = 0xf0bb7, + ["md-pan_horizontal"] = 0xf0bb8, + ["md-pan_left"] = 0xf0bb9, + ["md-pan_right"] = 0xf0bba, + ["md-pan_top_left"] = 0xf0bbb, + ["md-pan_top_right"] = 0xf0bbc, + ["md-pan_up"] = 0xf0bbd, + ["md-pan_vertical"] = 0xf0bbe, + ["md-panda"] = 0xf03da, + ["md-pandora"] = 0xf03db, + ["md-panorama"] = 0xf03dc, + ["md-panorama_fisheye"] = 0xf03dd, + ["md-panorama_horizontal"] = 0xf1928, + ["md-panorama_horizontal_outline"] = 0xf03de, + ["md-panorama_outline"] = 0xf198c, + ["md-panorama_sphere"] = 0xf198d, + ["md-panorama_sphere_outline"] = 0xf198e, + ["md-panorama_variant"] = 0xf198f, + ["md-panorama_variant_outline"] = 0xf1990, + ["md-panorama_vertical"] = 0xf1929, + ["md-panorama_vertical_outline"] = 0xf03df, + ["md-panorama_wide_angle"] = 0xf195f, + ["md-panorama_wide_angle_outline"] = 0xf03e0, + ["md-paper_cut_vertical"] = 0xf03e1, + ["md-paper_roll"] = 0xf1157, + ["md-paper_roll_outline"] = 0xf1158, + ["md-paperclip"] = 0xf03e2, + ["md-paperclip_check"] = 0xf1ac6, + ["md-paperclip_lock"] = 0xf19da, + ["md-paperclip_minus"] = 0xf1ac7, + ["md-paperclip_off"] = 0xf1ac8, + ["md-paperclip_plus"] = 0xf1ac9, + ["md-paperclip_remove"] = 0xf1aca, + ["md-parachute"] = 0xf0cb4, + ["md-parachute_outline"] = 0xf0cb5, + ["md-paragliding"] = 0xf1745, + ["md-parking"] = 0xf03e3, + ["md-party_popper"] = 0xf1056, + ["md-passport"] = 0xf07e3, + ["md-passport_biometric"] = 0xf0de1, + ["md-pasta"] = 0xf1160, + ["md-patio_heater"] = 0xf0f80, + ["md-patreon"] = 0xf0882, + ["md-pause"] = 0xf03e4, + ["md-pause_circle"] = 0xf03e5, + ["md-pause_circle_outline"] = 0xf03e6, + ["md-pause_octagon"] = 0xf03e7, + ["md-pause_octagon_outline"] = 0xf03e8, + ["md-paw"] = 0xf03e9, + ["md-paw_off"] = 0xf0657, + ["md-paw_off_outline"] = 0xf1676, + ["md-paw_outline"] = 0xf1675, + ["md-peace"] = 0xf0884, + ["md-peanut"] = 0xf0ffc, + ["md-peanut_off"] = 0xf0ffd, + ["md-peanut_off_outline"] = 0xf0fff, + ["md-peanut_outline"] = 0xf0ffe, + ["md-pen"] = 0xf03ea, + ["md-pen_lock"] = 0xf0de2, + ["md-pen_minus"] = 0xf0de3, + ["md-pen_off"] = 0xf0de4, + ["md-pen_plus"] = 0xf0de5, + ["md-pen_remove"] = 0xf0de6, + ["md-pencil"] = 0xf03eb, + ["md-pencil_box"] = 0xf03ec, + ["md-pencil_box_multiple"] = 0xf1144, + ["md-pencil_box_multiple_outline"] = 0xf1145, + ["md-pencil_box_outline"] = 0xf03ed, + ["md-pencil_circle"] = 0xf06ff, + ["md-pencil_circle_outline"] = 0xf0776, + ["md-pencil_lock"] = 0xf03ee, + ["md-pencil_lock_outline"] = 0xf0de7, + ["md-pencil_minus"] = 0xf0de8, + ["md-pencil_minus_outline"] = 0xf0de9, + ["md-pencil_off"] = 0xf03ef, + ["md-pencil_off_outline"] = 0xf0dea, + ["md-pencil_outline"] = 0xf0cb6, + ["md-pencil_plus"] = 0xf0deb, + ["md-pencil_plus_outline"] = 0xf0dec, + ["md-pencil_remove"] = 0xf0ded, + ["md-pencil_remove_outline"] = 0xf0dee, + ["md-pencil_ruler"] = 0xf1353, + ["md-penguin"] = 0xf0ec0, + ["md-pentagon"] = 0xf0701, + ["md-pentagon_outline"] = 0xf0700, + ["md-pentagram"] = 0xf1667, + ["md-percent"] = 0xf03f0, + ["md-percent_box"] = 0xf1a02, + ["md-percent_box_outline"] = 0xf1a03, + ["md-percent_circle"] = 0xf1a04, + ["md-percent_circle_outline"] = 0xf1a05, + ["md-percent_outline"] = 0xf1278, + ["md-periodic_table"] = 0xf08b6, + ["md-perspective_less"] = 0xf0d23, + ["md-perspective_more"] = 0xf0d24, + ["md-ph"] = 0xf17c5, + ["md-phone"] = 0xf03f2, + ["md-phone_alert"] = 0xf0f1a, + ["md-phone_alert_outline"] = 0xf118e, + ["md-phone_bluetooth"] = 0xf03f3, + ["md-phone_bluetooth_outline"] = 0xf118f, + ["md-phone_cancel"] = 0xf10bc, + ["md-phone_cancel_outline"] = 0xf1190, + ["md-phone_check"] = 0xf11a9, + ["md-phone_check_outline"] = 0xf11aa, + ["md-phone_classic"] = 0xf0602, + ["md-phone_classic_off"] = 0xf1279, + ["md-phone_clock"] = 0xf19db, + ["md-phone_dial"] = 0xf1559, + ["md-phone_dial_outline"] = 0xf155a, + ["md-phone_forward"] = 0xf03f4, + ["md-phone_forward_outline"] = 0xf1191, + ["md-phone_hangup"] = 0xf03f5, + ["md-phone_hangup_outline"] = 0xf1192, + ["md-phone_in_talk"] = 0xf03f6, + ["md-phone_in_talk_outline"] = 0xf1182, + ["md-phone_incoming"] = 0xf03f7, + ["md-phone_incoming_outline"] = 0xf1193, + ["md-phone_lock"] = 0xf03f8, + ["md-phone_lock_outline"] = 0xf1194, + ["md-phone_log"] = 0xf03f9, + ["md-phone_log_outline"] = 0xf1195, + ["md-phone_message"] = 0xf1196, + ["md-phone_message_outline"] = 0xf1197, + ["md-phone_minus"] = 0xf0658, + ["md-phone_minus_outline"] = 0xf1198, + ["md-phone_missed"] = 0xf03fa, + ["md-phone_missed_outline"] = 0xf11a5, + ["md-phone_off"] = 0xf0def, + ["md-phone_off_outline"] = 0xf11a6, + ["md-phone_outgoing"] = 0xf03fb, + ["md-phone_outgoing_outline"] = 0xf1199, + ["md-phone_outline"] = 0xf0df0, + ["md-phone_paused"] = 0xf03fc, + ["md-phone_paused_outline"] = 0xf119a, + ["md-phone_plus"] = 0xf0659, + ["md-phone_plus_outline"] = 0xf119b, + ["md-phone_refresh"] = 0xf1993, + ["md-phone_refresh_outline"] = 0xf1994, + ["md-phone_remove"] = 0xf152f, + ["md-phone_remove_outline"] = 0xf1530, + ["md-phone_return"] = 0xf082f, + ["md-phone_return_outline"] = 0xf119c, + ["md-phone_ring"] = 0xf11ab, + ["md-phone_ring_outline"] = 0xf11ac, + ["md-phone_rotate_landscape"] = 0xf0885, + ["md-phone_rotate_portrait"] = 0xf0886, + ["md-phone_settings"] = 0xf03fd, + ["md-phone_settings_outline"] = 0xf119d, + ["md-phone_sync"] = 0xf1995, + ["md-phone_sync_outline"] = 0xf1996, + ["md-phone_voip"] = 0xf03fe, + ["md-pi"] = 0xf03ff, + ["md-pi_box"] = 0xf0400, + ["md-pi_hole"] = 0xf0df1, + ["md-piano"] = 0xf067d, + ["md-piano_off"] = 0xf0698, + ["md-pickaxe"] = 0xf08b7, + ["md-picture_in_picture_bottom_right"] = 0xf0e57, + ["md-picture_in_picture_bottom_right_outline"] = 0xf0e58, + ["md-picture_in_picture_top_right"] = 0xf0e59, + ["md-picture_in_picture_top_right_outline"] = 0xf0e5a, + ["md-pier"] = 0xf0887, + ["md-pier_crane"] = 0xf0888, + ["md-pig"] = 0xf0401, + ["md-pig_variant"] = 0xf1006, + ["md-pig_variant_outline"] = 0xf1678, + ["md-piggy_bank"] = 0xf1007, + ["md-piggy_bank_outline"] = 0xf1679, + ["md-pill"] = 0xf0402, + ["md-pill_off"] = 0xf1a5c, + ["md-pillar"] = 0xf0702, + ["md-pin"] = 0xf0403, + ["md-pin_off"] = 0xf0404, + ["md-pin_off_outline"] = 0xf0930, + ["md-pin_outline"] = 0xf0931, + ["md-pine_tree"] = 0xf0405, + ["md-pine_tree_box"] = 0xf0406, + ["md-pine_tree_fire"] = 0xf141a, + ["md-pinterest"] = 0xf0407, + ["md-pinwheel"] = 0xf0ad5, + ["md-pinwheel_outline"] = 0xf0ad6, + ["md-pipe"] = 0xf07e5, + ["md-pipe_disconnected"] = 0xf07e6, + ["md-pipe_leak"] = 0xf0889, + ["md-pipe_valve"] = 0xf184d, + ["md-pipe_wrench"] = 0xf1354, + ["md-pirate"] = 0xf0a08, + ["md-pistol"] = 0xf0703, + ["md-piston"] = 0xf088a, + ["md-pitchfork"] = 0xf1553, + ["md-pizza"] = 0xf0409, + ["md-play"] = 0xf040a, + ["md-play_box"] = 0xf127a, + ["md-play_box_lock"] = 0xf1a16, + ["md-play_box_lock_open"] = 0xf1a17, + ["md-play_box_lock_open_outline"] = 0xf1a18, + ["md-play_box_lock_outline"] = 0xf1a19, + ["md-play_box_multiple"] = 0xf0d19, + ["md-play_box_multiple_outline"] = 0xf13e6, + ["md-play_box_outline"] = 0xf040b, + ["md-play_circle"] = 0xf040c, + ["md-play_circle_outline"] = 0xf040d, + ["md-play_network"] = 0xf088b, + ["md-play_network_outline"] = 0xf0cb7, + ["md-play_outline"] = 0xf0f1b, + ["md-play_pause"] = 0xf040e, + ["md-play_protected_content"] = 0xf040f, + ["md-play_speed"] = 0xf08ff, + ["md-playlist_check"] = 0xf05c7, + ["md-playlist_edit"] = 0xf0900, + ["md-playlist_minus"] = 0xf0410, + ["md-playlist_music"] = 0xf0cb8, + ["md-playlist_music_outline"] = 0xf0cb9, + ["md-playlist_play"] = 0xf0411, + ["md-playlist_plus"] = 0xf0412, + ["md-playlist_remove"] = 0xf0413, + ["md-playlist_star"] = 0xf0df2, + ["md-plex"] = 0xf06ba, + ["md-pliers"] = 0xf19a4, + ["md-plus"] = 0xf0415, + ["md-plus_box"] = 0xf0416, + ["md-plus_box_multiple"] = 0xf0334, + ["md-plus_box_multiple_outline"] = 0xf1143, + ["md-plus_box_outline"] = 0xf0704, + ["md-plus_circle"] = 0xf0417, + ["md-plus_circle_multiple"] = 0xf034c, + ["md-plus_circle_multiple_outline"] = 0xf0418, + ["md-plus_circle_outline"] = 0xf0419, + ["md-plus_lock"] = 0xf1a5d, + ["md-plus_lock_open"] = 0xf1a5e, + ["md-plus_minus"] = 0xf0992, + ["md-plus_minus_box"] = 0xf0993, + ["md-plus_minus_variant"] = 0xf14c9, + ["md-plus_network"] = 0xf041a, + ["md-plus_network_outline"] = 0xf0cba, + ["md-plus_outline"] = 0xf0705, + ["md-plus_thick"] = 0xf11ec, + ["md-podcast"] = 0xf0994, + ["md-podium"] = 0xf0d25, + ["md-podium_bronze"] = 0xf0d26, + ["md-podium_gold"] = 0xf0d27, + ["md-podium_silver"] = 0xf0d28, + ["md-point_of_sale"] = 0xf0d92, + ["md-pokeball"] = 0xf041d, + ["md-pokemon_go"] = 0xf0a09, + ["md-poker_chip"] = 0xf0830, + ["md-polaroid"] = 0xf041e, + ["md-police_badge"] = 0xf1167, + ["md-police_badge_outline"] = 0xf1168, + ["md-police_station"] = 0xf1839, + ["md-poll"] = 0xf041f, + ["md-polo"] = 0xf14c3, + ["md-polymer"] = 0xf0421, + ["md-pool"] = 0xf0606, + ["md-pool_thermometer"] = 0xf1a5f, + ["md-popcorn"] = 0xf0422, + ["md-post"] = 0xf1008, + ["md-post_lamp"] = 0xf1a60, + ["md-post_outline"] = 0xf1009, + ["md-postage_stamp"] = 0xf0cbb, + ["md-pot"] = 0xf02e5, + ["md-pot_mix"] = 0xf065b, + ["md-pot_mix_outline"] = 0xf0677, + ["md-pot_outline"] = 0xf02ff, + ["md-pot_steam"] = 0xf065a, + ["md-pot_steam_outline"] = 0xf0326, + ["md-pound"] = 0xf0423, + ["md-pound_box"] = 0xf0424, + ["md-pound_box_outline"] = 0xf117f, + ["md-power"] = 0xf0425, + ["md-power_cycle"] = 0xf0901, + ["md-power_off"] = 0xf0902, + ["md-power_on"] = 0xf0903, + ["md-power_plug"] = 0xf06a5, + ["md-power_plug_off"] = 0xf06a6, + ["md-power_plug_off_outline"] = 0xf1424, + ["md-power_plug_outline"] = 0xf1425, + ["md-power_settings"] = 0xf0426, + ["md-power_sleep"] = 0xf0904, + ["md-power_socket"] = 0xf0427, + ["md-power_socket_au"] = 0xf0905, + ["md-power_socket_ch"] = 0xf0fb3, + ["md-power_socket_de"] = 0xf1107, + ["md-power_socket_eu"] = 0xf07e7, + ["md-power_socket_fr"] = 0xf1108, + ["md-power_socket_it"] = 0xf14ff, + ["md-power_socket_jp"] = 0xf1109, + ["md-power_socket_uk"] = 0xf07e8, + ["md-power_socket_us"] = 0xf07e9, + ["md-power_standby"] = 0xf0906, + ["md-powershell"] = 0xf0a0a, + ["md-prescription"] = 0xf0706, + ["md-presentation"] = 0xf0428, + ["md-presentation_play"] = 0xf0429, + ["md-pretzel"] = 0xf1562, + ["md-printer"] = 0xf042a, + ["md-printer_3d"] = 0xf042b, + ["md-printer_3d_nozzle"] = 0xf0e5b, + ["md-printer_3d_nozzle_alert"] = 0xf11c0, + ["md-printer_3d_nozzle_alert_outline"] = 0xf11c1, + ["md-printer_3d_nozzle_heat"] = 0xf18b8, + ["md-printer_3d_nozzle_heat_outline"] = 0xf18b9, + ["md-printer_3d_nozzle_outline"] = 0xf0e5c, + ["md-printer_alert"] = 0xf042c, + ["md-printer_check"] = 0xf1146, + ["md-printer_eye"] = 0xf1458, + ["md-printer_off"] = 0xf0e5d, + ["md-printer_off_outline"] = 0xf1785, + ["md-printer_outline"] = 0xf1786, + ["md-printer_pos"] = 0xf1057, + ["md-printer_search"] = 0xf1457, + ["md-printer_settings"] = 0xf0707, + ["md-printer_wireless"] = 0xf0a0b, + ["md-priority_high"] = 0xf0603, + ["md-priority_low"] = 0xf0604, + ["md-professional_hexagon"] = 0xf042d, + ["md-progress_alert"] = 0xf0cbc, + ["md-progress_check"] = 0xf0995, + ["md-progress_clock"] = 0xf0996, + ["md-progress_close"] = 0xf110a, + ["md-progress_download"] = 0xf0997, + ["md-progress_pencil"] = 0xf1787, + ["md-progress_question"] = 0xf1522, + ["md-progress_star"] = 0xf1788, + ["md-progress_upload"] = 0xf0998, + ["md-progress_wrench"] = 0xf0cbd, + ["md-projector"] = 0xf042e, + ["md-projector_off"] = 0xf1a23, + ["md-projector_screen"] = 0xf042f, + ["md-projector_screen_off"] = 0xf180d, + ["md-projector_screen_off_outline"] = 0xf180e, + ["md-projector_screen_outline"] = 0xf1724, + ["md-projector_screen_variant"] = 0xf180f, + ["md-projector_screen_variant_off"] = 0xf1810, + ["md-projector_screen_variant_off_outline"] = 0xf1811, + ["md-projector_screen_variant_outline"] = 0xf1812, + ["md-propane_tank"] = 0xf1357, + ["md-propane_tank_outline"] = 0xf1358, + ["md-protocol"] = 0xf0fd8, + ["md-publish"] = 0xf06a7, + ["md-publish_off"] = 0xf1945, + ["md-pulse"] = 0xf0430, + ["md-pump"] = 0xf1402, + ["md-pumpkin"] = 0xf0bbf, + ["md-purse"] = 0xf0f1c, + ["md-purse_outline"] = 0xf0f1d, + ["md-puzzle"] = 0xf0431, + ["md-puzzle_check"] = 0xf1426, + ["md-puzzle_check_outline"] = 0xf1427, + ["md-puzzle_edit"] = 0xf14d3, + ["md-puzzle_edit_outline"] = 0xf14d9, + ["md-puzzle_heart"] = 0xf14d4, + ["md-puzzle_heart_outline"] = 0xf14da, + ["md-puzzle_minus"] = 0xf14d1, + ["md-puzzle_minus_outline"] = 0xf14d7, + ["md-puzzle_outline"] = 0xf0a66, + ["md-puzzle_plus"] = 0xf14d0, + ["md-puzzle_plus_outline"] = 0xf14d6, + ["md-puzzle_remove"] = 0xf14d2, + ["md-puzzle_remove_outline"] = 0xf14d8, + ["md-puzzle_star"] = 0xf14d5, + ["md-puzzle_star_outline"] = 0xf14db, + ["md-pyramid"] = 0xf1952, + ["md-pyramid_off"] = 0xf1953, + ["md-qi"] = 0xf0999, + ["md-qqchat"] = 0xf0605, + ["md-qrcode"] = 0xf0432, + ["md-qrcode_edit"] = 0xf08b8, + ["md-qrcode_minus"] = 0xf118c, + ["md-qrcode_plus"] = 0xf118b, + ["md-qrcode_remove"] = 0xf118d, + ["md-qrcode_scan"] = 0xf0433, + ["md-quadcopter"] = 0xf0434, + ["md-quality_high"] = 0xf0435, + ["md-quality_low"] = 0xf0a0c, + ["md-quality_medium"] = 0xf0a0d, + ["md-quora"] = 0xf0d29, + ["md-rabbit"] = 0xf0907, + ["md-rabbit_variant"] = 0xf1a61, + ["md-rabbit_variant_outline"] = 0xf1a62, + ["md-racing_helmet"] = 0xf0d93, + ["md-racquetball"] = 0xf0d94, + ["md-radar"] = 0xf0437, + ["md-radiator"] = 0xf0438, + ["md-radiator_disabled"] = 0xf0ad7, + ["md-radiator_off"] = 0xf0ad8, + ["md-radio"] = 0xf0439, + ["md-radio_am"] = 0xf0cbe, + ["md-radio_fm"] = 0xf0cbf, + ["md-radio_handheld"] = 0xf043a, + ["md-radio_off"] = 0xf121c, + ["md-radio_tower"] = 0xf043b, + ["md-radioactive"] = 0xf043c, + ["md-radioactive_circle"] = 0xf185d, + ["md-radioactive_circle_outline"] = 0xf185e, + ["md-radioactive_off"] = 0xf0ec1, + ["md-radiobox_marked"] = 0xf043e, + ["md-radiology_box"] = 0xf14c5, + ["md-radiology_box_outline"] = 0xf14c6, + ["md-radius"] = 0xf0cc0, + ["md-radius_outline"] = 0xf0cc1, + ["md-railroad_light"] = 0xf0f1e, + ["md-rake"] = 0xf1544, + ["md-raspberry_pi"] = 0xf043f, + ["md-raw"] = 0xf1a0f, + ["md-raw_off"] = 0xf1a10, + ["md-ray_end"] = 0xf0440, + ["md-ray_end_arrow"] = 0xf0441, + ["md-ray_start"] = 0xf0442, + ["md-ray_start_arrow"] = 0xf0443, + ["md-ray_start_end"] = 0xf0444, + ["md-ray_start_vertex_end"] = 0xf15d8, + ["md-ray_vertex"] = 0xf0445, + ["md-razor_double_edge"] = 0xf1997, + ["md-razor_single_edge"] = 0xf1998, + ["md-react"] = 0xf0708, + ["md-read"] = 0xf0447, + ["md-receipt"] = 0xf0449, + ["md-receipt_outline"] = 0xf19dc, + ["md-receipt_text_check"] = 0xf1a63, + ["md-receipt_text_check_outline"] = 0xf1a64, + ["md-receipt_text_minus"] = 0xf1a65, + ["md-receipt_text_minus_outline"] = 0xf1a66, + ["md-receipt_text_plus"] = 0xf1a67, + ["md-receipt_text_plus_outline"] = 0xf1a68, + ["md-receipt_text_remove"] = 0xf1a69, + ["md-receipt_text_remove_outline"] = 0xf1a6a, + ["md-record"] = 0xf044a, + ["md-record_circle"] = 0xf0ec2, + ["md-record_circle_outline"] = 0xf0ec3, + ["md-record_player"] = 0xf099a, + ["md-record_rec"] = 0xf044b, + ["md-rectangle"] = 0xf0e5e, + ["md-rectangle_outline"] = 0xf0e5f, + ["md-recycle"] = 0xf044c, + ["md-recycle_variant"] = 0xf139d, + ["md-reddit"] = 0xf044d, + ["md-redhat"] = 0xf111b, + ["md-redo"] = 0xf044e, + ["md-redo_variant"] = 0xf044f, + ["md-reflect_horizontal"] = 0xf0a0e, + ["md-reflect_vertical"] = 0xf0a0f, + ["md-refresh"] = 0xf0450, + ["md-refresh_auto"] = 0xf18f2, + ["md-refresh_circle"] = 0xf1377, + ["md-regex"] = 0xf0451, + ["md-registered_trademark"] = 0xf0a67, + ["md-reiterate"] = 0xf1588, + ["md-relation_many_to_many"] = 0xf1496, + ["md-relation_many_to_one"] = 0xf1497, + ["md-relation_many_to_one_or_many"] = 0xf1498, + ["md-relation_many_to_only_one"] = 0xf1499, + ["md-relation_many_to_zero_or_many"] = 0xf149a, + ["md-relation_many_to_zero_or_one"] = 0xf149b, + ["md-relation_one_or_many_to_many"] = 0xf149c, + ["md-relation_one_or_many_to_one"] = 0xf149d, + ["md-relation_one_or_many_to_one_or_many"] = 0xf149e, + ["md-relation_one_or_many_to_only_one"] = 0xf149f, + ["md-relation_one_or_many_to_zero_or_many"] = 0xf14a0, + ["md-relation_one_or_many_to_zero_or_one"] = 0xf14a1, + ["md-relation_one_to_many"] = 0xf14a2, + ["md-relation_one_to_one"] = 0xf14a3, + ["md-relation_one_to_one_or_many"] = 0xf14a4, + ["md-relation_one_to_only_one"] = 0xf14a5, + ["md-relation_one_to_zero_or_many"] = 0xf14a6, + ["md-relation_one_to_zero_or_one"] = 0xf14a7, + ["md-relation_only_one_to_many"] = 0xf14a8, + ["md-relation_only_one_to_one"] = 0xf14a9, + ["md-relation_only_one_to_one_or_many"] = 0xf14aa, + ["md-relation_only_one_to_only_one"] = 0xf14ab, + ["md-relation_only_one_to_zero_or_many"] = 0xf14ac, + ["md-relation_only_one_to_zero_or_one"] = 0xf14ad, + ["md-relation_zero_or_many_to_many"] = 0xf14ae, + ["md-relation_zero_or_many_to_one"] = 0xf14af, + ["md-relation_zero_or_many_to_one_or_many"] = 0xf14b0, + ["md-relation_zero_or_many_to_only_one"] = 0xf14b1, + ["md-relation_zero_or_many_to_zero_or_many"] = 0xf14b2, + ["md-relation_zero_or_many_to_zero_or_one"] = 0xf14b3, + ["md-relation_zero_or_one_to_many"] = 0xf14b4, + ["md-relation_zero_or_one_to_one"] = 0xf14b5, + ["md-relation_zero_or_one_to_one_or_many"] = 0xf14b6, + ["md-relation_zero_or_one_to_only_one"] = 0xf14b7, + ["md-relation_zero_or_one_to_zero_or_many"] = 0xf14b8, + ["md-relation_zero_or_one_to_zero_or_one"] = 0xf14b9, + ["md-relative_scale"] = 0xf0452, + ["md-reload"] = 0xf0453, + ["md-reload_alert"] = 0xf110b, + ["md-reminder"] = 0xf088c, + ["md-remote"] = 0xf0454, + ["md-remote_desktop"] = 0xf08b9, + ["md-remote_off"] = 0xf0ec4, + ["md-remote_tv"] = 0xf0ec5, + ["md-remote_tv_off"] = 0xf0ec6, + ["md-rename_box"] = 0xf0455, + ["md-reorder_horizontal"] = 0xf0688, + ["md-reorder_vertical"] = 0xf0689, + ["md-repeat"] = 0xf0456, + ["md-repeat_off"] = 0xf0457, + ["md-repeat_once"] = 0xf0458, + ["md-repeat_variant"] = 0xf0547, + ["md-replay"] = 0xf0459, + ["md-reply"] = 0xf045a, + ["md-reply_all"] = 0xf045b, + ["md-reply_all_outline"] = 0xf0f1f, + ["md-reply_circle"] = 0xf11ae, + ["md-reply_outline"] = 0xf0f20, + ["md-reproduction"] = 0xf045c, + ["md-resistor"] = 0xf0b44, + ["md-resistor_nodes"] = 0xf0b45, + ["md-resize"] = 0xf0a68, + ["md-resize_bottom_right"] = 0xf045d, + ["md-responsive"] = 0xf045e, + ["md-restart"] = 0xf0709, + ["md-restart_alert"] = 0xf110c, + ["md-restart_off"] = 0xf0d95, + ["md-restore"] = 0xf099b, + ["md-restore_alert"] = 0xf110d, + ["md-rewind"] = 0xf045f, + ["md-rewind_10"] = 0xf0d2a, + ["md-rewind_15"] = 0xf1946, + ["md-rewind_30"] = 0xf0d96, + ["md-rewind_5"] = 0xf11f9, + ["md-rewind_60"] = 0xf160c, + ["md-rewind_outline"] = 0xf070a, + ["md-rhombus"] = 0xf070b, + ["md-rhombus_medium"] = 0xf0a10, + ["md-rhombus_medium_outline"] = 0xf14dc, + ["md-rhombus_outline"] = 0xf070c, + ["md-rhombus_split"] = 0xf0a11, + ["md-rhombus_split_outline"] = 0xf14dd, + ["md-ribbon"] = 0xf0460, + ["md-rice"] = 0xf07ea, + ["md-rickshaw"] = 0xf15bb, + ["md-rickshaw_electric"] = 0xf15bc, + ["md-ring"] = 0xf07eb, + ["md-rivet"] = 0xf0e60, + ["md-road"] = 0xf0461, + ["md-road_variant"] = 0xf0462, + ["md-robber"] = 0xf1058, + ["md-robot"] = 0xf06a9, + ["md-robot_angry"] = 0xf169d, + ["md-robot_angry_outline"] = 0xf169e, + ["md-robot_confused"] = 0xf169f, + ["md-robot_confused_outline"] = 0xf16a0, + ["md-robot_dead"] = 0xf16a1, + ["md-robot_dead_outline"] = 0xf16a2, + ["md-robot_excited"] = 0xf16a3, + ["md-robot_excited_outline"] = 0xf16a4, + ["md-robot_happy"] = 0xf1719, + ["md-robot_happy_outline"] = 0xf171a, + ["md-robot_industrial"] = 0xf0b46, + ["md-robot_industrial_outline"] = 0xf1a1a, + ["md-robot_love"] = 0xf16a5, + ["md-robot_love_outline"] = 0xf16a6, + ["md-robot_mower"] = 0xf11f7, + ["md-robot_mower_outline"] = 0xf11f3, + ["md-robot_off"] = 0xf16a7, + ["md-robot_off_outline"] = 0xf167b, + ["md-robot_outline"] = 0xf167a, + ["md-robot_vacuum"] = 0xf070d, + ["md-robot_vacuum_variant"] = 0xf0908, + ["md-rocket"] = 0xf0463, + ["md-rocket_launch"] = 0xf14de, + ["md-rocket_launch_outline"] = 0xf14df, + ["md-rocket_outline"] = 0xf13af, + ["md-rodent"] = 0xf1327, + ["md-roller_shade"] = 0xf1a6b, + ["md-roller_shade_closed"] = 0xf1a6c, + ["md-roller_skate"] = 0xf0d2b, + ["md-roller_skate_off"] = 0xf0145, + ["md-rollerblade"] = 0xf0d2c, + ["md-rollerblade_off"] = 0xf002e, + ["md-rollupjs"] = 0xf0bc0, + ["md-rolodex"] = 0xf1ab9, + ["md-rolodex_outline"] = 0xf1aba, + ["md-roman_numeral_2"] = 0xf1089, + ["md-roman_numeral_3"] = 0xf108a, + ["md-roman_numeral_4"] = 0xf108b, + ["md-roman_numeral_6"] = 0xf108d, + ["md-roman_numeral_7"] = 0xf108e, + ["md-roman_numeral_8"] = 0xf108f, + ["md-roman_numeral_9"] = 0xf1090, + ["md-room_service"] = 0xf088d, + ["md-room_service_outline"] = 0xf0d97, + ["md-rotate_360"] = 0xf1999, + ["md-rotate_3d"] = 0xf0ec7, + ["md-rotate_3d_variant"] = 0xf0464, + ["md-rotate_left"] = 0xf0465, + ["md-rotate_left_variant"] = 0xf0466, + ["md-rotate_orbit"] = 0xf0d98, + ["md-rotate_right"] = 0xf0467, + ["md-rotate_right_variant"] = 0xf0468, + ["md-rounded_corner"] = 0xf0607, + ["md-router"] = 0xf11e2, + ["md-router_network"] = 0xf1087, + ["md-router_wireless"] = 0xf0469, + ["md-router_wireless_off"] = 0xf15a3, + ["md-router_wireless_settings"] = 0xf0a69, + ["md-routes"] = 0xf046a, + ["md-routes_clock"] = 0xf1059, + ["md-rowing"] = 0xf0608, + ["md-rss"] = 0xf046b, + ["md-rss_box"] = 0xf046c, + ["md-rss_off"] = 0xf0f21, + ["md-rug"] = 0xf1475, + ["md-rugby"] = 0xf0d99, + ["md-ruler"] = 0xf046d, + ["md-ruler_square"] = 0xf0cc2, + ["md-ruler_square_compass"] = 0xf0ebe, + ["md-run"] = 0xf070e, + ["md-run_fast"] = 0xf046e, + ["md-rv_truck"] = 0xf11d4, + ["md-sack"] = 0xf0d2e, + ["md-sack_percent"] = 0xf0d2f, + ["md-safe"] = 0xf0a6a, + ["md-safe_square"] = 0xf127c, + ["md-safe_square_outline"] = 0xf127d, + ["md-safety_goggles"] = 0xf0d30, + ["md-sail_boat"] = 0xf0ec8, + ["md-sail_boat_sink"] = 0xf1aef, + ["md-sale"] = 0xf046f, + ["md-sale_outline"] = 0xf1a06, + ["md-salesforce"] = 0xf088e, + ["md-sass"] = 0xf07ec, + ["md-satellite"] = 0xf0470, + ["md-satellite_uplink"] = 0xf0909, + ["md-satellite_variant"] = 0xf0471, + ["md-sausage"] = 0xf08ba, + ["md-sausage_off"] = 0xf1789, + ["md-saw_blade"] = 0xf0e61, + ["md-sawtooth_wave"] = 0xf147a, + ["md-saxophone"] = 0xf0609, + ["md-scale"] = 0xf0472, + ["md-scale_balance"] = 0xf05d1, + ["md-scale_bathroom"] = 0xf0473, + ["md-scale_off"] = 0xf105a, + ["md-scale_unbalanced"] = 0xf19b8, + ["md-scan_helper"] = 0xf13d8, + ["md-scanner"] = 0xf06ab, + ["md-scanner_off"] = 0xf090a, + ["md-scatter_plot"] = 0xf0ec9, + ["md-scatter_plot_outline"] = 0xf0eca, + ["md-scent"] = 0xf1958, + ["md-scent_off"] = 0xf1959, + ["md-school"] = 0xf0474, + ["md-school_outline"] = 0xf1180, + ["md-scissors_cutting"] = 0xf0a6b, + ["md-scooter"] = 0xf15bd, + ["md-scooter_electric"] = 0xf15be, + ["md-scoreboard"] = 0xf127e, + ["md-scoreboard_outline"] = 0xf127f, + ["md-screen_rotation"] = 0xf0475, + ["md-screen_rotation_lock"] = 0xf0478, + ["md-screw_flat_top"] = 0xf0df3, + ["md-screw_lag"] = 0xf0df4, + ["md-screw_machine_flat_top"] = 0xf0df5, + ["md-screw_machine_round_top"] = 0xf0df6, + ["md-screw_round_top"] = 0xf0df7, + ["md-screwdriver"] = 0xf0476, + ["md-script"] = 0xf0bc1, + ["md-script_outline"] = 0xf0477, + ["md-script_text"] = 0xf0bc2, + ["md-script_text_key"] = 0xf1725, + ["md-script_text_key_outline"] = 0xf1726, + ["md-script_text_outline"] = 0xf0bc3, + ["md-script_text_play"] = 0xf1727, + ["md-script_text_play_outline"] = 0xf1728, + ["md-sd"] = 0xf0479, + ["md-seal"] = 0xf047a, + ["md-seal_variant"] = 0xf0fd9, + ["md-search_web"] = 0xf070f, + ["md-seat"] = 0xf0cc3, + ["md-seat_flat"] = 0xf047b, + ["md-seat_flat_angled"] = 0xf047c, + ["md-seat_individual_suite"] = 0xf047d, + ["md-seat_legroom_extra"] = 0xf047e, + ["md-seat_legroom_normal"] = 0xf047f, + ["md-seat_legroom_reduced"] = 0xf0480, + ["md-seat_outline"] = 0xf0cc4, + ["md-seat_passenger"] = 0xf1249, + ["md-seat_recline_extra"] = 0xf0481, + ["md-seat_recline_normal"] = 0xf0482, + ["md-seatbelt"] = 0xf0cc5, + ["md-security"] = 0xf0483, + ["md-security_network"] = 0xf0484, + ["md-seed"] = 0xf0e62, + ["md-seed_off"] = 0xf13fd, + ["md-seed_off_outline"] = 0xf13fe, + ["md-seed_outline"] = 0xf0e63, + ["md-seed_plus"] = 0xf1a6d, + ["md-seed_plus_outline"] = 0xf1a6e, + ["md-seesaw"] = 0xf15a4, + ["md-segment"] = 0xf0ecb, + ["md-select"] = 0xf0485, + ["md-select_all"] = 0xf0486, + ["md-select_color"] = 0xf0d31, + ["md-select_compare"] = 0xf0ad9, + ["md-select_drag"] = 0xf0a6c, + ["md-select_group"] = 0xf0f82, + ["md-select_inverse"] = 0xf0487, + ["md-select_marker"] = 0xf1280, + ["md-select_multiple"] = 0xf1281, + ["md-select_multiple_marker"] = 0xf1282, + ["md-select_off"] = 0xf0488, + ["md-select_place"] = 0xf0fda, + ["md-select_remove"] = 0xf17c1, + ["md-select_search"] = 0xf1204, + ["md-selection"] = 0xf0489, + ["md-selection_drag"] = 0xf0a6d, + ["md-selection_ellipse"] = 0xf0d32, + ["md-selection_ellipse_arrow_inside"] = 0xf0f22, + ["md-selection_ellipse_remove"] = 0xf17c2, + ["md-selection_marker"] = 0xf1283, + ["md-selection_multiple"] = 0xf1285, + ["md-selection_multiple_marker"] = 0xf1284, + ["md-selection_off"] = 0xf0777, + ["md-selection_remove"] = 0xf17c3, + ["md-selection_search"] = 0xf1205, + ["md-semantic_web"] = 0xf1316, + ["md-send"] = 0xf048a, + ["md-send_check"] = 0xf1161, + ["md-send_check_outline"] = 0xf1162, + ["md-send_circle"] = 0xf0df8, + ["md-send_circle_outline"] = 0xf0df9, + ["md-send_clock"] = 0xf1163, + ["md-send_clock_outline"] = 0xf1164, + ["md-send_lock"] = 0xf07ed, + ["md-send_lock_outline"] = 0xf1166, + ["md-send_outline"] = 0xf1165, + ["md-serial_port"] = 0xf065c, + ["md-server"] = 0xf048b, + ["md-server_minus"] = 0xf048c, + ["md-server_network"] = 0xf048d, + ["md-server_network_off"] = 0xf048e, + ["md-server_off"] = 0xf048f, + ["md-server_plus"] = 0xf0490, + ["md-server_remove"] = 0xf0491, + ["md-server_security"] = 0xf0492, + ["md-set_all"] = 0xf0778, + ["md-set_center"] = 0xf0779, + ["md-set_center_right"] = 0xf077a, + ["md-set_left"] = 0xf077b, + ["md-set_left_center"] = 0xf077c, + ["md-set_left_right"] = 0xf077d, + ["md-set_merge"] = 0xf14e0, + ["md-set_none"] = 0xf077e, + ["md-set_right"] = 0xf077f, + ["md-set_split"] = 0xf14e1, + ["md-set_square"] = 0xf145d, + ["md-set_top_box"] = 0xf099f, + ["md-settings_helper"] = 0xf0a6e, + ["md-shaker"] = 0xf110e, + ["md-shaker_outline"] = 0xf110f, + ["md-shape"] = 0xf0831, + ["md-shape_circle_plus"] = 0xf065d, + ["md-shape_outline"] = 0xf0832, + ["md-shape_oval_plus"] = 0xf11fa, + ["md-shape_plus"] = 0xf0495, + ["md-shape_polygon_plus"] = 0xf065e, + ["md-shape_rectangle_plus"] = 0xf065f, + ["md-shape_square_plus"] = 0xf0660, + ["md-shape_square_rounded_plus"] = 0xf14fa, + ["md-share"] = 0xf0496, + ["md-share_all"] = 0xf11f4, + ["md-share_all_outline"] = 0xf11f5, + ["md-share_circle"] = 0xf11ad, + ["md-share_off"] = 0xf0f23, + ["md-share_off_outline"] = 0xf0f24, + ["md-share_outline"] = 0xf0932, + ["md-share_variant"] = 0xf0497, + ["md-share_variant_outline"] = 0xf1514, + ["md-shark"] = 0xf18ba, + ["md-shark_fin"] = 0xf1673, + ["md-shark_fin_outline"] = 0xf1674, + ["md-shark_off"] = 0xf18bb, + ["md-sheep"] = 0xf0cc6, + ["md-shield"] = 0xf0498, + ["md-shield_account"] = 0xf088f, + ["md-shield_account_outline"] = 0xf0a12, + ["md-shield_account_variant"] = 0xf15a7, + ["md-shield_account_variant_outline"] = 0xf15a8, + ["md-shield_airplane"] = 0xf06bb, + ["md-shield_airplane_outline"] = 0xf0cc7, + ["md-shield_alert"] = 0xf0ecc, + ["md-shield_alert_outline"] = 0xf0ecd, + ["md-shield_bug"] = 0xf13da, + ["md-shield_bug_outline"] = 0xf13db, + ["md-shield_car"] = 0xf0f83, + ["md-shield_check"] = 0xf0565, + ["md-shield_check_outline"] = 0xf0cc8, + ["md-shield_cross"] = 0xf0cc9, + ["md-shield_cross_outline"] = 0xf0cca, + ["md-shield_crown"] = 0xf18bc, + ["md-shield_crown_outline"] = 0xf18bd, + ["md-shield_edit"] = 0xf11a0, + ["md-shield_edit_outline"] = 0xf11a1, + ["md-shield_half"] = 0xf1360, + ["md-shield_half_full"] = 0xf0780, + ["md-shield_home"] = 0xf068a, + ["md-shield_home_outline"] = 0xf0ccb, + ["md-shield_key"] = 0xf0bc4, + ["md-shield_key_outline"] = 0xf0bc5, + ["md-shield_link_variant"] = 0xf0d33, + ["md-shield_link_variant_outline"] = 0xf0d34, + ["md-shield_lock"] = 0xf099d, + ["md-shield_lock_open"] = 0xf199a, + ["md-shield_lock_open_outline"] = 0xf199b, + ["md-shield_lock_outline"] = 0xf0ccc, + ["md-shield_moon"] = 0xf1828, + ["md-shield_moon_outline"] = 0xf1829, + ["md-shield_off"] = 0xf099e, + ["md-shield_off_outline"] = 0xf099c, + ["md-shield_outline"] = 0xf0499, + ["md-shield_plus"] = 0xf0ada, + ["md-shield_plus_outline"] = 0xf0adb, + ["md-shield_refresh"] = 0xf00aa, + ["md-shield_refresh_outline"] = 0xf01e0, + ["md-shield_remove"] = 0xf0adc, + ["md-shield_remove_outline"] = 0xf0add, + ["md-shield_search"] = 0xf0d9a, + ["md-shield_star"] = 0xf113b, + ["md-shield_star_outline"] = 0xf113c, + ["md-shield_sun"] = 0xf105d, + ["md-shield_sun_outline"] = 0xf105e, + ["md-shield_sword"] = 0xf18be, + ["md-shield_sword_outline"] = 0xf18bf, + ["md-shield_sync"] = 0xf11a2, + ["md-shield_sync_outline"] = 0xf11a3, + ["md-shimmer"] = 0xf1545, + ["md-ship_wheel"] = 0xf0833, + ["md-shipping_pallet"] = 0xf184e, + ["md-shoe_ballet"] = 0xf15ca, + ["md-shoe_cleat"] = 0xf15c7, + ["md-shoe_formal"] = 0xf0b47, + ["md-shoe_heel"] = 0xf0b48, + ["md-shoe_print"] = 0xf0dfa, + ["md-shoe_sneaker"] = 0xf15c8, + ["md-shopping"] = 0xf049a, + ["md-shopping_music"] = 0xf049b, + ["md-shopping_outline"] = 0xf11d5, + ["md-shopping_search"] = 0xf0f84, + ["md-shopping_search_outline"] = 0xf1a6f, + ["md-shore"] = 0xf14f9, + ["md-shovel"] = 0xf0710, + ["md-shovel_off"] = 0xf0711, + ["md-shower"] = 0xf09a0, + ["md-shower_head"] = 0xf09a1, + ["md-shredder"] = 0xf049c, + ["md-shuffle"] = 0xf049d, + ["md-shuffle_disabled"] = 0xf049e, + ["md-shuffle_variant"] = 0xf049f, + ["md-shuriken"] = 0xf137f, + ["md-sickle"] = 0xf18c0, + ["md-sigma"] = 0xf04a0, + ["md-sigma_lower"] = 0xf062b, + ["md-sign_caution"] = 0xf04a1, + ["md-sign_direction"] = 0xf0781, + ["md-sign_direction_minus"] = 0xf1000, + ["md-sign_direction_plus"] = 0xf0fdc, + ["md-sign_direction_remove"] = 0xf0fdd, + ["md-sign_pole"] = 0xf14f8, + ["md-sign_real_estate"] = 0xf1118, + ["md-sign_text"] = 0xf0782, + ["md-signal"] = 0xf04a2, + ["md-signal_2g"] = 0xf0712, + ["md-signal_3g"] = 0xf0713, + ["md-signal_4g"] = 0xf0714, + ["md-signal_5g"] = 0xf0a6f, + ["md-signal_cellular_1"] = 0xf08bc, + ["md-signal_cellular_2"] = 0xf08bd, + ["md-signal_cellular_3"] = 0xf08be, + ["md-signal_cellular_outline"] = 0xf08bf, + ["md-signal_distance_variant"] = 0xf0e64, + ["md-signal_hspa"] = 0xf0715, + ["md-signal_hspa_plus"] = 0xf0716, + ["md-signal_off"] = 0xf0783, + ["md-signal_variant"] = 0xf060a, + ["md-signature"] = 0xf0dfb, + ["md-signature_freehand"] = 0xf0dfc, + ["md-signature_image"] = 0xf0dfd, + ["md-signature_text"] = 0xf0dfe, + ["md-silo"] = 0xf0b49, + ["md-silverware"] = 0xf04a3, + ["md-silverware_clean"] = 0xf0fde, + ["md-silverware_fork"] = 0xf04a4, + ["md-silverware_fork_knife"] = 0xf0a70, + ["md-silverware_spoon"] = 0xf04a5, + ["md-silverware_variant"] = 0xf04a6, + ["md-sim"] = 0xf04a7, + ["md-sim_alert"] = 0xf04a8, + ["md-sim_alert_outline"] = 0xf15d3, + ["md-sim_off"] = 0xf04a9, + ["md-sim_off_outline"] = 0xf15d4, + ["md-sim_outline"] = 0xf15d5, + ["md-simple_icons"] = 0xf131d, + ["md-sina_weibo"] = 0xf0adf, + ["md-sine_wave"] = 0xf095b, + ["md-sitemap"] = 0xf04aa, + ["md-sitemap_outline"] = 0xf199c, + ["md-size_m"] = 0xf13a5, + ["md-size_s"] = 0xf13a4, + ["md-size_xl"] = 0xf13a7, + ["md-size_xs"] = 0xf13a3, + ["md-size_xxl"] = 0xf13a8, + ["md-size_xxs"] = 0xf13a2, + ["md-size_xxxl"] = 0xf13a9, + ["md-skate"] = 0xf0d35, + ["md-skate_off"] = 0xf0699, + ["md-skateboard"] = 0xf14c2, + ["md-skateboarding"] = 0xf0501, + ["md-skew_less"] = 0xf0d36, + ["md-skew_more"] = 0xf0d37, + ["md-ski"] = 0xf1304, + ["md-ski_cross_country"] = 0xf1305, + ["md-ski_water"] = 0xf1306, + ["md-skip_backward"] = 0xf04ab, + ["md-skip_backward_outline"] = 0xf0f25, + ["md-skip_forward"] = 0xf04ac, + ["md-skip_forward_outline"] = 0xf0f26, + ["md-skip_next"] = 0xf04ad, + ["md-skip_next_circle"] = 0xf0661, + ["md-skip_next_circle_outline"] = 0xf0662, + ["md-skip_next_outline"] = 0xf0f27, + ["md-skip_previous"] = 0xf04ae, + ["md-skip_previous_circle"] = 0xf0663, + ["md-skip_previous_circle_outline"] = 0xf0664, + ["md-skip_previous_outline"] = 0xf0f28, + ["md-skull"] = 0xf068c, + ["md-skull_crossbones"] = 0xf0bc6, + ["md-skull_crossbones_outline"] = 0xf0bc7, + ["md-skull_outline"] = 0xf0bc8, + ["md-skull_scan"] = 0xf14c7, + ["md-skull_scan_outline"] = 0xf14c8, + ["md-skype"] = 0xf04af, + ["md-skype_business"] = 0xf04b0, + ["md-slack"] = 0xf04b1, + ["md-slash_forward"] = 0xf0fdf, + ["md-slash_forward_box"] = 0xf0fe0, + ["md-sledding"] = 0xf041b, + ["md-sleep"] = 0xf04b2, + ["md-sleep_off"] = 0xf04b3, + ["md-slide"] = 0xf15a5, + ["md-slope_downhill"] = 0xf0dff, + ["md-slope_uphill"] = 0xf0e00, + ["md-slot_machine"] = 0xf1114, + ["md-slot_machine_outline"] = 0xf1115, + ["md-smart_card"] = 0xf10bd, + ["md-smart_card_off"] = 0xf18f7, + ["md-smart_card_off_outline"] = 0xf18f8, + ["md-smart_card_outline"] = 0xf10be, + ["md-smart_card_reader"] = 0xf10bf, + ["md-smart_card_reader_outline"] = 0xf10c0, + ["md-smog"] = 0xf0a71, + ["md-smoke"] = 0xf1799, + ["md-smoke_detector"] = 0xf0392, + ["md-smoke_detector_alert"] = 0xf192e, + ["md-smoke_detector_alert_outline"] = 0xf192f, + ["md-smoke_detector_off"] = 0xf1809, + ["md-smoke_detector_off_outline"] = 0xf180a, + ["md-smoke_detector_outline"] = 0xf1808, + ["md-smoke_detector_variant"] = 0xf180b, + ["md-smoke_detector_variant_alert"] = 0xf1930, + ["md-smoke_detector_variant_off"] = 0xf180c, + ["md-smoking"] = 0xf04b4, + ["md-smoking_off"] = 0xf04b5, + ["md-smoking_pipe"] = 0xf140d, + ["md-smoking_pipe_off"] = 0xf1428, + ["md-snail"] = 0xf1677, + ["md-snake"] = 0xf150e, + ["md-snapchat"] = 0xf04b6, + ["md-snowboard"] = 0xf1307, + ["md-snowflake"] = 0xf0717, + ["md-snowflake_alert"] = 0xf0f29, + ["md-snowflake_check"] = 0xf1a70, + ["md-snowflake_melt"] = 0xf12cb, + ["md-snowflake_off"] = 0xf14e3, + ["md-snowflake_thermometer"] = 0xf1a71, + ["md-snowflake_variant"] = 0xf0f2a, + ["md-snowman"] = 0xf04b7, + ["md-snowmobile"] = 0xf06dd, + ["md-snowshoeing"] = 0xf1a72, + ["md-soccer"] = 0xf04b8, + ["md-soccer_field"] = 0xf0834, + ["md-social_distance_2_meters"] = 0xf1579, + ["md-social_distance_6_feet"] = 0xf157a, + ["md-sofa"] = 0xf04b9, + ["md-sofa_outline"] = 0xf156d, + ["md-sofa_single"] = 0xf156e, + ["md-sofa_single_outline"] = 0xf156f, + ["md-solar_panel"] = 0xf0d9b, + ["md-solar_panel_large"] = 0xf0d9c, + ["md-solar_power"] = 0xf0a72, + ["md-solar_power_variant"] = 0xf1a73, + ["md-solar_power_variant_outline"] = 0xf1a74, + ["md-soldering_iron"] = 0xf1092, + ["md-solid"] = 0xf068d, + ["md-sony_playstation"] = 0xf0414, + ["md-sort"] = 0xf04ba, + ["md-sort_alphabetical_ascending"] = 0xf05bd, + ["md-sort_alphabetical_ascending_variant"] = 0xf1148, + ["md-sort_alphabetical_descending"] = 0xf05bf, + ["md-sort_alphabetical_descending_variant"] = 0xf1149, + ["md-sort_alphabetical_variant"] = 0xf04bb, + ["md-sort_ascending"] = 0xf04bc, + ["md-sort_bool_ascending"] = 0xf1385, + ["md-sort_bool_ascending_variant"] = 0xf1386, + ["md-sort_bool_descending"] = 0xf1387, + ["md-sort_bool_descending_variant"] = 0xf1388, + ["md-sort_calendar_ascending"] = 0xf1547, + ["md-sort_calendar_descending"] = 0xf1548, + ["md-sort_clock_ascending"] = 0xf1549, + ["md-sort_clock_ascending_outline"] = 0xf154a, + ["md-sort_clock_descending"] = 0xf154b, + ["md-sort_clock_descending_outline"] = 0xf154c, + ["md-sort_descending"] = 0xf04bd, + ["md-sort_numeric_ascending"] = 0xf1389, + ["md-sort_numeric_ascending_variant"] = 0xf090d, + ["md-sort_numeric_descending"] = 0xf138a, + ["md-sort_numeric_descending_variant"] = 0xf0ad2, + ["md-sort_numeric_variant"] = 0xf04be, + ["md-sort_reverse_variant"] = 0xf033c, + ["md-sort_variant"] = 0xf04bf, + ["md-sort_variant_lock"] = 0xf0ccd, + ["md-sort_variant_lock_open"] = 0xf0cce, + ["md-sort_variant_off"] = 0xf1abb, + ["md-sort_variant_remove"] = 0xf1147, + ["md-soundbar"] = 0xf17db, + ["md-soundcloud"] = 0xf04c0, + ["md-source_branch"] = 0xf062c, + ["md-source_branch_check"] = 0xf14cf, + ["md-source_branch_minus"] = 0xf14cb, + ["md-source_branch_plus"] = 0xf14ca, + ["md-source_branch_refresh"] = 0xf14cd, + ["md-source_branch_remove"] = 0xf14cc, + ["md-source_branch_sync"] = 0xf14ce, + ["md-source_commit"] = 0xf0718, + ["md-source_commit_end"] = 0xf0719, + ["md-source_commit_end_local"] = 0xf071a, + ["md-source_commit_local"] = 0xf071b, + ["md-source_commit_next_local"] = 0xf071c, + ["md-source_commit_start"] = 0xf071d, + ["md-source_commit_start_next_local"] = 0xf071e, + ["md-source_fork"] = 0xf04c1, + ["md-source_merge"] = 0xf062d, + ["md-source_pull"] = 0xf04c2, + ["md-source_repository"] = 0xf0ccf, + ["md-source_repository_multiple"] = 0xf0cd0, + ["md-soy_sauce"] = 0xf07ee, + ["md-soy_sauce_off"] = 0xf13fc, + ["md-spa"] = 0xf0cd1, + ["md-spa_outline"] = 0xf0cd2, + ["md-space_invaders"] = 0xf0bc9, + ["md-space_station"] = 0xf1383, + ["md-spade"] = 0xf0e65, + ["md-speaker"] = 0xf04c3, + ["md-speaker_bluetooth"] = 0xf09a2, + ["md-speaker_multiple"] = 0xf0d38, + ["md-speaker_off"] = 0xf04c4, + ["md-speaker_wireless"] = 0xf071f, + ["md-spear"] = 0xf1845, + ["md-speedometer"] = 0xf04c5, + ["md-speedometer_medium"] = 0xf0f85, + ["md-speedometer_slow"] = 0xf0f86, + ["md-spellcheck"] = 0xf04c6, + ["md-sphere"] = 0xf1954, + ["md-sphere_off"] = 0xf1955, + ["md-spider"] = 0xf11ea, + ["md-spider_thread"] = 0xf11eb, + ["md-spider_web"] = 0xf0bca, + ["md-spirit_level"] = 0xf14f1, + ["md-spoon_sugar"] = 0xf1429, + ["md-spotify"] = 0xf04c7, + ["md-spotlight"] = 0xf04c8, + ["md-spotlight_beam"] = 0xf04c9, + ["md-spray"] = 0xf0665, + ["md-spray_bottle"] = 0xf0ae0, + ["md-sprinkler"] = 0xf105f, + ["md-sprinkler_fire"] = 0xf199d, + ["md-sprinkler_variant"] = 0xf1060, + ["md-sprout"] = 0xf0e66, + ["md-sprout_outline"] = 0xf0e67, + ["md-square"] = 0xf0764, + ["md-square_circle"] = 0xf1500, + ["md-square_edit_outline"] = 0xf090c, + ["md-square_medium"] = 0xf0a13, + ["md-square_medium_outline"] = 0xf0a14, + ["md-square_off"] = 0xf12ee, + ["md-square_off_outline"] = 0xf12ef, + ["md-square_opacity"] = 0xf1854, + ["md-square_outline"] = 0xf0763, + ["md-square_root"] = 0xf0784, + ["md-square_root_box"] = 0xf09a3, + ["md-square_rounded"] = 0xf14fb, + ["md-square_rounded_badge"] = 0xf1a07, + ["md-square_rounded_badge_outline"] = 0xf1a08, + ["md-square_rounded_outline"] = 0xf14fc, + ["md-square_small"] = 0xf0a15, + ["md-square_wave"] = 0xf147b, + ["md-squeegee"] = 0xf0ae1, + ["md-ssh"] = 0xf08c0, + ["md-stack_exchange"] = 0xf060b, + ["md-stack_overflow"] = 0xf04cc, + ["md-stackpath"] = 0xf0359, + ["md-stadium"] = 0xf0ff9, + ["md-stadium_variant"] = 0xf0720, + ["md-stairs"] = 0xf04cd, + ["md-stairs_box"] = 0xf139e, + ["md-stairs_down"] = 0xf12be, + ["md-stairs_up"] = 0xf12bd, + ["md-stamper"] = 0xf0d39, + ["md-standard_definition"] = 0xf07ef, + ["md-star"] = 0xf04ce, + ["md-star_box"] = 0xf0a73, + ["md-star_box_multiple"] = 0xf1286, + ["md-star_box_multiple_outline"] = 0xf1287, + ["md-star_box_outline"] = 0xf0a74, + ["md-star_check"] = 0xf1566, + ["md-star_check_outline"] = 0xf156a, + ["md-star_circle"] = 0xf04cf, + ["md-star_circle_outline"] = 0xf09a4, + ["md-star_cog"] = 0xf1668, + ["md-star_cog_outline"] = 0xf1669, + ["md-star_crescent"] = 0xf0979, + ["md-star_david"] = 0xf097a, + ["md-star_face"] = 0xf09a5, + ["md-star_four_points"] = 0xf0ae2, + ["md-star_four_points_outline"] = 0xf0ae3, + ["md-star_half"] = 0xf0246, + ["md-star_half_full"] = 0xf04d0, + ["md-star_minus"] = 0xf1564, + ["md-star_minus_outline"] = 0xf1568, + ["md-star_off"] = 0xf04d1, + ["md-star_off_outline"] = 0xf155b, + ["md-star_outline"] = 0xf04d2, + ["md-star_plus"] = 0xf1563, + ["md-star_plus_outline"] = 0xf1567, + ["md-star_remove"] = 0xf1565, + ["md-star_remove_outline"] = 0xf1569, + ["md-star_settings"] = 0xf166a, + ["md-star_settings_outline"] = 0xf166b, + ["md-star_shooting"] = 0xf1741, + ["md-star_shooting_outline"] = 0xf1742, + ["md-star_three_points"] = 0xf0ae4, + ["md-star_three_points_outline"] = 0xf0ae5, + ["md-state_machine"] = 0xf11ef, + ["md-steam"] = 0xf04d3, + ["md-steering"] = 0xf04d4, + ["md-steering_off"] = 0xf090e, + ["md-step_backward"] = 0xf04d5, + ["md-step_backward_2"] = 0xf04d6, + ["md-step_forward"] = 0xf04d7, + ["md-step_forward_2"] = 0xf04d8, + ["md-stethoscope"] = 0xf04d9, + ["md-sticker"] = 0xf1364, + ["md-sticker_alert"] = 0xf1365, + ["md-sticker_alert_outline"] = 0xf1366, + ["md-sticker_check"] = 0xf1367, + ["md-sticker_check_outline"] = 0xf1368, + ["md-sticker_circle_outline"] = 0xf05d0, + ["md-sticker_emoji"] = 0xf0785, + ["md-sticker_minus"] = 0xf1369, + ["md-sticker_minus_outline"] = 0xf136a, + ["md-sticker_outline"] = 0xf136b, + ["md-sticker_plus"] = 0xf136c, + ["md-sticker_plus_outline"] = 0xf136d, + ["md-sticker_remove"] = 0xf136e, + ["md-sticker_remove_outline"] = 0xf136f, + ["md-sticker_text"] = 0xf178e, + ["md-sticker_text_outline"] = 0xf178f, + ["md-stocking"] = 0xf04da, + ["md-stomach"] = 0xf1093, + ["md-stool"] = 0xf195d, + ["md-stool_outline"] = 0xf195e, + ["md-stop"] = 0xf04db, + ["md-stop_circle"] = 0xf0666, + ["md-stop_circle_outline"] = 0xf0667, + ["md-storage_tank"] = 0xf1a75, + ["md-storage_tank_outline"] = 0xf1a76, + ["md-store"] = 0xf04dc, + ["md-store_24_hour"] = 0xf04dd, + ["md-store_alert"] = 0xf18c1, + ["md-store_alert_outline"] = 0xf18c2, + ["md-store_check"] = 0xf18c3, + ["md-store_check_outline"] = 0xf18c4, + ["md-store_clock"] = 0xf18c5, + ["md-store_clock_outline"] = 0xf18c6, + ["md-store_cog"] = 0xf18c7, + ["md-store_cog_outline"] = 0xf18c8, + ["md-store_edit"] = 0xf18c9, + ["md-store_edit_outline"] = 0xf18ca, + ["md-store_marker"] = 0xf18cb, + ["md-store_marker_outline"] = 0xf18cc, + ["md-store_minus"] = 0xf165e, + ["md-store_minus_outline"] = 0xf18cd, + ["md-store_off"] = 0xf18ce, + ["md-store_off_outline"] = 0xf18cf, + ["md-store_outline"] = 0xf1361, + ["md-store_plus"] = 0xf165f, + ["md-store_plus_outline"] = 0xf18d0, + ["md-store_remove"] = 0xf1660, + ["md-store_remove_outline"] = 0xf18d1, + ["md-store_search"] = 0xf18d2, + ["md-store_search_outline"] = 0xf18d3, + ["md-store_settings"] = 0xf18d4, + ["md-store_settings_outline"] = 0xf18d5, + ["md-storefront"] = 0xf07c7, + ["md-storefront_outline"] = 0xf10c1, + ["md-stove"] = 0xf04de, + ["md-strategy"] = 0xf11d6, + ["md-stretch_to_page"] = 0xf0f2b, + ["md-stretch_to_page_outline"] = 0xf0f2c, + ["md-string_lights"] = 0xf12ba, + ["md-string_lights_off"] = 0xf12bb, + ["md-subdirectory_arrow_left"] = 0xf060c, + ["md-subdirectory_arrow_right"] = 0xf060d, + ["md-submarine"] = 0xf156c, + ["md-subtitles"] = 0xf0a16, + ["md-subtitles_outline"] = 0xf0a17, + ["md-subway"] = 0xf06ac, + ["md-subway_alert_variant"] = 0xf0d9d, + ["md-subway_variant"] = 0xf04df, + ["md-summit"] = 0xf0786, + ["md-sun_clock"] = 0xf1a77, + ["md-sun_clock_outline"] = 0xf1a78, + ["md-sun_compass"] = 0xf19a5, + ["md-sun_snowflake"] = 0xf1796, + ["md-sun_snowflake_variant"] = 0xf1a79, + ["md-sun_thermometer"] = 0xf18d6, + ["md-sun_thermometer_outline"] = 0xf18d7, + ["md-sun_wireless"] = 0xf17fe, + ["md-sun_wireless_outline"] = 0xf17ff, + ["md-sunglasses"] = 0xf04e0, + ["md-surfing"] = 0xf1746, + ["md-surround_sound"] = 0xf05c5, + ["md-surround_sound_2_0"] = 0xf07f0, + ["md-surround_sound_2_1"] = 0xf1729, + ["md-surround_sound_3_1"] = 0xf07f1, + ["md-surround_sound_5_1"] = 0xf07f2, + ["md-surround_sound_5_1_2"] = 0xf172a, + ["md-surround_sound_7_1"] = 0xf07f3, + ["md-svg"] = 0xf0721, + ["md-swap_horizontal"] = 0xf04e1, + ["md-swap_horizontal_bold"] = 0xf0bcd, + ["md-swap_horizontal_circle"] = 0xf0fe1, + ["md-swap_horizontal_circle_outline"] = 0xf0fe2, + ["md-swap_horizontal_variant"] = 0xf08c1, + ["md-swap_vertical"] = 0xf04e2, + ["md-swap_vertical_bold"] = 0xf0bce, + ["md-swap_vertical_circle"] = 0xf0fe3, + ["md-swap_vertical_circle_outline"] = 0xf0fe4, + ["md-swap_vertical_variant"] = 0xf08c2, + ["md-swim"] = 0xf04e3, + ["md-switch"] = 0xf04e4, + ["md-sword"] = 0xf04e5, + ["md-sword_cross"] = 0xf0787, + ["md-syllabary_hangul"] = 0xf1333, + ["md-syllabary_hiragana"] = 0xf1334, + ["md-syllabary_katakana"] = 0xf1335, + ["md-syllabary_katakana_halfwidth"] = 0xf1336, + ["md-symbol"] = 0xf1501, + ["md-symfony"] = 0xf0ae6, + ["md-sync"] = 0xf04e6, + ["md-sync_alert"] = 0xf04e7, + ["md-sync_circle"] = 0xf1378, + ["md-sync_off"] = 0xf04e8, + ["md-tab"] = 0xf04e9, + ["md-tab_minus"] = 0xf0b4b, + ["md-tab_plus"] = 0xf075c, + ["md-tab_remove"] = 0xf0b4c, + ["md-tab_search"] = 0xf199e, + ["md-tab_unselected"] = 0xf04ea, + ["md-table"] = 0xf04eb, + ["md-table_account"] = 0xf13b9, + ["md-table_alert"] = 0xf13ba, + ["md-table_arrow_down"] = 0xf13bb, + ["md-table_arrow_left"] = 0xf13bc, + ["md-table_arrow_right"] = 0xf13bd, + ["md-table_arrow_up"] = 0xf13be, + ["md-table_border"] = 0xf0a18, + ["md-table_cancel"] = 0xf13bf, + ["md-table_chair"] = 0xf1061, + ["md-table_check"] = 0xf13c0, + ["md-table_clock"] = 0xf13c1, + ["md-table_cog"] = 0xf13c2, + ["md-table_column"] = 0xf0835, + ["md-table_column_plus_after"] = 0xf04ec, + ["md-table_column_plus_before"] = 0xf04ed, + ["md-table_column_remove"] = 0xf04ee, + ["md-table_column_width"] = 0xf04ef, + ["md-table_edit"] = 0xf04f0, + ["md-table_eye"] = 0xf1094, + ["md-table_eye_off"] = 0xf13c3, + ["md-table_furniture"] = 0xf05bc, + ["md-table_headers_eye"] = 0xf121d, + ["md-table_headers_eye_off"] = 0xf121e, + ["md-table_heart"] = 0xf13c4, + ["md-table_key"] = 0xf13c5, + ["md-table_large"] = 0xf04f1, + ["md-table_large_plus"] = 0xf0f87, + ["md-table_large_remove"] = 0xf0f88, + ["md-table_lock"] = 0xf13c6, + ["md-table_merge_cells"] = 0xf09a6, + ["md-table_minus"] = 0xf13c7, + ["md-table_multiple"] = 0xf13c8, + ["md-table_network"] = 0xf13c9, + ["md-table_of_contents"] = 0xf0836, + ["md-table_off"] = 0xf13ca, + ["md-table_picnic"] = 0xf1743, + ["md-table_pivot"] = 0xf183c, + ["md-table_plus"] = 0xf0a75, + ["md-table_refresh"] = 0xf13a0, + ["md-table_remove"] = 0xf0a76, + ["md-table_row"] = 0xf0837, + ["md-table_row_height"] = 0xf04f2, + ["md-table_row_plus_after"] = 0xf04f3, + ["md-table_row_plus_before"] = 0xf04f4, + ["md-table_row_remove"] = 0xf04f5, + ["md-table_search"] = 0xf090f, + ["md-table_settings"] = 0xf0838, + ["md-table_split_cell"] = 0xf142a, + ["md-table_star"] = 0xf13cb, + ["md-table_sync"] = 0xf13a1, + ["md-table_tennis"] = 0xf0e68, + ["md-tablet"] = 0xf04f6, + ["md-tablet_android"] = 0xf04f7, + ["md-tablet_cellphone"] = 0xf09a7, + ["md-tablet_dashboard"] = 0xf0ece, + ["md-taco"] = 0xf0762, + ["md-tag"] = 0xf04f9, + ["md-tag_arrow_down"] = 0xf172b, + ["md-tag_arrow_down_outline"] = 0xf172c, + ["md-tag_arrow_left"] = 0xf172d, + ["md-tag_arrow_left_outline"] = 0xf172e, + ["md-tag_arrow_right"] = 0xf172f, + ["md-tag_arrow_right_outline"] = 0xf1730, + ["md-tag_arrow_up"] = 0xf1731, + ["md-tag_arrow_up_outline"] = 0xf1732, + ["md-tag_check"] = 0xf1a7a, + ["md-tag_check_outline"] = 0xf1a7b, + ["md-tag_faces"] = 0xf04fa, + ["md-tag_heart"] = 0xf068b, + ["md-tag_heart_outline"] = 0xf0bcf, + ["md-tag_minus"] = 0xf0910, + ["md-tag_minus_outline"] = 0xf121f, + ["md-tag_multiple"] = 0xf04fb, + ["md-tag_multiple_outline"] = 0xf12f7, + ["md-tag_off"] = 0xf1220, + ["md-tag_off_outline"] = 0xf1221, + ["md-tag_outline"] = 0xf04fc, + ["md-tag_plus"] = 0xf0722, + ["md-tag_plus_outline"] = 0xf1222, + ["md-tag_remove"] = 0xf0723, + ["md-tag_remove_outline"] = 0xf1223, + ["md-tag_search"] = 0xf1907, + ["md-tag_search_outline"] = 0xf1908, + ["md-tag_text"] = 0xf1224, + ["md-tag_text_outline"] = 0xf04fd, + ["md-tailwind"] = 0xf13ff, + ["md-tally_mark_1"] = 0xf1abc, + ["md-tally_mark_2"] = 0xf1abd, + ["md-tally_mark_3"] = 0xf1abe, + ["md-tally_mark_4"] = 0xf1abf, + ["md-tally_mark_5"] = 0xf1ac0, + ["md-tangram"] = 0xf04f8, + ["md-tank"] = 0xf0d3a, + ["md-tanker_truck"] = 0xf0fe5, + ["md-tape_drive"] = 0xf16df, + ["md-tape_measure"] = 0xf0b4d, + ["md-target"] = 0xf04fe, + ["md-target_account"] = 0xf0bd0, + ["md-target_variant"] = 0xf0a77, + ["md-taxi"] = 0xf04ff, + ["md-tea"] = 0xf0d9e, + ["md-tea_outline"] = 0xf0d9f, + ["md-teamviewer"] = 0xf0500, + ["md-teddy_bear"] = 0xf18fb, + ["md-telescope"] = 0xf0b4e, + ["md-television"] = 0xf0502, + ["md-television_ambient_light"] = 0xf1356, + ["md-television_box"] = 0xf0839, + ["md-television_classic"] = 0xf07f4, + ["md-television_classic_off"] = 0xf083a, + ["md-television_guide"] = 0xf0503, + ["md-television_off"] = 0xf083b, + ["md-television_pause"] = 0xf0f89, + ["md-television_play"] = 0xf0ecf, + ["md-television_shimmer"] = 0xf1110, + ["md-television_stop"] = 0xf0f8a, + ["md-temperature_celsius"] = 0xf0504, + ["md-temperature_fahrenheit"] = 0xf0505, + ["md-temperature_kelvin"] = 0xf0506, + ["md-tennis"] = 0xf0da0, + ["md-tennis_ball"] = 0xf0507, + ["md-tent"] = 0xf0508, + ["md-terraform"] = 0xf1062, + ["md-test_tube"] = 0xf0668, + ["md-test_tube_empty"] = 0xf0911, + ["md-test_tube_off"] = 0xf0912, + ["md-text"] = 0xf09a8, + ["md-text_account"] = 0xf1570, + ["md-text_box"] = 0xf021a, + ["md-text_box_check"] = 0xf0ea6, + ["md-text_box_check_outline"] = 0xf0ea7, + ["md-text_box_edit"] = 0xf1a7c, + ["md-text_box_edit_outline"] = 0xf1a7d, + ["md-text_box_minus"] = 0xf0ea8, + ["md-text_box_minus_outline"] = 0xf0ea9, + ["md-text_box_multiple"] = 0xf0ab7, + ["md-text_box_multiple_outline"] = 0xf0ab8, + ["md-text_box_outline"] = 0xf09ed, + ["md-text_box_plus"] = 0xf0eaa, + ["md-text_box_plus_outline"] = 0xf0eab, + ["md-text_box_remove"] = 0xf0eac, + ["md-text_box_remove_outline"] = 0xf0ead, + ["md-text_box_search"] = 0xf0eae, + ["md-text_box_search_outline"] = 0xf0eaf, + ["md-text_long"] = 0xf09aa, + ["md-text_recognition"] = 0xf113d, + ["md-text_search"] = 0xf13b8, + ["md-text_search_variant"] = 0xf1a7e, + ["md-text_shadow"] = 0xf0669, + ["md-text_short"] = 0xf09a9, + ["md-text_to_speech"] = 0xf050a, + ["md-text_to_speech_off"] = 0xf050b, + ["md-texture"] = 0xf050c, + ["md-texture_box"] = 0xf0fe6, + ["md-theater"] = 0xf050d, + ["md-theme_light_dark"] = 0xf050e, + ["md-thermometer"] = 0xf050f, + ["md-thermometer_alert"] = 0xf0e01, + ["md-thermometer_bluetooth"] = 0xf1895, + ["md-thermometer_check"] = 0xf1a7f, + ["md-thermometer_chevron_down"] = 0xf0e02, + ["md-thermometer_chevron_up"] = 0xf0e03, + ["md-thermometer_high"] = 0xf10c2, + ["md-thermometer_lines"] = 0xf0510, + ["md-thermometer_low"] = 0xf10c3, + ["md-thermometer_minus"] = 0xf0e04, + ["md-thermometer_off"] = 0xf1531, + ["md-thermometer_plus"] = 0xf0e05, + ["md-thermometer_water"] = 0xf1a80, + ["md-thermostat"] = 0xf0393, + ["md-thermostat_box"] = 0xf0891, + ["md-thought_bubble"] = 0xf07f6, + ["md-thought_bubble_outline"] = 0xf07f7, + ["md-thumb_down"] = 0xf0511, + ["md-thumb_down_outline"] = 0xf0512, + ["md-thumb_up"] = 0xf0513, + ["md-thumb_up_outline"] = 0xf0514, + ["md-thumbs_up_down"] = 0xf0515, + ["md-thumbs_up_down_outline"] = 0xf1914, + ["md-ticket"] = 0xf0516, + ["md-ticket_account"] = 0xf0517, + ["md-ticket_confirmation"] = 0xf0518, + ["md-ticket_confirmation_outline"] = 0xf13aa, + ["md-ticket_outline"] = 0xf0913, + ["md-ticket_percent"] = 0xf0724, + ["md-ticket_percent_outline"] = 0xf142b, + ["md-tie"] = 0xf0519, + ["md-tilde"] = 0xf0725, + ["md-tilde_off"] = 0xf18f3, + ["md-timelapse"] = 0xf051a, + ["md-timeline"] = 0xf0bd1, + ["md-timeline_alert"] = 0xf0f95, + ["md-timeline_alert_outline"] = 0xf0f98, + ["md-timeline_check"] = 0xf1532, + ["md-timeline_check_outline"] = 0xf1533, + ["md-timeline_clock"] = 0xf11fb, + ["md-timeline_clock_outline"] = 0xf11fc, + ["md-timeline_help"] = 0xf0f99, + ["md-timeline_help_outline"] = 0xf0f9a, + ["md-timeline_minus"] = 0xf1534, + ["md-timeline_minus_outline"] = 0xf1535, + ["md-timeline_outline"] = 0xf0bd2, + ["md-timeline_plus"] = 0xf0f96, + ["md-timeline_plus_outline"] = 0xf0f97, + ["md-timeline_remove"] = 0xf1536, + ["md-timeline_remove_outline"] = 0xf1537, + ["md-timeline_text"] = 0xf0bd3, + ["md-timeline_text_outline"] = 0xf0bd4, + ["md-timer"] = 0xf13ab, + ["md-timer_10"] = 0xf051c, + ["md-timer_3"] = 0xf051d, + ["md-timer_alert"] = 0xf1acc, + ["md-timer_alert_outline"] = 0xf1acd, + ["md-timer_cancel"] = 0xf1ace, + ["md-timer_cancel_outline"] = 0xf1acf, + ["md-timer_check"] = 0xf1ad0, + ["md-timer_check_outline"] = 0xf1ad1, + ["md-timer_cog"] = 0xf1925, + ["md-timer_cog_outline"] = 0xf1926, + ["md-timer_edit"] = 0xf1ad2, + ["md-timer_edit_outline"] = 0xf1ad3, + ["md-timer_lock"] = 0xf1ad4, + ["md-timer_lock_open"] = 0xf1ad5, + ["md-timer_lock_open_outline"] = 0xf1ad6, + ["md-timer_lock_outline"] = 0xf1ad7, + ["md-timer_marker"] = 0xf1ad8, + ["md-timer_marker_outline"] = 0xf1ad9, + ["md-timer_minus"] = 0xf1ada, + ["md-timer_minus_outline"] = 0xf1adb, + ["md-timer_music"] = 0xf1adc, + ["md-timer_music_outline"] = 0xf1add, + ["md-timer_off"] = 0xf13ac, + ["md-timer_off_outline"] = 0xf051e, + ["md-timer_outline"] = 0xf051b, + ["md-timer_pause"] = 0xf1ade, + ["md-timer_pause_outline"] = 0xf1adf, + ["md-timer_play"] = 0xf1ae0, + ["md-timer_play_outline"] = 0xf1ae1, + ["md-timer_plus"] = 0xf1ae2, + ["md-timer_plus_outline"] = 0xf1ae3, + ["md-timer_refresh"] = 0xf1ae4, + ["md-timer_refresh_outline"] = 0xf1ae5, + ["md-timer_remove"] = 0xf1ae6, + ["md-timer_remove_outline"] = 0xf1ae7, + ["md-timer_sand"] = 0xf051f, + ["md-timer_sand_complete"] = 0xf199f, + ["md-timer_sand_empty"] = 0xf06ad, + ["md-timer_sand_full"] = 0xf078c, + ["md-timer_sand_paused"] = 0xf19a0, + ["md-timer_settings"] = 0xf1923, + ["md-timer_settings_outline"] = 0xf1924, + ["md-timer_star"] = 0xf1ae8, + ["md-timer_star_outline"] = 0xf1ae9, + ["md-timer_stop"] = 0xf1aea, + ["md-timer_stop_outline"] = 0xf1aeb, + ["md-timer_sync"] = 0xf1aec, + ["md-timer_sync_outline"] = 0xf1aed, + ["md-timetable"] = 0xf0520, + ["md-tire"] = 0xf1896, + ["md-toaster"] = 0xf1063, + ["md-toaster_off"] = 0xf11b7, + ["md-toaster_oven"] = 0xf0cd3, + ["md-toggle_switch"] = 0xf0521, + ["md-toggle_switch_off"] = 0xf0522, + ["md-toggle_switch_off_outline"] = 0xf0a19, + ["md-toggle_switch_outline"] = 0xf0a1a, + ["md-toggle_switch_variant"] = 0xf1a25, + ["md-toggle_switch_variant_off"] = 0xf1a26, + ["md-toilet"] = 0xf09ab, + ["md-toolbox"] = 0xf09ac, + ["md-toolbox_outline"] = 0xf09ad, + ["md-tools"] = 0xf1064, + ["md-tooltip"] = 0xf0523, + ["md-tooltip_account"] = 0xf000c, + ["md-tooltip_cellphone"] = 0xf183b, + ["md-tooltip_check"] = 0xf155c, + ["md-tooltip_check_outline"] = 0xf155d, + ["md-tooltip_edit"] = 0xf0524, + ["md-tooltip_edit_outline"] = 0xf12c5, + ["md-tooltip_image"] = 0xf0525, + ["md-tooltip_image_outline"] = 0xf0bd5, + ["md-tooltip_minus"] = 0xf155e, + ["md-tooltip_minus_outline"] = 0xf155f, + ["md-tooltip_outline"] = 0xf0526, + ["md-tooltip_plus"] = 0xf0bd6, + ["md-tooltip_plus_outline"] = 0xf0527, + ["md-tooltip_remove"] = 0xf1560, + ["md-tooltip_remove_outline"] = 0xf1561, + ["md-tooltip_text"] = 0xf0528, + ["md-tooltip_text_outline"] = 0xf0bd7, + ["md-tooth"] = 0xf08c3, + ["md-tooth_outline"] = 0xf0529, + ["md-toothbrush"] = 0xf1129, + ["md-toothbrush_electric"] = 0xf112c, + ["md-toothbrush_paste"] = 0xf112a, + ["md-torch"] = 0xf1606, + ["md-tortoise"] = 0xf0d3b, + ["md-toslink"] = 0xf12b8, + ["md-tournament"] = 0xf09ae, + ["md-tow_truck"] = 0xf083c, + ["md-tower_beach"] = 0xf0681, + ["md-tower_fire"] = 0xf0682, + ["md-town_hall"] = 0xf1875, + ["md-toy_brick"] = 0xf1288, + ["md-toy_brick_marker"] = 0xf1289, + ["md-toy_brick_marker_outline"] = 0xf128a, + ["md-toy_brick_minus"] = 0xf128b, + ["md-toy_brick_minus_outline"] = 0xf128c, + ["md-toy_brick_outline"] = 0xf128d, + ["md-toy_brick_plus"] = 0xf128e, + ["md-toy_brick_plus_outline"] = 0xf128f, + ["md-toy_brick_remove"] = 0xf1290, + ["md-toy_brick_remove_outline"] = 0xf1291, + ["md-toy_brick_search"] = 0xf1292, + ["md-toy_brick_search_outline"] = 0xf1293, + ["md-track_light"] = 0xf0914, + ["md-trackpad"] = 0xf07f8, + ["md-trackpad_lock"] = 0xf0933, + ["md-tractor"] = 0xf0892, + ["md-tractor_variant"] = 0xf14c4, + ["md-trademark"] = 0xf0a78, + ["md-traffic_cone"] = 0xf137c, + ["md-traffic_light"] = 0xf052b, + ["md-traffic_light_outline"] = 0xf182a, + ["md-train"] = 0xf052c, + ["md-train_car"] = 0xf0bd8, + ["md-train_car_passenger"] = 0xf1733, + ["md-train_car_passenger_door"] = 0xf1734, + ["md-train_car_passenger_door_open"] = 0xf1735, + ["md-train_car_passenger_variant"] = 0xf1736, + ["md-train_variant"] = 0xf08c4, + ["md-tram"] = 0xf052d, + ["md-tram_side"] = 0xf0fe7, + ["md-transcribe"] = 0xf052e, + ["md-transcribe_close"] = 0xf052f, + ["md-transfer"] = 0xf1065, + ["md-transfer_down"] = 0xf0da1, + ["md-transfer_left"] = 0xf0da2, + ["md-transfer_right"] = 0xf0530, + ["md-transfer_up"] = 0xf0da3, + ["md-transit_connection"] = 0xf0d3c, + ["md-transit_connection_horizontal"] = 0xf1546, + ["md-transit_connection_variant"] = 0xf0d3d, + ["md-transit_detour"] = 0xf0f8b, + ["md-transit_skip"] = 0xf1515, + ["md-transit_transfer"] = 0xf06ae, + ["md-transition"] = 0xf0915, + ["md-transition_masked"] = 0xf0916, + ["md-translate"] = 0xf05ca, + ["md-translate_off"] = 0xf0e06, + ["md-transmission_tower"] = 0xf0d3e, + ["md-transmission_tower_export"] = 0xf192c, + ["md-transmission_tower_import"] = 0xf192d, + ["md-transmission_tower_off"] = 0xf19dd, + ["md-trash_can"] = 0xf0a79, + ["md-trash_can_outline"] = 0xf0a7a, + ["md-tray"] = 0xf1294, + ["md-tray_alert"] = 0xf1295, + ["md-tray_arrow_down"] = 0xf0120, + ["md-tray_arrow_up"] = 0xf011d, + ["md-tray_full"] = 0xf1296, + ["md-tray_minus"] = 0xf1297, + ["md-tray_plus"] = 0xf1298, + ["md-tray_remove"] = 0xf1299, + ["md-treasure_chest"] = 0xf0726, + ["md-tree"] = 0xf0531, + ["md-tree_outline"] = 0xf0e69, + ["md-trello"] = 0xf0532, + ["md-trending_down"] = 0xf0533, + ["md-trending_neutral"] = 0xf0534, + ["md-trending_up"] = 0xf0535, + ["md-triangle"] = 0xf0536, + ["md-triangle_outline"] = 0xf0537, + ["md-triangle_small_down"] = 0xf1a09, + ["md-triangle_small_up"] = 0xf1a0a, + ["md-triangle_wave"] = 0xf147c, + ["md-triforce"] = 0xf0bd9, + ["md-trophy"] = 0xf0538, + ["md-trophy_award"] = 0xf0539, + ["md-trophy_broken"] = 0xf0da4, + ["md-trophy_outline"] = 0xf053a, + ["md-trophy_variant"] = 0xf053b, + ["md-trophy_variant_outline"] = 0xf053c, + ["md-truck"] = 0xf053d, + ["md-truck_alert"] = 0xf19de, + ["md-truck_alert_outline"] = 0xf19df, + ["md-truck_cargo_container"] = 0xf18d8, + ["md-truck_check"] = 0xf0cd4, + ["md-truck_check_outline"] = 0xf129a, + ["md-truck_delivery"] = 0xf053e, + ["md-truck_delivery_outline"] = 0xf129b, + ["md-truck_fast"] = 0xf0788, + ["md-truck_fast_outline"] = 0xf129c, + ["md-truck_flatbed"] = 0xf1891, + ["md-truck_minus"] = 0xf19ae, + ["md-truck_minus_outline"] = 0xf19bd, + ["md-truck_outline"] = 0xf129d, + ["md-truck_plus"] = 0xf19ad, + ["md-truck_plus_outline"] = 0xf19bc, + ["md-truck_remove"] = 0xf19af, + ["md-truck_remove_outline"] = 0xf19be, + ["md-truck_snowflake"] = 0xf19a6, + ["md-truck_trailer"] = 0xf0727, + ["md-trumpet"] = 0xf1096, + ["md-tshirt_crew"] = 0xf0a7b, + ["md-tshirt_crew_outline"] = 0xf053f, + ["md-tshirt_v"] = 0xf0a7c, + ["md-tshirt_v_outline"] = 0xf0540, + ["md-tsunami"] = 0xf1a81, + ["md-tumble_dryer"] = 0xf0917, + ["md-tumble_dryer_alert"] = 0xf11ba, + ["md-tumble_dryer_off"] = 0xf11bb, + ["md-tune"] = 0xf062e, + ["md-tune_variant"] = 0xf1542, + ["md-tune_vertical"] = 0xf066a, + ["md-tune_vertical_variant"] = 0xf1543, + ["md-tunnel"] = 0xf183d, + ["md-tunnel_outline"] = 0xf183e, + ["md-turbine"] = 0xf1a82, + ["md-turkey"] = 0xf171b, + ["md-turnstile"] = 0xf0cd5, + ["md-turnstile_outline"] = 0xf0cd6, + ["md-turtle"] = 0xf0cd7, + ["md-twitch"] = 0xf0543, + ["md-twitter"] = 0xf0544, + ["md-two_factor_authentication"] = 0xf09af, + ["md-typewriter"] = 0xf0f2d, + ["md-ubisoft"] = 0xf0bda, + ["md-ubuntu"] = 0xf0548, + ["md-ufo"] = 0xf10c4, + ["md-ufo_outline"] = 0xf10c5, + ["md-ultra_high_definition"] = 0xf07f9, + ["md-umbraco"] = 0xf0549, + ["md-umbrella"] = 0xf054a, + ["md-umbrella_beach"] = 0xf188a, + ["md-umbrella_beach_outline"] = 0xf188b, + ["md-umbrella_closed"] = 0xf09b0, + ["md-umbrella_closed_outline"] = 0xf13e2, + ["md-umbrella_closed_variant"] = 0xf13e1, + ["md-umbrella_outline"] = 0xf054b, + ["md-undo"] = 0xf054c, + ["md-undo_variant"] = 0xf054d, + ["md-unfold_less_horizontal"] = 0xf054e, + ["md-unfold_less_vertical"] = 0xf0760, + ["md-unfold_more_horizontal"] = 0xf054f, + ["md-unfold_more_vertical"] = 0xf0761, + ["md-ungroup"] = 0xf0550, + ["md-unicode"] = 0xf0ed0, + ["md-unicorn"] = 0xf15c2, + ["md-unicorn_variant"] = 0xf15c3, + ["md-unicycle"] = 0xf15e5, + ["md-unity"] = 0xf06af, + ["md-unreal"] = 0xf09b1, + ["md-update"] = 0xf06b0, + ["md-upload"] = 0xf0552, + ["md-upload_lock"] = 0xf1373, + ["md-upload_lock_outline"] = 0xf1374, + ["md-upload_multiple"] = 0xf083d, + ["md-upload_network"] = 0xf06f6, + ["md-upload_network_outline"] = 0xf0cd8, + ["md-upload_off"] = 0xf10c6, + ["md-upload_off_outline"] = 0xf10c7, + ["md-upload_outline"] = 0xf0e07, + ["md-usb"] = 0xf0553, + ["md-usb_flash_drive"] = 0xf129e, + ["md-usb_flash_drive_outline"] = 0xf129f, + ["md-usb_port"] = 0xf11f0, + ["md-vacuum"] = 0xf19a1, + ["md-vacuum_outline"] = 0xf19a2, + ["md-valve"] = 0xf1066, + ["md-valve_closed"] = 0xf1067, + ["md-valve_open"] = 0xf1068, + ["md-van_passenger"] = 0xf07fa, + ["md-van_utility"] = 0xf07fb, + ["md-vanish"] = 0xf07fc, + ["md-vanish_quarter"] = 0xf1554, + ["md-vanity_light"] = 0xf11e1, + ["md-variable"] = 0xf0ae7, + ["md-variable_box"] = 0xf1111, + ["md-vector_arrange_above"] = 0xf0554, + ["md-vector_arrange_below"] = 0xf0555, + ["md-vector_bezier"] = 0xf0ae8, + ["md-vector_circle"] = 0xf0556, + ["md-vector_circle_variant"] = 0xf0557, + ["md-vector_combine"] = 0xf0558, + ["md-vector_curve"] = 0xf0559, + ["md-vector_difference"] = 0xf055a, + ["md-vector_difference_ab"] = 0xf055b, + ["md-vector_difference_ba"] = 0xf055c, + ["md-vector_ellipse"] = 0xf0893, + ["md-vector_intersection"] = 0xf055d, + ["md-vector_line"] = 0xf055e, + ["md-vector_link"] = 0xf0fe8, + ["md-vector_point"] = 0xf055f, + ["md-vector_polygon"] = 0xf0560, + ["md-vector_polygon_variant"] = 0xf1856, + ["md-vector_polyline"] = 0xf0561, + ["md-vector_polyline_edit"] = 0xf1225, + ["md-vector_polyline_minus"] = 0xf1226, + ["md-vector_polyline_plus"] = 0xf1227, + ["md-vector_polyline_remove"] = 0xf1228, + ["md-vector_radius"] = 0xf074a, + ["md-vector_rectangle"] = 0xf05c6, + ["md-vector_selection"] = 0xf0562, + ["md-vector_square"] = 0xf0001, + ["md-vector_square_close"] = 0xf1857, + ["md-vector_square_edit"] = 0xf18d9, + ["md-vector_square_minus"] = 0xf18da, + ["md-vector_square_open"] = 0xf1858, + ["md-vector_square_plus"] = 0xf18db, + ["md-vector_square_remove"] = 0xf18dc, + ["md-vector_triangle"] = 0xf0563, + ["md-vector_union"] = 0xf0564, + ["md-vhs"] = 0xf0a1b, + ["md-vibrate"] = 0xf0566, + ["md-vibrate_off"] = 0xf0cd9, + ["md-video"] = 0xf0567, + ["md-video_2d"] = 0xf1a1c, + ["md-video_3d"] = 0xf07fd, + ["md-video_3d_off"] = 0xf13d9, + ["md-video_3d_variant"] = 0xf0ed1, + ["md-video_4k_box"] = 0xf083e, + ["md-video_account"] = 0xf0919, + ["md-video_box"] = 0xf00fd, + ["md-video_box_off"] = 0xf00fe, + ["md-video_check"] = 0xf1069, + ["md-video_check_outline"] = 0xf106a, + ["md-video_high_definition"] = 0xf152e, + ["md-video_image"] = 0xf091a, + ["md-video_input_antenna"] = 0xf083f, + ["md-video_input_component"] = 0xf0840, + ["md-video_input_hdmi"] = 0xf0841, + ["md-video_input_scart"] = 0xf0f8c, + ["md-video_input_svideo"] = 0xf0842, + ["md-video_marker"] = 0xf19a9, + ["md-video_marker_outline"] = 0xf19aa, + ["md-video_minus"] = 0xf09b2, + ["md-video_minus_outline"] = 0xf02ba, + ["md-video_off"] = 0xf0568, + ["md-video_off_outline"] = 0xf0bdb, + ["md-video_outline"] = 0xf0bdc, + ["md-video_plus"] = 0xf09b3, + ["md-video_plus_outline"] = 0xf01d3, + ["md-video_stabilization"] = 0xf091b, + ["md-video_switch"] = 0xf0569, + ["md-video_switch_outline"] = 0xf0790, + ["md-video_vintage"] = 0xf0a1c, + ["md-video_wireless"] = 0xf0ed2, + ["md-video_wireless_outline"] = 0xf0ed3, + ["md-view_agenda"] = 0xf056a, + ["md-view_agenda_outline"] = 0xf11d8, + ["md-view_array"] = 0xf056b, + ["md-view_array_outline"] = 0xf1485, + ["md-view_carousel"] = 0xf056c, + ["md-view_carousel_outline"] = 0xf1486, + ["md-view_column"] = 0xf056d, + ["md-view_column_outline"] = 0xf1487, + ["md-view_comfy"] = 0xf0e6a, + ["md-view_comfy_outline"] = 0xf1488, + ["md-view_compact"] = 0xf0e6b, + ["md-view_compact_outline"] = 0xf0e6c, + ["md-view_dashboard"] = 0xf056e, + ["md-view_dashboard_edit"] = 0xf1947, + ["md-view_dashboard_edit_outline"] = 0xf1948, + ["md-view_dashboard_outline"] = 0xf0a1d, + ["md-view_dashboard_variant"] = 0xf0843, + ["md-view_dashboard_variant_outline"] = 0xf1489, + ["md-view_day"] = 0xf056f, + ["md-view_day_outline"] = 0xf148a, + ["md-view_gallery"] = 0xf1888, + ["md-view_gallery_outline"] = 0xf1889, + ["md-view_grid"] = 0xf0570, + ["md-view_grid_outline"] = 0xf11d9, + ["md-view_grid_plus"] = 0xf0f8d, + ["md-view_grid_plus_outline"] = 0xf11da, + ["md-view_headline"] = 0xf0571, + ["md-view_list"] = 0xf0572, + ["md-view_list_outline"] = 0xf148b, + ["md-view_module"] = 0xf0573, + ["md-view_module_outline"] = 0xf148c, + ["md-view_parallel"] = 0xf0728, + ["md-view_parallel_outline"] = 0xf148d, + ["md-view_quilt"] = 0xf0574, + ["md-view_quilt_outline"] = 0xf148e, + ["md-view_sequential"] = 0xf0729, + ["md-view_sequential_outline"] = 0xf148f, + ["md-view_split_horizontal"] = 0xf0bcb, + ["md-view_split_vertical"] = 0xf0bcc, + ["md-view_stream"] = 0xf0575, + ["md-view_stream_outline"] = 0xf1490, + ["md-view_week"] = 0xf0576, + ["md-view_week_outline"] = 0xf1491, + ["md-vimeo"] = 0xf0577, + ["md-violin"] = 0xf060f, + ["md-virtual_reality"] = 0xf0894, + ["md-virus"] = 0xf13b6, + ["md-virus_off"] = 0xf18e1, + ["md-virus_off_outline"] = 0xf18e2, + ["md-virus_outline"] = 0xf13b7, + ["md-vlc"] = 0xf057c, + ["md-voicemail"] = 0xf057d, + ["md-volcano"] = 0xf1a83, + ["md-volcano_outline"] = 0xf1a84, + ["md-volleyball"] = 0xf09b4, + ["md-volume_high"] = 0xf057e, + ["md-volume_low"] = 0xf057f, + ["md-volume_medium"] = 0xf0580, + ["md-volume_minus"] = 0xf075e, + ["md-volume_mute"] = 0xf075f, + ["md-volume_off"] = 0xf0581, + ["md-volume_plus"] = 0xf075d, + ["md-volume_source"] = 0xf1120, + ["md-volume_variant_off"] = 0xf0e08, + ["md-volume_vibrate"] = 0xf1121, + ["md-vote"] = 0xf0a1f, + ["md-vote_outline"] = 0xf0a20, + ["md-vpn"] = 0xf0582, + ["md-vuejs"] = 0xf0844, + ["md-vuetify"] = 0xf0e6d, + ["md-walk"] = 0xf0583, + ["md-wall"] = 0xf07fe, + ["md-wall_fire"] = 0xf1a11, + ["md-wall_sconce"] = 0xf091c, + ["md-wall_sconce_flat"] = 0xf091d, + ["md-wall_sconce_flat_outline"] = 0xf17c9, + ["md-wall_sconce_flat_variant"] = 0xf041c, + ["md-wall_sconce_flat_variant_outline"] = 0xf17ca, + ["md-wall_sconce_outline"] = 0xf17cb, + ["md-wall_sconce_round"] = 0xf0748, + ["md-wall_sconce_round_outline"] = 0xf17cc, + ["md-wall_sconce_round_variant"] = 0xf091e, + ["md-wall_sconce_round_variant_outline"] = 0xf17cd, + ["md-wallet"] = 0xf0584, + ["md-wallet_giftcard"] = 0xf0585, + ["md-wallet_membership"] = 0xf0586, + ["md-wallet_outline"] = 0xf0bdd, + ["md-wallet_plus"] = 0xf0f8e, + ["md-wallet_plus_outline"] = 0xf0f8f, + ["md-wallet_travel"] = 0xf0587, + ["md-wallpaper"] = 0xf0e09, + ["md-wan"] = 0xf0588, + ["md-wardrobe"] = 0xf0f90, + ["md-wardrobe_outline"] = 0xf0f91, + ["md-warehouse"] = 0xf0f81, + ["md-washing_machine"] = 0xf072a, + ["md-washing_machine_alert"] = 0xf11bc, + ["md-washing_machine_off"] = 0xf11bd, + ["md-watch"] = 0xf0589, + ["md-watch_export"] = 0xf058a, + ["md-watch_export_variant"] = 0xf0895, + ["md-watch_import"] = 0xf058b, + ["md-watch_import_variant"] = 0xf0896, + ["md-watch_variant"] = 0xf0897, + ["md-watch_vibrate"] = 0xf06b1, + ["md-watch_vibrate_off"] = 0xf0cda, + ["md-water"] = 0xf058c, + ["md-water_alert"] = 0xf1502, + ["md-water_alert_outline"] = 0xf1503, + ["md-water_boiler"] = 0xf0f92, + ["md-water_boiler_alert"] = 0xf11b3, + ["md-water_boiler_off"] = 0xf11b4, + ["md-water_check"] = 0xf1504, + ["md-water_check_outline"] = 0xf1505, + ["md-water_circle"] = 0xf1806, + ["md-water_minus"] = 0xf1506, + ["md-water_minus_outline"] = 0xf1507, + ["md-water_off"] = 0xf058d, + ["md-water_off_outline"] = 0xf1508, + ["md-water_opacity"] = 0xf1855, + ["md-water_outline"] = 0xf0e0a, + ["md-water_percent"] = 0xf058e, + ["md-water_percent_alert"] = 0xf1509, + ["md-water_plus"] = 0xf150a, + ["md-water_plus_outline"] = 0xf150b, + ["md-water_polo"] = 0xf12a0, + ["md-water_pump"] = 0xf058f, + ["md-water_pump_off"] = 0xf0f93, + ["md-water_remove"] = 0xf150c, + ["md-water_remove_outline"] = 0xf150d, + ["md-water_sync"] = 0xf17c6, + ["md-water_thermometer"] = 0xf1a85, + ["md-water_thermometer_outline"] = 0xf1a86, + ["md-water_well"] = 0xf106b, + ["md-water_well_outline"] = 0xf106c, + ["md-waterfall"] = 0xf1849, + ["md-watering_can"] = 0xf1481, + ["md-watering_can_outline"] = 0xf1482, + ["md-watermark"] = 0xf0612, + ["md-wave"] = 0xf0f2e, + ["md-waveform"] = 0xf147d, + ["md-waves"] = 0xf078d, + ["md-waves_arrow_left"] = 0xf1859, + ["md-waves_arrow_right"] = 0xf185a, + ["md-waves_arrow_up"] = 0xf185b, + ["md-waze"] = 0xf0bde, + ["md-weather_cloudy"] = 0xf0590, + ["md-weather_cloudy_alert"] = 0xf0f2f, + ["md-weather_cloudy_arrow_right"] = 0xf0e6e, + ["md-weather_cloudy_clock"] = 0xf18f6, + ["md-weather_fog"] = 0xf0591, + ["md-weather_hail"] = 0xf0592, + ["md-weather_hazy"] = 0xf0f30, + ["md-weather_hurricane"] = 0xf0898, + ["md-weather_lightning"] = 0xf0593, + ["md-weather_lightning_rainy"] = 0xf067e, + ["md-weather_night"] = 0xf0594, + ["md-weather_night_partly_cloudy"] = 0xf0f31, + ["md-weather_partly_cloudy"] = 0xf0595, + ["md-weather_partly_lightning"] = 0xf0f32, + ["md-weather_partly_rainy"] = 0xf0f33, + ["md-weather_partly_snowy"] = 0xf0f34, + ["md-weather_partly_snowy_rainy"] = 0xf0f35, + ["md-weather_pouring"] = 0xf0596, + ["md-weather_rainy"] = 0xf0597, + ["md-weather_snowy"] = 0xf0598, + ["md-weather_snowy_heavy"] = 0xf0f36, + ["md-weather_snowy_rainy"] = 0xf067f, + ["md-weather_sunny"] = 0xf0599, + ["md-weather_sunny_alert"] = 0xf0f37, + ["md-weather_sunny_off"] = 0xf14e4, + ["md-weather_sunset"] = 0xf059a, + ["md-weather_sunset_down"] = 0xf059b, + ["md-weather_sunset_up"] = 0xf059c, + ["md-weather_tornado"] = 0xf0f38, + ["md-weather_windy"] = 0xf059d, + ["md-weather_windy_variant"] = 0xf059e, + ["md-web"] = 0xf059f, + ["md-web_box"] = 0xf0f94, + ["md-web_cancel"] = 0xf1790, + ["md-web_check"] = 0xf0789, + ["md-web_clock"] = 0xf124a, + ["md-web_minus"] = 0xf10a0, + ["md-web_off"] = 0xf0a8e, + ["md-web_plus"] = 0xf0033, + ["md-web_refresh"] = 0xf1791, + ["md-web_remove"] = 0xf0551, + ["md-web_sync"] = 0xf1792, + ["md-webcam"] = 0xf05a0, + ["md-webcam_off"] = 0xf1737, + ["md-webhook"] = 0xf062f, + ["md-webpack"] = 0xf072b, + ["md-webrtc"] = 0xf1248, + ["md-wechat"] = 0xf0611, + ["md-weight"] = 0xf05a1, + ["md-weight_gram"] = 0xf0d3f, + ["md-weight_kilogram"] = 0xf05a2, + ["md-weight_lifter"] = 0xf115d, + ["md-weight_pound"] = 0xf09b5, + ["md-whatsapp"] = 0xf05a3, + ["md-wheel_barrow"] = 0xf14f2, + ["md-wheelchair"] = 0xf1a87, + ["md-wheelchair_accessibility"] = 0xf05a4, + ["md-whistle"] = 0xf09b6, + ["md-whistle_outline"] = 0xf12bc, + ["md-white_balance_auto"] = 0xf05a5, + ["md-white_balance_incandescent"] = 0xf05a6, + ["md-white_balance_iridescent"] = 0xf05a7, + ["md-white_balance_sunny"] = 0xf05a8, + ["md-widgets"] = 0xf072c, + ["md-widgets_outline"] = 0xf1355, + ["md-wifi"] = 0xf05a9, + ["md-wifi_alert"] = 0xf16b5, + ["md-wifi_arrow_down"] = 0xf16b6, + ["md-wifi_arrow_left"] = 0xf16b7, + ["md-wifi_arrow_left_right"] = 0xf16b8, + ["md-wifi_arrow_right"] = 0xf16b9, + ["md-wifi_arrow_up"] = 0xf16ba, + ["md-wifi_arrow_up_down"] = 0xf16bb, + ["md-wifi_cancel"] = 0xf16bc, + ["md-wifi_check"] = 0xf16bd, + ["md-wifi_cog"] = 0xf16be, + ["md-wifi_lock"] = 0xf16bf, + ["md-wifi_lock_open"] = 0xf16c0, + ["md-wifi_marker"] = 0xf16c1, + ["md-wifi_minus"] = 0xf16c2, + ["md-wifi_off"] = 0xf05aa, + ["md-wifi_plus"] = 0xf16c3, + ["md-wifi_refresh"] = 0xf16c4, + ["md-wifi_remove"] = 0xf16c5, + ["md-wifi_settings"] = 0xf16c6, + ["md-wifi_star"] = 0xf0e0b, + ["md-wifi_strength_1"] = 0xf091f, + ["md-wifi_strength_1_alert"] = 0xf0920, + ["md-wifi_strength_1_lock"] = 0xf0921, + ["md-wifi_strength_1_lock_open"] = 0xf16cb, + ["md-wifi_strength_2"] = 0xf0922, + ["md-wifi_strength_2_alert"] = 0xf0923, + ["md-wifi_strength_2_lock"] = 0xf0924, + ["md-wifi_strength_2_lock_open"] = 0xf16cc, + ["md-wifi_strength_3"] = 0xf0925, + ["md-wifi_strength_3_alert"] = 0xf0926, + ["md-wifi_strength_3_lock"] = 0xf0927, + ["md-wifi_strength_3_lock_open"] = 0xf16cd, + ["md-wifi_strength_4"] = 0xf0928, + ["md-wifi_strength_4_alert"] = 0xf0929, + ["md-wifi_strength_4_lock"] = 0xf092a, + ["md-wifi_strength_4_lock_open"] = 0xf16ce, + ["md-wifi_strength_alert_outline"] = 0xf092b, + ["md-wifi_strength_lock_open_outline"] = 0xf16cf, + ["md-wifi_strength_lock_outline"] = 0xf092c, + ["md-wifi_strength_off"] = 0xf092d, + ["md-wifi_strength_off_outline"] = 0xf092e, + ["md-wifi_strength_outline"] = 0xf092f, + ["md-wifi_sync"] = 0xf16c7, + ["md-wikipedia"] = 0xf05ac, + ["md-wind_power"] = 0xf1a88, + ["md-wind_power_outline"] = 0xf1a89, + ["md-wind_turbine"] = 0xf0da5, + ["md-wind_turbine_alert"] = 0xf19ab, + ["md-wind_turbine_check"] = 0xf19ac, + ["md-window_close"] = 0xf05ad, + ["md-window_closed"] = 0xf05ae, + ["md-window_closed_variant"] = 0xf11db, + ["md-window_maximize"] = 0xf05af, + ["md-window_minimize"] = 0xf05b0, + ["md-window_open"] = 0xf05b1, + ["md-window_open_variant"] = 0xf11dc, + ["md-window_restore"] = 0xf05b2, + ["md-window_shutter"] = 0xf111c, + ["md-window_shutter_alert"] = 0xf111d, + ["md-window_shutter_cog"] = 0xf1a8a, + ["md-window_shutter_open"] = 0xf111e, + ["md-window_shutter_settings"] = 0xf1a8b, + ["md-windsock"] = 0xf15fa, + ["md-wiper"] = 0xf0ae9, + ["md-wiper_wash"] = 0xf0da6, + ["md-wiper_wash_alert"] = 0xf18df, + ["md-wizard_hat"] = 0xf1477, + ["md-wordpress"] = 0xf05b4, + ["md-wrap"] = 0xf05b6, + ["md-wrap_disabled"] = 0xf0bdf, + ["md-wrench"] = 0xf05b7, + ["md-wrench_clock"] = 0xf19a3, + ["md-wrench_outline"] = 0xf0be0, + ["md-xamarin"] = 0xf0845, + ["md-xml"] = 0xf05c0, + ["md-xmpp"] = 0xf07ff, + ["md-yahoo"] = 0xf0b4f, + ["md-yeast"] = 0xf05c1, + ["md-yin_yang"] = 0xf0680, + ["md-yoga"] = 0xf117c, + ["md-youtube"] = 0xf05c3, + ["md-youtube_gaming"] = 0xf0848, + ["md-youtube_studio"] = 0xf0847, + ["md-youtube_subscription"] = 0xf0d40, + ["md-youtube_tv"] = 0xf0448, + ["md-yurt"] = 0xf1516, + ["md-z_wave"] = 0xf0aea, + ["md-zend"] = 0xf0aeb, + ["md-zigbee"] = 0xf0d41, + ["md-zip_box"] = 0xf05c4, + ["md-zip_box_outline"] = 0xf0ffa, + ["md-zip_disk"] = 0xf0a23, + ["md-zodiac_aquarius"] = 0xf0a7d, + ["md-zodiac_aries"] = 0xf0a7e, + ["md-zodiac_cancer"] = 0xf0a7f, + ["md-zodiac_capricorn"] = 0xf0a80, + ["md-zodiac_gemini"] = 0xf0a81, + ["md-zodiac_leo"] = 0xf0a82, + ["md-zodiac_libra"] = 0xf0a83, + ["md-zodiac_pisces"] = 0xf0a84, + ["md-zodiac_sagittarius"] = 0xf0a85, + ["md-zodiac_scorpio"] = 0xf0a86, + ["md-zodiac_taurus"] = 0xf0a87, + ["md-zodiac_virgo"] = 0xf0a88, + ["oct-accessibility"] = 0xf406, + ["oct-accessibility_inset"] = 0xf40b, + ["oct-alert"] = 0xf421, + ["oct-alert_fill"] = 0xf40c, + ["oct-apps"] = 0xf40e, + ["oct-archive"] = 0xf411, + ["oct-arrow_both"] = 0xf416, + ["oct-arrow_down"] = 0xf433, + ["oct-arrow_down_left"] = 0xf424, + ["oct-arrow_down_right"] = 0xf43e, + ["oct-arrow_left"] = 0xf434, + ["oct-arrow_right"] = 0xf432, + ["oct-arrow_switch"] = 0xf443, + ["oct-arrow_up"] = 0xf431, + ["oct-arrow_up_left"] = 0xf45c, + ["oct-arrow_up_right"] = 0xf46c, + ["oct-beaker"] = 0xf499, + ["oct-bell"] = 0xf49a, + ["oct-bell_fill"] = 0xf476, + ["oct-bell_slash"] = 0xf478, + ["oct-blocked"] = 0xf479, + ["oct-bold"] = 0xf49d, + ["oct-book"] = 0xf405, + ["oct-bookmark"] = 0xf461, + ["oct-bookmark_fill"] = 0xf47a, + ["oct-bookmark_slash"] = 0xf533, + ["oct-bookmark_slash_fill"] = 0xf493, + ["oct-briefcase"] = 0xf491, + ["oct-broadcast"] = 0xf43c, + ["oct-browser"] = 0xf488, + ["oct-bug"] = 0xf46f, + ["oct-cache"] = 0xf49b, + ["oct-calendar"] = 0xf455, + ["oct-check"] = 0xf42e, + ["oct-check_circle"] = 0xf49e, + ["oct-check_circle_fill"] = 0xf4a4, + ["oct-checkbox"] = 0xf4a7, + ["oct-checklist"] = 0xf45e, + ["oct-chevron_down"] = 0xf47c, + ["oct-chevron_left"] = 0xf47d, + ["oct-chevron_right"] = 0xf460, + ["oct-chevron_up"] = 0xf47b, + ["oct-circle"] = 0xf4aa, + ["oct-circle_slash"] = 0xf468, + ["oct-clock"] = 0xf43a, + ["oct-clock_fill"] = 0xf4ab, + ["oct-cloud"] = 0xf4ac, + ["oct-cloud_offline"] = 0xf4ad, + ["oct-code"] = 0xf44f, + ["oct-code_of_conduct"] = 0xf4ae, + ["oct-code_review"] = 0xf4af, + ["oct-code_square"] = 0xf4b0, + ["oct-codescan"] = 0xf4b1, + ["oct-codescan_checkmark"] = 0xf4b2, + ["oct-codespaces"] = 0xf4b3, + ["oct-columns"] = 0xf4b4, + ["oct-command_palette"] = 0xf4b5, + ["oct-comment"] = 0xf41f, + ["oct-comment_discussion"] = 0xf442, + ["oct-commit"] = 0xf4b6, + ["oct-container"] = 0xf4b7, + ["oct-copilot"] = 0xf4b8, + ["oct-copilot_error"] = 0xf4b9, + ["oct-copilot_warning"] = 0xf4ba, + ["oct-copy"] = 0xf4bb, + ["oct-cpu"] = 0xf4bc, + ["oct-credit_card"] = 0xf439, + ["oct-cross_reference"] = 0xf4bd, + ["oct-dash"] = 0xf48b, + ["oct-database"] = 0xf472, + ["oct-dependabot"] = 0xf4be, + ["oct-desktop_download"] = 0xf498, + ["oct-device_camera"] = 0xf446, + ["oct-device_camera_video"] = 0xf447, + ["oct-device_desktop"] = 0xf4a9, + ["oct-device_mobile"] = 0xf42c, + ["oct-diamond"] = 0xf4bf, + ["oct-diff"] = 0xf440, + ["oct-diff_added"] = 0xf457, + ["oct-diff_ignored"] = 0xf474, + ["oct-diff_modified"] = 0xf459, + ["oct-diff_removed"] = 0xf458, + ["oct-diff_renamed"] = 0xf45a, + ["oct-discussion_closed"] = 0xf4c0, + ["oct-discussion_duplicate"] = 0xf4c1, + ["oct-discussion_outdated"] = 0xf4c2, + ["oct-dot"] = 0xf4c3, + ["oct-dot_fill"] = 0xf444, + ["oct-download"] = 0xf409, + ["oct-duplicate"] = 0xf4c4, + ["oct-ellipsis"] = 0xf475, + ["oct-eye"] = 0xf441, + ["oct-eye_closed"] = 0xf4c5, + ["oct-feed_discussion"] = 0xf4c6, + ["oct-feed_forked"] = 0xf4c7, + ["oct-feed_heart"] = 0xf4c8, + ["oct-feed_merged"] = 0xf4c9, + ["oct-feed_person"] = 0xf4ca, + ["oct-feed_repo"] = 0xf4cb, + ["oct-feed_rocket"] = 0xf4cc, + ["oct-feed_star"] = 0xf4cd, + ["oct-feed_tag"] = 0xf4ce, + ["oct-feed_trophy"] = 0xf4cf, + ["oct-file"] = 0xf4a5, + ["oct-file_added"] = 0xf4d0, + ["oct-file_badge"] = 0xf4d1, + ["oct-file_binary"] = 0xf471, + ["oct-file_code"] = 0xf40d, + ["oct-file_diff"] = 0xf4d2, + ["oct-file_directory"] = 0xf413, + ["oct-file_directory_fill"] = 0xf4d3, + ["oct-file_directory_open_fill"] = 0xf4d4, + ["oct-file_media"] = 0xf40f, + ["oct-file_moved"] = 0xf4d5, + ["oct-file_removed"] = 0xf4d6, + ["oct-file_submodule"] = 0xf414, + ["oct-file_symlink_directory"] = 0xf482, + ["oct-file_symlink_file"] = 0xf481, + ["oct-file_zip"] = 0xf410, + ["oct-filter"] = 0xf4d7, + ["oct-fiscal_host"] = 0xf4d8, + ["oct-flame"] = 0xf490, + ["oct-fold"] = 0xf48c, + ["oct-fold_down"] = 0xf4d9, + ["oct-fold_up"] = 0xf4da, + ["oct-gear"] = 0xf423, + ["oct-gift"] = 0xf436, + ["oct-git_branch"] = 0xf418, + ["oct-git_commit"] = 0xf417, + ["oct-git_compare"] = 0xf47f, + ["oct-git_merge"] = 0xf419, + ["oct-git_merge_queue"] = 0xf4db, + ["oct-git_pull_request"] = 0xf407, + ["oct-git_pull_request_closed"] = 0xf4dc, + ["oct-git_pull_request_draft"] = 0xf4dd, + ["oct-globe"] = 0xf484, + ["oct-goal"] = 0xf4de, + ["oct-grabber"] = 0xf4a6, + ["oct-graph"] = 0xf437, + ["oct-hash"] = 0xf4df, + ["oct-heading"] = 0xf4e0, + ["oct-heart"] = 0x2665, + ["oct-heart_fill"] = 0xf4e1, + ["oct-history"] = 0xf464, + ["oct-home"] = 0xf46d, + ["oct-home_fill"] = 0xf4e2, + ["oct-horizontal_rule"] = 0xf45b, + ["oct-hourglass"] = 0xf4e3, + ["oct-hubot"] = 0xf477, + ["oct-id_badge"] = 0xf4e4, + ["oct-image"] = 0xf4e5, + ["oct-inbox"] = 0xf48d, + ["oct-infinity"] = 0xf4e6, + ["oct-info"] = 0xf449, + ["oct-issue_closed"] = 0xf41d, + ["oct-issue_draft"] = 0xf4e7, + ["oct-issue_opened"] = 0xf41b, + ["oct-issue_reopened"] = 0xf41c, + ["oct-issue_tracked_by"] = 0xf4e8, + ["oct-issue_tracks"] = 0xf4e9, + ["oct-italic"] = 0xf49f, + ["oct-iterations"] = 0xf4ea, + ["oct-kebab_horizontal"] = 0xf4eb, + ["oct-key"] = 0xf43d, + ["oct-key_asterisk"] = 0xf4ec, + ["oct-law"] = 0xf495, + ["oct-light_bulb"] = 0xf400, + ["oct-link"] = 0xf44c, + ["oct-link_external"] = 0xf465, + ["oct-list_ordered"] = 0xf452, + ["oct-list_unordered"] = 0xf451, + ["oct-location"] = 0xf450, + ["oct-lock"] = 0xf456, + ["oct-log"] = 0xf4ed, + ["oct-logo_gist"] = 0xf480, + ["oct-logo_github"] = 0xf470, + ["oct-mail"] = 0xf42f, + ["oct-mark_github"] = 0xf408, + ["oct-markdown"] = 0xf48a, + ["oct-megaphone"] = 0xf45f, + ["oct-mention"] = 0xf486, + ["oct-meter"] = 0xf463, + ["oct-milestone"] = 0xf45d, + ["oct-mirror"] = 0xf41a, + ["oct-moon"] = 0xf4ee, + ["oct-mortar_board"] = 0xf494, + ["oct-move_to_bottom"] = 0xf4ef, + ["oct-move_to_end"] = 0xf4f0, + ["oct-move_to_start"] = 0xf4f1, + ["oct-move_to_top"] = 0xf4f2, + ["oct-multi_select"] = 0xf4f3, + ["oct-mute"] = 0xf466, + ["oct-no_entry"] = 0xf4f4, + ["oct-north_star"] = 0xf4f5, + ["oct-note"] = 0xf4f6, + ["oct-number"] = 0xf4f7, + ["oct-organization"] = 0xf42b, + ["oct-package"] = 0xf487, + ["oct-package_dependencies"] = 0xf4f8, + ["oct-package_dependents"] = 0xf4f9, + ["oct-paintbrush"] = 0xf48f, + ["oct-paper_airplane"] = 0xf4fa, + ["oct-paperclip"] = 0xf4fb, + ["oct-passkey_fill"] = 0xf4fc, + ["oct-paste"] = 0xf429, + ["oct-pencil"] = 0xf448, + ["oct-people"] = 0xf4fd, + ["oct-person"] = 0xf415, + ["oct-person_add"] = 0xf4fe, + ["oct-person_fill"] = 0xf4ff, + ["oct-pin"] = 0xf435, + ["oct-play"] = 0xf500, + ["oct-plug"] = 0xf492, + ["oct-plus"] = 0xf44d, + ["oct-plus_circle"] = 0xf501, + ["oct-project"] = 0xf502, + ["oct-project_roadmap"] = 0xf503, + ["oct-project_symlink"] = 0xf504, + ["oct-project_template"] = 0xf505, + ["oct-pulse"] = 0xf469, + ["oct-question"] = 0xf420, + ["oct-quote"] = 0xf453, + ["oct-read"] = 0xf430, + ["oct-rel_file_path"] = 0xf506, + ["oct-reply"] = 0xf4a8, + ["oct-repo"] = 0xf401, + ["oct-repo_clone"] = 0xf43f, + ["oct-repo_deleted"] = 0xf507, + ["oct-repo_forked"] = 0xf402, + ["oct-repo_locked"] = 0xf508, + ["oct-repo_pull"] = 0xf404, + ["oct-repo_push"] = 0xf403, + ["oct-repo_template"] = 0xf509, + ["oct-report"] = 0xf50a, + ["oct-rocket"] = 0xf427, + ["oct-rows"] = 0xf50b, + ["oct-rss"] = 0xf428, + ["oct-ruby"] = 0xf43b, + ["oct-screen_full"] = 0xf50c, + ["oct-screen_normal"] = 0xf50d, + ["oct-search"] = 0xf422, + ["oct-server"] = 0xf473, + ["oct-share"] = 0xf50e, + ["oct-share_android"] = 0xf50f, + ["oct-shield"] = 0xf49c, + ["oct-shield_check"] = 0xf510, + ["oct-shield_lock"] = 0xf511, + ["oct-shield_slash"] = 0xf512, + ["oct-shield_x"] = 0xf513, + ["oct-sidebar_collapse"] = 0xf514, + ["oct-sidebar_expand"] = 0xf515, + ["oct-sign_in"] = 0xf42a, + ["oct-sign_out"] = 0xf426, + ["oct-single_select"] = 0xf516, + ["oct-skip"] = 0xf517, + ["oct-skip_fill"] = 0xf518, + ["oct-sliders"] = 0xf462, + ["oct-smiley"] = 0xf4a2, + ["oct-sort_asc"] = 0xf519, + ["oct-sort_desc"] = 0xf51a, + ["oct-sparkle_fill"] = 0xf51b, + ["oct-sponsor_tiers"] = 0xf51c, + ["oct-square"] = 0xf51d, + ["oct-square_fill"] = 0xf445, + ["oct-squirrel"] = 0xf483, + ["oct-stack"] = 0xf51e, + ["oct-star"] = 0xf41e, + ["oct-star_fill"] = 0xf51f, + ["oct-stop"] = 0xf46e, + ["oct-stopwatch"] = 0xf520, + ["oct-strikethrough"] = 0xf521, + ["oct-sun"] = 0xf522, + ["oct-sync"] = 0xf46a, + ["oct-tab"] = 0xf523, + ["oct-tab_external"] = 0xf524, + ["oct-table"] = 0xf525, + ["oct-tag"] = 0xf412, + ["oct-tasklist"] = 0xf4a0, + ["oct-telescope"] = 0xf46b, + ["oct-telescope_fill"] = 0xf526, + ["oct-terminal"] = 0xf489, + ["oct-three_bars"] = 0xf44e, + ["oct-thumbsdown"] = 0xf497, + ["oct-thumbsup"] = 0xf496, + ["oct-tools"] = 0xf425, + ["oct-trash"] = 0xf48e, + ["oct-triangle_down"] = 0xf44b, + ["oct-triangle_left"] = 0xf438, + ["oct-triangle_right"] = 0xf44a, + ["oct-triangle_up"] = 0xf47e, + ["oct-trophy"] = 0xf527, + ["oct-typography"] = 0xf528, + ["oct-unfold"] = 0xf42d, + ["oct-unlink"] = 0xf529, + ["oct-unlock"] = 0xf52a, + ["oct-unmute"] = 0xf485, + ["oct-unread"] = 0xf52b, + ["oct-unverified"] = 0xf4a3, + ["oct-upload"] = 0xf40a, + ["oct-verified"] = 0xf4a1, + ["oct-versions"] = 0xf454, + ["oct-video"] = 0xf52c, + ["oct-webhook"] = 0xf52d, + ["oct-workflow"] = 0xf52e, + ["oct-x"] = 0xf467, + ["oct-x_circle"] = 0xf52f, + ["oct-x_circle_fill"] = 0xf530, + ["oct-zap"] = 0x26a1, + ["oct-zoom_in"] = 0xf531, + ["oct-zoom_out"] = 0xf532, + ["pl-branch"] = 0xe0a0, + ["pl-current_line"] = 0xe0a1, + ["pl-hostname"] = 0xe0a2, + ["pl-left_hard_divider"] = 0xe0b0, + ["pl-left_soft_divider"] = 0xe0b1, + ["pl-line_number"] = 0xe0a1, + ["pl-readonly"] = 0xe0a2, + ["pl-right_hard_divider"] = 0xe0b2, + ["pl-right_soft_divider"] = 0xe0b3, + ["ple-backslash_separator"] = 0xe0b9, + ["ple-backslash_separator_redundant"] = 0xe0bf, + ["ple-column_number"] = 0xe0a3, + ["ple-current_column"] = 0xe0a3, + ["ple-flame_thick"] = 0xe0c0, + ["ple-flame_thick_mirrored"] = 0xe0c2, + ["ple-flame_thin"] = 0xe0c1, + ["ple-flame_thin_mirrored"] = 0xe0c3, + ["ple-forwardslash_separator"] = 0xe0bb, + ["ple-forwardslash_separator_redundant"] = 0xe0bd, + ["ple-honeycomb"] = 0xe0cc, + ["ple-honeycomb_outline"] = 0xe0cd, + ["ple-ice_waveform"] = 0xe0c8, + ["ple-ice_waveform_mirrored"] = 0xe0ca, + ["ple-left_half_circle_thick"] = 0xe0b6, + ["ple-left_half_circle_thin"] = 0xe0b7, + ["ple-lego_block_facing"] = 0xe0d0, + ["ple-lego_block_sideways"] = 0xe0d1, + ["ple-lego_separator"] = 0xe0ce, + ["ple-lego_separator_thin"] = 0xe0cf, + ["ple-lower_left_triangle"] = 0xe0b8, + ["ple-lower_right_triangle"] = 0xe0ba, + ["ple-pixelated_squares_big"] = 0xe0c6, + ["ple-pixelated_squares_big_mirrored"] = 0xe0c7, + ["ple-pixelated_squares_small"] = 0xe0c4, + ["ple-pixelated_squares_small_mirrored"] = 0xe0c5, + ["ple-right_half_circle_thick"] = 0xe0b4, + ["ple-right_half_circle_thin"] = 0xe0b5, + ["ple-trapezoid_top_bottom"] = 0xe0d2, + ["ple-trapezoid_top_bottom_mirrored"] = 0xe0d4, + ["ple-upper_left_triangle"] = 0xe0bc, + ["ple-upper_right_triangle"] = 0xe0be, + ["pom-away"] = 0xe007, + ["pom-clean_code"] = 0xe000, + ["pom-external_interruption"] = 0xe00a, + ["pom-internal_interruption"] = 0xe009, + ["pom-long_pause"] = 0xe006, + ["pom-pair_programming"] = 0xe008, + ["pom-pomodoro_done"] = 0xe001, + ["pom-pomodoro_estimated"] = 0xe002, + ["pom-pomodoro_squashed"] = 0xe004, + ["pom-pomodoro_ticking"] = 0xe003, + ["pom-short_pause"] = 0xe005, + ["seti-apple"] = 0xe635, + ["seti-argdown"] = 0xe636, + ["seti-asm"] = 0xe637, + ["seti-audio"] = 0xe638, + ["seti-babel"] = 0xe639, + ["seti-bazel"] = 0xe63a, + ["seti-bicep"] = 0xe63b, + ["seti-bower"] = 0xe61a, + ["seti-bsl"] = 0xe63c, + ["seti-c"] = 0xe649, + ["seti-c_sharp"] = 0xe648, + ["seti-cake"] = 0xe63e, + ["seti-cake_php"] = 0xe63d, + ["seti-checkbox"] = 0xe63f, + ["seti-checkbox_unchecked"] = 0xe640, + ["seti-cjsx"] = 0xe61b, + ["seti-clock"] = 0xe641, + ["seti-clojure"] = 0xe642, + ["seti-code_climate"] = 0xe643, + ["seti-code_search"] = 0xe644, + ["seti-coffee"] = 0xe61b, + ["seti-coldfusion"] = 0xe645, + ["seti-config"] = 0xe615, + ["seti-cpp"] = 0xe646, + ["seti-crystal"] = 0xe62f, + ["seti-crystal_embedded"] = 0xe647, + ["seti-css"] = 0xe614, + ["seti-csv"] = 0xe64a, + ["seti-cu"] = 0xe64b, + ["seti-d"] = 0xe651, + ["seti-dart"] = 0xe64c, + ["seti-db"] = 0xe64d, + ["seti-default"] = 0xe64e, + ["seti-deprecation_cop"] = 0xe64f, + ["seti-docker"] = 0xe650, + ["seti-editorconfig"] = 0xe652, + ["seti-ejs"] = 0xe618, + ["seti-elixir"] = 0xe62d, + ["seti-elixir_script"] = 0xe653, + ["seti-elm"] = 0xe62c, + ["seti-error"] = 0xe654, + ["seti-eslint"] = 0xe655, + ["seti-ethereum"] = 0xe656, + ["seti-f_sharp"] = 0xe65a, + ["seti-favicon"] = 0xe623, + ["seti-firebase"] = 0xe657, + ["seti-firefox"] = 0xe658, + ["seti-folder"] = 0xe613, + ["seti-font"] = 0xe659, + ["seti-git"] = 0xe65d, + ["seti-git_folder"] = 0xe65d, + ["seti-git_ignore"] = 0xe65d, + ["seti-github"] = 0xe65b, + ["seti-gitlab"] = 0xe65c, + ["seti-go"] = 0xe627, + ["seti-go2"] = 0xe65e, + ["seti-godot"] = 0xe65f, + ["seti-gradle"] = 0xe660, + ["seti-grails"] = 0xe661, + ["seti-graphql"] = 0xe662, + ["seti-grunt"] = 0xe611, + ["seti-gulp"] = 0xe610, + ["seti-hacklang"] = 0xe663, + ["seti-haml"] = 0xe664, + ["seti-happenings"] = 0xe665, + ["seti-haskell"] = 0xe61f, + ["seti-haxe"] = 0xe666, + ["seti-heroku"] = 0xe607, + ["seti-hex"] = 0xe667, + ["seti-home"] = 0xe617, + ["seti-html"] = 0xe60e, + ["seti-ignored"] = 0xe668, + ["seti-illustrator"] = 0xe669, + ["seti-image"] = 0xe60d, + ["seti-info"] = 0xe66a, + ["seti-ionic"] = 0xe66b, + ["seti-jade"] = 0xe66c, + ["seti-java"] = 0xe66d, + ["seti-javascript"] = 0xe60c, + ["seti-jenkins"] = 0xe66e, + ["seti-jinja"] = 0xe66f, + ["seti-json"] = 0xe60b, + ["seti-julia"] = 0xe624, + ["seti-karma"] = 0xe622, + ["seti-kotlin"] = 0xe634, + ["seti-less"] = 0xe60b, + ["seti-license"] = 0xe60a, + ["seti-liquid"] = 0xe670, + ["seti-livescript"] = 0xe671, + ["seti-lock"] = 0xe672, + ["seti-lua"] = 0xe620, + ["seti-makefile"] = 0xe673, + ["seti-markdown"] = 0xe609, + ["seti-maven"] = 0xe674, + ["seti-mdo"] = 0xe675, + ["seti-mustache"] = 0xe60f, + ["seti-new_file"] = 0xe676, + ["seti-nim"] = 0xe677, + ["seti-notebook"] = 0xe678, + ["seti-npm"] = 0xe616, + ["seti-npm_ignored"] = 0xe616, + ["seti-nunjucks"] = 0xe679, + ["seti-ocaml"] = 0xe67a, + ["seti-odata"] = 0xe67b, + ["seti-pddl"] = 0xe67c, + ["seti-pdf"] = 0xe67d, + ["seti-perl"] = 0xe67e, + ["seti-photoshop"] = 0xe67f, + ["seti-php"] = 0xe608, + ["seti-pipeline"] = 0xe680, + ["seti-plan"] = 0xe681, + ["seti-platformio"] = 0xe682, + ["seti-play_arrow"] = 0xe602, + ["seti-powershell"] = 0xe683, + ["seti-prisma"] = 0xe684, + ["seti-project"] = 0xe601, + ["seti-prolog"] = 0xe685, + ["seti-pug"] = 0xe686, + ["seti-puppet"] = 0xe631, + ["seti-purescript"] = 0xe630, + ["seti-python"] = 0xe606, + ["seti-r"] = 0xe68a, + ["seti-rails"] = 0xe604, + ["seti-react"] = 0xe625, + ["seti-reasonml"] = 0xe687, + ["seti-rescript"] = 0xe688, + ["seti-rollup"] = 0xe689, + ["seti-ruby"] = 0xe605, + ["seti-rust"] = 0xe68b, + ["seti-salesforce"] = 0xe68c, + ["seti-sass"] = 0xe603, + ["seti-sbt"] = 0xe68d, + ["seti-scala"] = 0xe68e, + ["seti-search"] = 0xe68f, + ["seti-settings"] = 0xe690, + ["seti-shell"] = 0xe691, + ["seti-slim"] = 0xe692, + ["seti-smarty"] = 0xe693, + ["seti-spring"] = 0xe694, + ["seti-stylelint"] = 0xe695, + ["seti-stylus"] = 0xe600, + ["seti-sublime"] = 0xe696, + ["seti-svelte"] = 0xe697, + ["seti-svg"] = 0xe698, + ["seti-swift"] = 0xe699, + ["seti-terraform"] = 0xe69a, + ["seti-tex"] = 0xe69b, + ["seti-text"] = 0xe612, + ["seti-time_cop"] = 0xe641, + ["seti-todo"] = 0xe69c, + ["seti-tsconfig"] = 0xe69d, + ["seti-twig"] = 0xe61c, + ["seti-typescript"] = 0xe628, + ["seti-vala"] = 0xe69e, + ["seti-video"] = 0xe69f, + ["seti-vue"] = 0xe6a0, + ["seti-wasm"] = 0xe6a1, + ["seti-wat"] = 0xe6a2, + ["seti-webpack"] = 0xe6a3, + ["seti-wgt"] = 0xe6a4, + ["seti-word"] = 0xe6a5, + ["seti-xls"] = 0xe6a6, + ["seti-xml"] = 0xe619, + ["seti-yarn"] = 0xe6a7, + ["seti-yml"] = 0xe6a8, + ["seti-zig"] = 0xe6a9, + ["seti-zip"] = 0xe6aa, + ["weather-alien"] = 0xe36e, + ["weather-aliens"] = 0xe345, + ["weather-barometer"] = 0xe372, + ["weather-celsius"] = 0xe339, + ["weather-cloud"] = 0xe33d, + ["weather-cloud_down"] = 0xe33a, + ["weather-cloud_refresh"] = 0xe33b, + ["weather-cloud_up"] = 0xe33c, + ["weather-cloudy"] = 0xe312, + ["weather-cloudy_gusts"] = 0xe310, + ["weather-cloudy_windy"] = 0xe311, + ["weather-day_cloudy"] = 0xe302, + ["weather-day_cloudy_gusts"] = 0xe300, + ["weather-day_cloudy_high"] = 0xe376, + ["weather-day_cloudy_windy"] = 0xe301, + ["weather-day_fog"] = 0xe303, + ["weather-day_hail"] = 0xe304, + ["weather-day_haze"] = 0xe3ae, + ["weather-day_light_wind"] = 0xe3bc, + ["weather-day_lightning"] = 0xe305, + ["weather-day_rain"] = 0xe308, + ["weather-day_rain_mix"] = 0xe306, + ["weather-day_rain_wind"] = 0xe307, + ["weather-day_showers"] = 0xe309, + ["weather-day_sleet"] = 0xe3aa, + ["weather-day_sleet_storm"] = 0xe362, + ["weather-day_snow"] = 0xe30a, + ["weather-day_snow_thunderstorm"] = 0xe365, + ["weather-day_snow_wind"] = 0xe35f, + ["weather-day_sprinkle"] = 0xe30b, + ["weather-day_storm_showers"] = 0xe30e, + ["weather-day_sunny"] = 0xe30d, + ["weather-day_sunny_overcast"] = 0xe30c, + ["weather-day_thunderstorm"] = 0xe30f, + ["weather-day_windy"] = 0xe37d, + ["weather-degrees"] = 0xe33e, + ["weather-direction_down"] = 0xe340, + ["weather-direction_down_left"] = 0xe33f, + ["weather-direction_down_right"] = 0xe380, + ["weather-direction_left"] = 0xe344, + ["weather-direction_right"] = 0xe349, + ["weather-direction_up"] = 0xe353, + ["weather-direction_up_left"] = 0xe37f, + ["weather-direction_up_right"] = 0xe352, + ["weather-dust"] = 0xe35d, + ["weather-earthquake"] = 0xe3be, + ["weather-fahrenheit"] = 0xe341, + ["weather-fire"] = 0xe3bf, + ["weather-flood"] = 0xe375, + ["weather-fog"] = 0xe313, + ["weather-gale_warning"] = 0xe3c5, + ["weather-hail"] = 0xe314, + ["weather-horizon"] = 0xe343, + ["weather-horizon_alt"] = 0xe342, + ["weather-hot"] = 0xe36b, + ["weather-humidity"] = 0xe373, + ["weather-hurricane"] = 0xe36c, + ["weather-hurricane_warning"] = 0xe3c7, + ["weather-lightning"] = 0xe315, + ["weather-lunar_eclipse"] = 0xe369, + ["weather-meteor"] = 0xe36a, + ["weather-moon_alt_first_quarter"] = 0xe3ce, + ["weather-moon_alt_full"] = 0xe3d5, + ["weather-moon_alt_new"] = 0xe3e3, + ["weather-moon_alt_third_quarter"] = 0xe3dc, + ["weather-moon_alt_waning_crescent_1"] = 0xe3dd, + ["weather-moon_alt_waning_crescent_2"] = 0xe3de, + ["weather-moon_alt_waning_crescent_3"] = 0xe3df, + ["weather-moon_alt_waning_crescent_4"] = 0xe3e0, + ["weather-moon_alt_waning_crescent_5"] = 0xe3e1, + ["weather-moon_alt_waning_crescent_6"] = 0xe3e2, + ["weather-moon_alt_waning_gibbous_1"] = 0xe3d6, + ["weather-moon_alt_waning_gibbous_2"] = 0xe3d7, + ["weather-moon_alt_waning_gibbous_3"] = 0xe3d8, + ["weather-moon_alt_waning_gibbous_4"] = 0xe3d9, + ["weather-moon_alt_waning_gibbous_5"] = 0xe3da, + ["weather-moon_alt_waning_gibbous_6"] = 0xe3db, + ["weather-moon_alt_waxing_crescent_1"] = 0xe3c8, + ["weather-moon_alt_waxing_crescent_2"] = 0xe3c9, + ["weather-moon_alt_waxing_crescent_3"] = 0xe3ca, + ["weather-moon_alt_waxing_crescent_4"] = 0xe3cb, + ["weather-moon_alt_waxing_crescent_5"] = 0xe3cc, + ["weather-moon_alt_waxing_crescent_6"] = 0xe3cd, + ["weather-moon_alt_waxing_gibbous_1"] = 0xe3cf, + ["weather-moon_alt_waxing_gibbous_2"] = 0xe3d0, + ["weather-moon_alt_waxing_gibbous_3"] = 0xe3d1, + ["weather-moon_alt_waxing_gibbous_4"] = 0xe3d2, + ["weather-moon_alt_waxing_gibbous_5"] = 0xe3d3, + ["weather-moon_alt_waxing_gibbous_6"] = 0xe3d4, + ["weather-moon_first_quarter"] = 0xe394, + ["weather-moon_full"] = 0xe39b, + ["weather-moon_new"] = 0xe38d, + ["weather-moon_third_quarter"] = 0xe3a2, + ["weather-moon_waning_crescent_1"] = 0xe3a3, + ["weather-moon_waning_crescent_2"] = 0xe3a4, + ["weather-moon_waning_crescent_3"] = 0xe3a5, + ["weather-moon_waning_crescent_4"] = 0xe3a6, + ["weather-moon_waning_crescent_5"] = 0xe3a7, + ["weather-moon_waning_crescent_6"] = 0xe3a8, + ["weather-moon_waning_gibbous_1"] = 0xe39c, + ["weather-moon_waning_gibbous_2"] = 0xe39d, + ["weather-moon_waning_gibbous_3"] = 0xe39e, + ["weather-moon_waning_gibbous_4"] = 0xe39f, + ["weather-moon_waning_gibbous_5"] = 0xe3a0, + ["weather-moon_waning_gibbous_6"] = 0xe3a1, + ["weather-moon_waxing_crescent_1"] = 0xe38e, + ["weather-moon_waxing_crescent_2"] = 0xe38f, + ["weather-moon_waxing_crescent_3"] = 0xe390, + ["weather-moon_waxing_crescent_4"] = 0xe391, + ["weather-moon_waxing_crescent_5"] = 0xe392, + ["weather-moon_waxing_crescent_6"] = 0xe393, + ["weather-moon_waxing_gibbous_1"] = 0xe395, + ["weather-moon_waxing_gibbous_2"] = 0xe396, + ["weather-moon_waxing_gibbous_3"] = 0xe397, + ["weather-moon_waxing_gibbous_4"] = 0xe398, + ["weather-moon_waxing_gibbous_5"] = 0xe399, + ["weather-moon_waxing_gibbous_6"] = 0xe39a, + ["weather-moonrise"] = 0xe3c1, + ["weather-moonset"] = 0xe3c2, + ["weather-na"] = 0xe374, + ["weather-night_alt_cloudy"] = 0xe37e, + ["weather-night_alt_cloudy_gusts"] = 0xe31f, + ["weather-night_alt_cloudy_high"] = 0xe377, + ["weather-night_alt_cloudy_windy"] = 0xe320, + ["weather-night_alt_hail"] = 0xe321, + ["weather-night_alt_lightning"] = 0xe322, + ["weather-night_alt_partly_cloudy"] = 0xe379, + ["weather-night_alt_rain"] = 0xe325, + ["weather-night_alt_rain_mix"] = 0xe323, + ["weather-night_alt_rain_wind"] = 0xe324, + ["weather-night_alt_showers"] = 0xe326, + ["weather-night_alt_sleet"] = 0xe3ac, + ["weather-night_alt_sleet_storm"] = 0xe364, + ["weather-night_alt_snow"] = 0xe327, + ["weather-night_alt_snow_thunderstorm"] = 0xe367, + ["weather-night_alt_snow_wind"] = 0xe361, + ["weather-night_alt_sprinkle"] = 0xe328, + ["weather-night_alt_storm_showers"] = 0xe329, + ["weather-night_alt_thunderstorm"] = 0xe32a, + ["weather-night_clear"] = 0xe32b, + ["weather-night_cloudy"] = 0xe32e, + ["weather-night_cloudy_gusts"] = 0xe32c, + ["weather-night_cloudy_high"] = 0xe378, + ["weather-night_cloudy_windy"] = 0xe32d, + ["weather-night_fog"] = 0xe346, + ["weather-night_hail"] = 0xe32f, + ["weather-night_lightning"] = 0xe330, + ["weather-night_partly_cloudy"] = 0xe37b, + ["weather-night_rain"] = 0xe333, + ["weather-night_rain_mix"] = 0xe331, + ["weather-night_rain_wind"] = 0xe332, + ["weather-night_showers"] = 0xe334, + ["weather-night_sleet"] = 0xe3ab, + ["weather-night_sleet_storm"] = 0xe363, + ["weather-night_snow"] = 0xe335, + ["weather-night_snow_thunderstorm"] = 0xe366, + ["weather-night_snow_wind"] = 0xe360, + ["weather-night_sprinkle"] = 0xe336, + ["weather-night_storm_showers"] = 0xe337, + ["weather-night_thunderstorm"] = 0xe338, + ["weather-rain"] = 0xe318, + ["weather-rain_mix"] = 0xe316, + ["weather-rain_wind"] = 0xe317, + ["weather-raindrop"] = 0xe371, + ["weather-raindrops"] = 0xe34a, + ["weather-refresh"] = 0xe348, + ["weather-refresh_alt"] = 0xe347, + ["weather-sandstorm"] = 0xe37a, + ["weather-showers"] = 0xe319, + ["weather-sleet"] = 0xe3ad, + ["weather-small_craft_advisory"] = 0xe3c4, + ["weather-smog"] = 0xe36d, + ["weather-smoke"] = 0xe35c, + ["weather-snow"] = 0xe31a, + ["weather-snow_wind"] = 0xe35e, + ["weather-snowflake_cold"] = 0xe36f, + ["weather-solar_eclipse"] = 0xe368, + ["weather-sprinkle"] = 0xe31b, + ["weather-stars"] = 0xe370, + ["weather-storm_showers"] = 0xe31c, + ["weather-storm_warning"] = 0xe3c6, + ["weather-strong_wind"] = 0xe34b, + ["weather-sunrise"] = 0xe34c, + ["weather-sunset"] = 0xe34d, + ["weather-thermometer"] = 0xe350, + ["weather-thermometer_exterior"] = 0xe34e, + ["weather-thermometer_internal"] = 0xe34f, + ["weather-thunderstorm"] = 0xe31d, + ["weather-time_1"] = 0xe382, + ["weather-time_10"] = 0xe38b, + ["weather-time_11"] = 0xe38c, + ["weather-time_12"] = 0xe381, + ["weather-time_2"] = 0xe383, + ["weather-time_3"] = 0xe384, + ["weather-time_4"] = 0xe385, + ["weather-time_5"] = 0xe386, + ["weather-time_6"] = 0xe387, + ["weather-time_7"] = 0xe388, + ["weather-time_8"] = 0xe389, + ["weather-time_9"] = 0xe38a, + ["weather-tornado"] = 0xe351, + ["weather-train"] = 0xe3c3, + ["weather-tsunami"] = 0xe3bd, + ["weather-umbrella"] = 0xe37c, + ["weather-volcano"] = 0xe3c0, + ["weather-wind_beaufort_0"] = 0xe3af, + ["weather-wind_beaufort_1"] = 0xe3b0, + ["weather-wind_beaufort_10"] = 0xe3b9, + ["weather-wind_beaufort_11"] = 0xe3ba, + ["weather-wind_beaufort_12"] = 0xe3bb, + ["weather-wind_beaufort_2"] = 0xe3b1, + ["weather-wind_beaufort_3"] = 0xe3b2, + ["weather-wind_beaufort_4"] = 0xe3b3, + ["weather-wind_beaufort_5"] = 0xe3b4, + ["weather-wind_beaufort_6"] = 0xe3b5, + ["weather-wind_beaufort_7"] = 0xe3b6, + ["weather-wind_beaufort_8"] = 0xe3b7, + ["weather-wind_beaufort_9"] = 0xe3b8, + ["weather-wind_direction"] = 0xe3a9, + ["weather-wind_east"] = 0xe35b, + ["weather-wind_north"] = 0xe35a, + ["weather-wind_north_east"] = 0xe359, + ["weather-wind_north_west"] = 0xe358, + ["weather-wind_south"] = 0xe357, + ["weather-wind_south_east"] = 0xe356, + ["weather-wind_south_west"] = 0xe355, + ["weather-wind_west"] = 0xe354, + ["weather-windy"] = 0xe31e, +} + +local utf8 = setmetatable({}, { + __index = function(t, k) + local cp = codepoints[k] + if not cp then return nil end + + local res + if cp < 0x0080 then + res = cp + elseif cp < 0x0800 then + res = string.char(0xC0 | (cp >> 6), 0x80 | (cp & 0x3F)) + elseif cp < 0x10000 then + res = string.char(0xE0 | (cp >> 12), 0x80 | ((cp >> 6) & 0x3F), 0x80 | (cp & 0x3F)) + else + res = string.char(0xF0 | (cp >> 18), 0x80 | ((cp >> 12) & 0x3F), 0x80 | ((cp >> 6) & 0x3F), 0x80 | (cp & 0x3F)) + end + + t[k] = res + return res + end +}) + +return { + codepoints = codepoints, + utf8 = utf8, + path = DATADIR .. PATHSEP .. "libraries" .. PATHSEP .. "font_symbols_nerdfont_mono_regular" .. PATHSEP .. "SymbolsNerdFontMono-Regular.ttf" +} diff --git a/debian/extra/libraries/widget/button.lua b/debian/extra/libraries/widget/button.lua new file mode 100644 index 0000000..f346d31 --- /dev/null +++ b/debian/extra/libraries/widget/button.lua @@ -0,0 +1,163 @@ +-- +-- Button Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" + +---@class widget.button.icon +---@field public code string | nil +---@field public color renderer.color | nil +---@field public hover_color renderer.color | nil +local ButtonIcon = {} + +---@class widget.button : widget +---@overload fun(parent:widget?, label:string?):widget.button +---@field public padding widget.position +---@field public icon widget.button.icon +---@field public expanded boolean +local Button = Widget:extend() + +---Constructor +---@param parent widget +---@param label? string +function Button:new(parent, label) + Button.super.new(self, parent) + + self.type_name = "widget.button" + + self.icon = { + code = nil, color = nil, hover_color = nil + } + + self.padding = { + x = style.padding.x, + y = style.padding.y + } + + self.expanded = false + + self:set_label(label or "") +end + +---When set to true the button width will be the same as parent +---@param expand? boolean | nil +function Button:toggle_expand(expand) + if type(expand) == "boolean" then + self.expanded = expand + else + self.expanded = not self.expanded + end +end + +---Set the icon drawn alongside the button text. +---@param code? string +---@param color? renderer.color +---@param hover_color? renderer.color +function Button:set_icon(code, color, hover_color) + self.icon.code = code + self.icon.color = color + self.icon.hover_color = hover_color + + self:set_label(self.label) +end + +---Set the button text and recalculates the widget size. +---@param text string +function Button:set_label(text) + Button.super.set_label(self, text) + + local font = self:get_font() + local border = self.border.width * 2 + + if self.expanded and self.parent then + self.size.x = self.parent.size.x - self.position.rx - border + else + self.size.x = font:get_width(self.label) + (self.padding.x * 2) - border + end + + self.size.y = font:get_height() + (self.padding.y * 2) - border + + if self.icon.code then + local icon_w = style.icon_font:get_width(self.icon.code) + + if self.label ~= "" then + icon_w = icon_w + (self.padding.x / 2) + end + + local icon_h = style.icon_font:get_height() + (self.padding.y * 2) - border + + self.size.x = self.size.x + icon_w + self.size.y = math.max(self.size.y, icon_h) + end +end + +function Button:on_mouse_enter(...) + Button.super.on_mouse_enter(self, ...) + self.hover_text = style.accent + self.hover_back = style.line_highlight +end + +function Button:on_mouse_leave(...) + Button.super.on_mouse_leave(self, ...) + self.hover_text = nil + self.hover_back = nil +end + +function Button:on_scale_change(new_scale, prev_scale) + Button.super.on_scale_change(self, new_scale, prev_scale) + self.padding.x = self.padding.x * (new_scale / prev_scale) + self.padding.y = self.padding.y * (new_scale / prev_scale) +end + +function Button:update() + if not Button.super.update(self) then return false end + + -- update size + self:set_label(self.label) + + return true +end + +function Button:draw() + self.background_color = self.hover_back or style.background + + if not Button.super.draw(self) then return false end + + local font = self:get_font() + + local offsetx = self.position.x + self.padding.x + local offsety = self.position.y + local h = self:get_height() + local ih, th = style.icon_font:get_height(), font:get_height() + + if self.icon.code then + local normal = self.icon.color or style.text + local hover = self.icon.hover_color or style.accent + renderer.draw_text( + style.icon_font, + self.icon.code, + offsetx, + th > ih and (offsety + (h / 2)) - (ih/2) or (offsety + self.padding.y), + self.hover_text and hover or normal + ) + offsetx = offsetx + style.icon_font:get_width(self.icon.code) + (style.padding.x / 2) + end + + if self.label ~= "" then + renderer.draw_text( + font, + self.label, + offsetx, + ih > th and (offsety + (h / 2)) - (th/2) or (offsety + self.padding.y), + self.hover_text or self.foreground_color or style.text + ) + end + + return true +end + + +return Button diff --git a/debian/extra/libraries/widget/checkbox.lua b/debian/extra/libraries/widget/checkbox.lua new file mode 100644 index 0000000..357defa --- /dev/null +++ b/debian/extra/libraries/widget/checkbox.lua @@ -0,0 +1,142 @@ +-- +-- CheckBox Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" + +---@class widget.checkbox : widget +---@overload fun(parent?:widget, label?:string):widget.checkbox +---@field private checked boolean +local CheckBox = Widget:extend() + +---Constructor +---@param parent widget +---@param label string +function CheckBox:new(parent, label) + CheckBox.super.new(self, parent) + self.type_name = "widget.checkbox" + self.checked = false + self:set_label(label or "") + self.animating = false + self.animating_color = style.caret +end + +---Set the checkbox label and recalculates the widget size. +---@param text string +function CheckBox:set_label(text) + CheckBox.super.set_label(self, text) + + local _, _, bw, _ = self:get_box_rect() + + local font = self:get_font() + + self.size.x = font:get_width(self.label) + bw + (style.padding.x / 2) + self.size.y = font:get_height() +end + +---Change the status of the checkbox. +---@param checked boolean +function CheckBox:set_checked(checked) + self.checked = checked + self:on_change(self.checked) +end + +---Get the status of the checkbox. +---@return boolean +function CheckBox:is_checked() + return self.checked +end + +---Called when the checkbox is (un)checked. +---@param checked boolean +function CheckBox:on_checked(checked) end + +function CheckBox:on_mouse_enter(...) + CheckBox.super.on_mouse_enter(self, ...) + self.hover_text = style.accent + self.hover_back = style.dim +end + +function CheckBox:on_mouse_leave(...) + CheckBox.super.on_mouse_leave(self, ...) + self.hover_text = nil + self.hover_back = nil +end + +function CheckBox:on_click() + self.checked = not self.checked + self:on_checked(self.checked) + self:on_change(self.checked) + + self.animating = true + self.animating_color = {table.unpack(style.caret)} + local target_color = {table.unpack(style.caret)} + + if self.checked then + self.animating_color[4] = 0 + target_color[4] = 255 + else + self.animating_color[4] = 255 + target_color[4] = 0 + end + self:animate(self.animating_color, {table.unpack(target_color)}, { + on_complete = function() + self.animating = false + end + }) +end + +function CheckBox:get_box_rect() + local size = 1.6 + local font = self:get_font() + local fh = font:get_height() / size + return + self.position.x, + self.position.y + (fh / (size * 2)), + font:get_width("x") + 4, + fh +end + +function CheckBox:update() + if not CheckBox.super.update(self) then return false end + + -- update size + self:set_label(self.label) + + return true +end + +function CheckBox:draw() + if not self:is_visible() then return false end + + local bx, by, bw, bh = self:get_box_rect() + + self:draw_border(bx, by, bw, bh) + + renderer.draw_rect( + bx, by, bw, bh, + self.hover_back or self.background_color or style.background + ) + + if self.animating then + renderer.draw_rect(bx + 2, by + 2, bw-4, bh-4, self.animating_color) + elseif self.checked then + renderer.draw_rect(bx + 2, by + 2, bw-4, bh-4, style.caret) + end + + renderer.draw_text( + self:get_font(), + self.label, + self.position.x + bw + (style.padding.x / 2), + self.position.y, + self.hover_text or self.foreground_color or style.text + ) + + return true +end + + +return CheckBox diff --git a/debian/extra/libraries/widget/colorpicker.lua b/debian/extra/libraries/widget/colorpicker.lua new file mode 100644 index 0000000..4e2563b --- /dev/null +++ b/debian/extra/libraries/widget/colorpicker.lua @@ -0,0 +1,745 @@ +-- +-- Color Picker Widget +-- Note: HSV and HSL conversion functions adapted from: +-- https://github.com/EmmanuelOga/columns/blob/master/utils/color.lua +-- which in turn was ported from: +-- http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c +-- +local core = require "core" +local style = require "core.style" +local common = require "core.common" +local Widget = require "libraries.widget" +local TextBox = require "libraries.widget.textbox" + +---@alias widget.colorpicker.colorrange renderer.color[] + +---The numerical portion of a color range on the hue selection bar. +---@type number +local HUE_COLOR_SEGMENT = 100 / 6 + +---Hue color ranges in the order rendered on the hue bar. +---@type widget.colorpicker.colorrange[] +local HUE_COLOR_RANGES = { + -- red -> yellow + { {255, 0, 0, 255}, {255, 255, 0, 255} }, + -- yellow -> green + { {255, 255, 0, 255}, {0, 255, 0, 255} }, + -- green -> cyan + { {0, 255 ,0, 255}, {0, 255, 255, 255} }, + -- cyan -> blue + { {0, 255, 255, 255}, {0, 0, 255, 255} }, + -- blue -> purple + { {0, 0, 255, 255}, {255, 0, 255, 255} }, + -- purple -> red + { {255, 0, 255, 255}, {255, 0, 0, 255} } +} + +---@type renderer.color +local COLOR_BLACK = {0, 0, 0, 255} + +---@type renderer.color +local COLOR_WHITE = {255, 255, 255, 255} + +---@class widget.colorpicker : widget +---@overload fun(parent:widget?, color?:renderer.color|string):widget.colorpicker +---@field hue_color renderer.color +---@field saturation_color renderer.color +---@field brightness_color renderer.color +---@field hue_pos number +---@field saturation_pos number +---@field brightness_pos number +---@field alpha number +---@field hue_mouse_down boolean +---@field saturation_mouse_down boolean +---@field brightness_mouse_down boolean +---@field html_notation widget.textbox +---@field rgba_notation widget.textbox +local ColorPicker = Widget:extend() + +---Constructor +---@param parent widget +---@param color? renderer.color | string +function ColorPicker:new(parent, color) + ColorPicker.super.new(self, parent, false) + + self.type_name = "widget.colorpicker" + + self.hue_pos = 0 + self.saturation_pos = 100 + self.brightness_pos = 100 + self.alpha = 255 + + self.hue_color = COLOR_BLACK + self.saturation_color = COLOR_BLACK + self.brightness_color = COLOR_BLACK + + self.hue_mouse_down = false; + self.saturation_mouse_down = false + self.brightness_mouse_down = false + + self.selector = { x = 0, y = 0, w = 0, h = 0 } + + self:set_border_width(0) + + local this = self + self.html_notation = TextBox(self, "#FF0000") + self.rgba_notation = TextBox(self, "rgba(255,0,0,1)") + self.html_updating = false + self.rgba_updating = false + + function self.html_notation:on_change(value) + if + not this.hue_mouse_down + and + not this.saturation_mouse_down + and + not this.brightness_mouse_down + and + not this.html_updating + then + this:set_color(value, true) + end + end + + function self.rgba_notation:on_change(value) + if + not this.hue_mouse_down + and + not this.saturation_mouse_down + and + not this.brightness_mouse_down + and + not this.rgba_updating + then + this:set_color(value, false, true) + end + end + + self:set_color(color or {255, 0, 0, 255}) + + -- set initial child positions and size + self:update_size() +end + +---Converts an RGB color value to HSL. Conversion formula +---adapted from http://en.wikipedia.org/wiki/HSL_color_space. +---Assumes r, g, and b are contained in the set [0, 255] and +---returns h, s, and l in the set [0, 1]. +---@param rgba renderer.color +---@return table hsla +function ColorPicker.rgb_to_hsl(rgba) + local r, g, b, a = rgba[1], rgba[2], rgba[3], rgba[4] + r, g, b = r / 255, g / 255, b / 255 + + local max, min = math.max(r, g, b), math.min(r, g, b) + local h, s, l + + l = (max + min) / 2 + + if max == min then + h, s = 0, 0 -- achromatic + else + local d = max - min + if l > 0.5 then s = d / (2 - max - min) else s = d / (max + min) end + if max == r then + h = (g - b) / d + if g < b then h = h + 6 end + elseif max == g then h = (b - r) / d + 2 + elseif max == b then h = (r - g) / d + 4 + end + h = h / 6 + end + + return {h, s, l, a and a/255 or 1} +end + +---Converts an HSL color value to RGB. Conversion formula +---adapted from http://en.wikipedia.org/wiki/HSL_color_space. +---Assumes h, s, and l are contained in the set [0, 1] and +---returns r, g, and b in the set [0, 255]. +---@param h number The hue +---@param s number The saturation +---@param l number The lightness +---@param a number The alpha +---@return renderer.color rgba +function ColorPicker.hsl_to_rgb(h, s, l, a) + local r, g, b + + if s == 0 then + r, g, b = l, l, l -- achromatic + else + local function hue2rgb(p, q, t) + if t < 0 then t = t + 1 end + if t > 1 then t = t - 1 end + if t < 1/6 then return p + (q - p) * 6 * t end + if t < 1/2 then return q end + if t < 2/3 then return p + (q - p) * (2/3 - t) * 6 end + return p + end + + local q + if l < 0.5 then q = l * (1 + s) else q = l + s - l * s end + local p = 2 * l - q + + r = hue2rgb(p, q, h + 1/3) + g = hue2rgb(p, q, h) + b = hue2rgb(p, q, h - 1/3) + end + + return {r * 255, g * 255, b * 255, a * 255} +end + +---Converts an RGB color value to HSV. Conversion formula +---adapted from http://en.wikipedia.org/wiki/HSV_color_space. +---Assumes r, g, and b are contained in the set [0, 255] and +---returns h, s, and v in the set [0, 1]. +---@param rgba renderer.color +---@return table hsva The HSV representation +function ColorPicker.rgb_to_hsv(rgba) + local r, g, b, a = rgba[1], rgba[2], rgba[3], rgba[4] + r, g, b, a = r / 255, g / 255, b / 255, a / 255 + local max, min = math.max(r, g, b), math.min(r, g, b) + local h, s, v + v = max + + local d = max - min + if max == 0 then s = 0 else s = d / max end + + if max == min then + h = 0 -- achromatic + else + if max == r then + h = (g - b) / d + if g < b then h = h + 6 end + elseif max == g then h = (b - r) / d + 2 + elseif max == b then h = (r - g) / d + 4 + end + h = h / 6 + end + + return {h, s, v, a/255} +end + +---Converts an HSV color value to RGB. Conversion formula +---adapted from http://en.wikipedia.org/wiki/HSV_color_space. +---Assumes h, s, and v are contained in the set [0, 1] and +---returns r, g, and b in the set [0, 255]. +---@param h number The hue +---@param s number The saturation +---@param v number The brightness +---@param a number The alpha +---@return renderer.color rgba The RGB representation +function ColorPicker.hsv_to_rgb(h, s, v, a) + local r, g, b + + local i = math.floor(h * 6); + local f = h * 6 - i; + local p = v * (1 - s); + local q = v * (1 - f * s); + local t = v * (1 - (1 - f) * s); + + i = i % 6 + + if i == 0 then r, g, b = v, t, p + elseif i == 1 then r, g, b = q, v, p + elseif i == 2 then r, g, b = p, v, t + elseif i == 3 then r, g, b = p, q, v + elseif i == 4 then r, g, b = t, p, v + elseif i == 5 then r, g, b = v, p, q + end + + return {math.ceil(r * 255), math.ceil(g * 255), math.ceil(b * 255), math.ceil(a * 255)} +end + +---Converts a css format color string into a renderer.color if possible, +---if conversion fails returns nil. Adapted from colorpreview plugin. +---@param color string +---@return renderer.color? color +function ColorPicker.color_from_string(color) + local s, e, r, g, b, a, base, nibbles; + + s, e, r, g, b, a = color:find("#(%x%x)(%x%x)(%x%x)(%x?%x?)") + + if s then + base = 16 + else + s, e, r, g, b, a = color:find("#(%x)(%x)(%x)") + + if s then + base = 16 + nibbles = true + else + s, e, r, g, b, a = color:find( + "rgba?%((%d+)%D+(%d+)%D+(%d+)[%s,]-([%.%d]-)%s-%)" + ) + end + end + + if not s then return nil end + + r = tonumber(r or "", base) + g = tonumber(g or "", base) + b = tonumber(b or "", base) + + a = tonumber(a or "", base) + if a ~= nil then + if base ~= 16 then + a = a * 0xff + end + else + a = 0xff + end + + if nibbles then + r = r * 16 + g = g * 16 + b = b * 16 + end + + return {r, g, b, a} +end + +---Gets a color between two given colors on the position +---defined by the given percent. +---@param from_color renderer.color +---@param to_color renderer.color +---@param percent number +---@return renderer.color color +function ColorPicker.color_in_between(from_color, to_color, percent) + local color = {} + for i=1, 4 do + if from_color[i] == to_color[i] then + color[i] = from_color[i] + else + color[i] = common.clamp( + from_color[i] + math.floor((to_color[i] - from_color[i]) * percent), + 0, + 255 + ) + end + end + return color +end + +function ColorPicker:get_name() + return "Color Picker" +end + +---Gets the currently selected color on the hue bar. +---@return renderer.color +function ColorPicker:get_hue_color() + local w = self.selector.w + local pos = self.hue_pos + local pos_percent = pos / 100 + local range_size = w / 6 + local range + if pos <= (HUE_COLOR_SEGMENT) then + range = 1 + elseif pos <= (HUE_COLOR_SEGMENT) * 2 then + range = 2 + elseif pos <= (HUE_COLOR_SEGMENT) * 3 then + range = 3 + elseif pos <= (HUE_COLOR_SEGMENT) * 4 then + range = 4 + elseif pos <= (HUE_COLOR_SEGMENT) * 5 then + range = 5 + else + range = 6 + end + local range_position = (w * pos_percent) - ((range_size * range)-range_size) + local range_percent = range_position / range_size + return ColorPicker.color_in_between( + HUE_COLOR_RANGES[range][1], + HUE_COLOR_RANGES[range][2], + range_percent + ) +end + +---Gets the currently selected color on the saturation bar. +---@return renderer.color +function ColorPicker:get_saturation_color() + local w = self.selector.w + local pos = self.saturation_pos + local pos_percent = pos / 100 + local range_size = w + local range, color1, color2 = 1, COLOR_WHITE, self.hue_color + local range_position = (w * pos_percent) - ((range_size * range)-range_size) + local range_percent = range_position / range_size + return ColorPicker.color_in_between(color1, color2, range_percent) +end + +---Gets the currently selected color on the brightness bar. +---@return renderer.color +function ColorPicker:get_brightness_color() + local w = self.selector.w + local pos = self.brightness_pos + local pos_percent = pos / 100 + local range_size = w + local range, color1, color2 = 1, COLOR_BLACK, self.saturation_color + local range_position = (w * pos_percent) - ((range_size * range)-range_size) + local range_percent = range_position / range_size + return ColorPicker.color_in_between(color1, color2, range_percent) +end + +---Gets the currently selected rgba color. +---@return renderer.color +function ColorPicker:get_color() + return ColorPicker.hsv_to_rgb( + self.hue_pos / 100, + self.saturation_pos / 100, + self.brightness_pos / 100, + self.alpha / 255 + ) +end + +---Set current color from rgba source which can also +---be a css string representation. +---@param color renderer.color | string +function ColorPicker:set_color(color, skip_html, skip_rgba) + -- we set the color on a coroutine in case it is been set before + -- the control is properly initialized like the constructor. + core.add_thread(function() + if type(color) == "string" then + color = ColorPicker.color_from_string(color) + end + + if not color then color = {255, 0, 0, 255} end + + local hsva = ColorPicker.rgb_to_hsv(color) + + self.hue_pos = hsva[1] * 100 + self.saturation_pos = hsva[2] * 100 + self.brightness_pos = hsva[3] * 100 + + self.hue_color = self:get_hue_color() + self.saturation_color = self:get_saturation_color() + self.brightness_color = self:get_brightness_color() + self.alpha = color[4] + + if not skip_html then + self.html_updating = true + self.html_notation:set_text(string.format( + "#%02X%02X%02X%02X", + color[1], color[2], color[3], color[4] + )) + self.html_updating = false + end + + if not skip_rgba then + self.rgba_updating = true + self.rgba_notation:set_text(string.format( + "rgba(%d,%d,%d,%.2f)", + color[1], color[2], color[3], color[4] / 255 + )) + self.rgba_updating = false + end + + self:on_change(color) + end) +end + +---Set the transparency level, the lower the given alpha the more transparent. +---@param alpha number A value from 0 to 255 +function ColorPicker:set_alpha(alpha) + self.alpha = common.clamp(alpha, 0, 255) +end + +---Draw a hue color bar at given location and size. +---@param x number +---@param y number +---@param w number +---@param h number +function ColorPicker:draw_hue(x, y, w, h) + local sx = x + local step = 1 + local cwidth = 1 + local cheight = h or 10 + + if w < 255*6 then + step = 255 / (w / 6) + else + cwidth = (w / 6) / 255 + end + + -- red -> yellow + for g=0, 255, step do + renderer.draw_rect(x, y, cwidth, cheight, {255, g, 0, 255}) + x = x + cwidth + end + + -- yellow -> green + for r=255, 0, -step do + renderer.draw_rect(x, y, cwidth, cheight, {r, 255, 0, 255}) + x = x + cwidth + end + + -- green -> cyan + for b=0, 255, step do + renderer.draw_rect(x, y, cwidth, cheight, {0, 255, b, 255}) + x = x + cwidth + end + + -- cyan -> blue + for g=255, 0, -step do + renderer.draw_rect(x, y, cwidth, cheight, {0, g, 255, 255}) + x = x + cwidth + end + + -- blue -> purple + for r=0, 255, step do + renderer.draw_rect(x, y, cwidth, cheight, {r, 0, 255, 255}) + x = x + cwidth + end + + -- purple -> red + for b=255, 0, -step do + renderer.draw_rect(x, y, cwidth, cheight, {255, 0, b, 255}) + x = x + cwidth + end + + sx = sx + (w * (self.hue_pos / 100)) + self:draw_selector(sx, y, cheight, self.hue_color) +end + +---Draw a saturation color bar at given location and size. +---@param x number +---@param y number +---@param w number +---@param h number +function ColorPicker:draw_saturation(x, y, w, h) + local sx = x + local step = 1 + local cwidth = 1 + local cheight = h or 10 + + if w < 255 then + step = 255 / w + else + cwidth = w / 255 + end + + -- white to base + for i=0, 255, step do + local color = ColorPicker.color_in_between(COLOR_WHITE, self.hue_color, i / 255) + renderer.draw_rect(x, y, cwidth, cheight, color) + x = x + cwidth + end + + sx = sx + (w * (self.saturation_pos / 100)) + self:draw_selector(sx, y, cheight, self.saturation_color) +end + +---Draw a brightness color bar at given location and size. +---@param x number +---@param y number +---@param w number +---@param h number +function ColorPicker:draw_brightness(x, y, w, h) + local sx = x + local step = 1 + local cwidth = 1 + local cheight = h or 10 + + if w < 255 then + step = 255 / w + else + cwidth = w / 255 + end + + -- black to base + for i=0, 255, step do + local color = ColorPicker.color_in_between(COLOR_BLACK, self.saturation_color, i / 255) + renderer.draw_rect(x, y, cwidth, cheight, color) + x = x + cwidth + end + + sx = sx + (w * (self.brightness_pos / 100)) + self:draw_selector(sx, y, cheight, self.brightness_color) +end + +---@param self widget.colorpicker +local function update_control_values(self) + local color = self:get_color() + self.alpha = color[4] + self.html_updating = true + self.rgba_updating = true + self.html_notation:set_text(string.format( + "#%02X%02X%02X%02X", + color[1], color[2], color[3], color[4] + )) + self.rgba_notation:set_text(string.format( + "rgba(%d,%d,%d,%.2f)", + color[1], color[2], color[3], color[4] / 255 + )) + self.html_updating = false + self.rgba_updating = false + self:on_change(color) +end + +function ColorPicker:on_mouse_pressed(button, x, y, clicks) + if not ColorPicker.super.on_mouse_pressed(self, button, x, y, clicks) then + return false + end + + if + x >= self.selector.x and x <= self.selector.x + self.selector.w + and + y >= self.selector.y and y <= self.selector.y + self.selector.h + then + local sx, sw = self.selector.x, self.selector.w + self.hue_pos = common.clamp(x, sx, sx + sw) + self.hue_pos = ((self.hue_pos - self.selector.x) / self.selector.w) * 100 + self.hue_color = self:get_hue_color() + self.saturation_color = self:get_saturation_color() + self.hue_mouse_down = true + elseif + x >= self.selector.x and x <= self.selector.x + self.selector.w + and + y >= self.selector.y + style.padding.y + self.selector.h + and + y <= self.selector.y + style.padding.y + (self.selector.h * 2) + then + local sx, sw = self.selector.x, self.selector.w + self.saturation_pos = common.clamp(x, sx, sx + sw) + self.saturation_pos = ((self.saturation_pos - self.selector.x) / self.selector.w) * 100 + self.saturation_color = self:get_saturation_color() + self.brightness_color = self:get_brightness_color() + self.saturation_mouse_down = true + elseif + x >= self.selector.x and x <= self.selector.x + self.selector.w + and + y >= self.selector.y + style.padding.y * 2 + self.selector.h * 2 + and + y <= self.selector.y + style.padding.y * 2 + (self.selector.h * 4) + then + local sx, sw = self.selector.x, self.selector.w + self.brightness_pos = common.clamp(x, sx, sx + sw) + self.brightness_pos = ((self.brightness_pos - self.selector.x) / self.selector.w) * 100 + self.brightness_color = self:get_brightness_color() + self.brightness_mouse_down = true + end + if self.hue_mouse_down or self.saturation_mouse_down or self.brightness_mouse_down then + self:capture_mouse() + update_control_values(self) + end + return true +end + +function ColorPicker:on_mouse_released(button, x, y) + if self.hue_mouse_down or self.saturation_mouse_down or self.brightness_mouse_down then + self:release_mouse() + end + + self.hue_mouse_down = false + self.saturation_mouse_down = false + self.brightness_mouse_down = false + + if not ColorPicker.super.on_mouse_released(self, button, x, y) then + return false + end + + return true +end + +function ColorPicker:on_mouse_moved(x, y, dx, dy) + if self.hue_mouse_down then + local sx, sw = self.selector.x, self.selector.w + self.hue_pos = common.clamp(x, sx, sx + sw) + self.hue_pos = ((self.hue_pos - self.selector.x) / self.selector.w) * 100 + self.hue_color = self:get_hue_color() + self.saturation_color = self:get_saturation_color() + self.brightness_color = self:get_brightness_color() + elseif self.saturation_mouse_down then + local sx, sw = self.selector.x, self.selector.w + self.saturation_pos = common.clamp(x, sx, sx + sw) + self.saturation_pos = ((self.saturation_pos - self.selector.x) / self.selector.w) * 100 + self.saturation_color = self:get_saturation_color() + self.brightness_color = self:get_brightness_color() + elseif self.brightness_mouse_down then + local sx, sw = self.selector.x, self.selector.w + self.brightness_pos = common.clamp(x, sx, sx + sw) + self.brightness_pos = ((self.brightness_pos - self.selector.x) / self.selector.w) * 100 + self.brightness_color = self:get_brightness_color() + end + if self.hue_mouse_down or self.saturation_mouse_down or self.brightness_mouse_down then + update_control_values(self) + else + return ColorPicker.super.on_mouse_moved(self, x, y, dx, dy) + end + return true +end + +function ColorPicker:update_size() + self.selector.h = 10 * SCALE + local x, y = 0, style.padding.y * 3 + self.selector.h * 4 + self.html_notation:set_position(x, y) + self.rgba_notation:set_position(self.html_notation:get_right() + style.padding.x, y) + if self:get_width() < self.rgba_notation:get_right() then + self:set_size(self.rgba_notation:get_right() + style.padding.x) + end + if self:get_height() < self.rgba_notation:get_bottom() then + self:set_size(nil, self.rgba_notation:get_bottom() + style.padding.y) + end +end + +function ColorPicker:update() + if not ColorPicker.super.update(self) then return false end + self:update_size() + return true +end + +function ColorPicker:draw_selector(x, y, h, color) + local border = 2 * SCALE + x = x - border - ((10 * SCALE) / border) + y = y - border + renderer.draw_rect(x, y, 14 * SCALE, h + (border * 2), COLOR_WHITE) + renderer.draw_rect(x+border, y + border, 10 * SCALE, h, color) +end + +function ColorPicker:draw() + if not ColorPicker.super.draw(self) then return false end + + local x, y, w = self.position.x, self.position.y, self.size.x + + self.selector.x = x + self.selector.y = style.padding.y + y + self.selector.w = w - style.padding.x - 100 + self.selector.h = 10 * SCALE + + self:draw_hue( + self.selector.x, + self.selector.y, + self.selector.w, + self.selector.h + ) + + self:draw_saturation( + self.selector.x, + self.selector.y + style.padding.y + self.selector.h, + self.selector.w, + self.selector.h + ) + + self:draw_brightness( + self.selector.x, + self.selector.y + style.padding.y * 2 + self.selector.h * 2, + self.selector.w, + self.selector.h + ) + + local c = self:get_color() + + renderer.draw_rect( + self.selector.x + style.padding.x + self.selector.w, + self.selector.y, + 100, + (self.selector.y + style.padding.y * 2 + self.selector.h * 3) + - self.selector.y, + c + ) + + return true +end + + +return ColorPicker diff --git a/debian/extra/libraries/widget/colorpickerdialog.lua b/debian/extra/libraries/widget/colorpickerdialog.lua new file mode 100644 index 0000000..a88dc80 --- /dev/null +++ b/debian/extra/libraries/widget/colorpickerdialog.lua @@ -0,0 +1,77 @@ +-- +-- Color Picker Dialog Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Button = require "libraries.widget.button" +local ColorPicker = require "libraries.widget.colorpicker" +local Dialog = require "libraries.widget.dialog" + +---@class widget.colorpickerdialog : widget.dialog +---@overload fun(title?:string, color?:renderer.color|string):widget.colorpickerdialog +---@field super widget.dialog +---@field picker widget.colorpicker +---@field apply widget.button +---@field cancel widget.button +local ColorPickerDialog = Dialog:extend() + +---Constructor +---@param title? string +---@param color? renderer.color | string +function ColorPickerDialog:new(title, color) + ColorPickerDialog.super.new(self, title or "Color Picker") + + self.type_name = "widget.colorpickerdialog" + self.picker = ColorPicker(self.panel, color) + + local this = self + + self.apply = Button(self.panel, "Apply") + self.apply:set_icon("S") + function self.apply:on_click() + this:on_apply(this.picker:get_color()) + this:on_close() + end + + self.cancel = Button(self.panel, "Cancel") + self.cancel:set_icon("C") + function self.cancel:on_click() + this:on_close() + end +end + +---Called when the user clicks on apply +---@param value renderer.color +function ColorPickerDialog:on_apply(value) end + +function ColorPickerDialog:update() + if not ColorPickerDialog.super.update(self) then return false end + + self.picker:set_position(style.padding.x/2, 0) + + self.apply:set_position( + style.padding.x/2, + self.picker:get_bottom() + style.padding.y + ) + self.cancel:set_position( + self.apply:get_right() + style.padding.x, + self.picker:get_bottom() + style.padding.y + ) + + self.panel.size.x = self.panel:get_real_width() + style.padding.x + self.panel.size.y = self.panel:get_real_height() + self.size.x = self:get_real_width() - (style.padding.x / 2) + self.size.y = self:get_real_height() + (style.padding.y / 2) + + self.close:set_position( + self.size.x - self.close.size.x - (style.padding.x / 2), + style.padding.y / 2 + ) + + return true +end + + +return ColorPickerDialog diff --git a/debian/extra/libraries/widget/dialog.lua b/debian/extra/libraries/widget/dialog.lua new file mode 100644 index 0000000..4f27b4b --- /dev/null +++ b/debian/extra/libraries/widget/dialog.lua @@ -0,0 +1,164 @@ +-- +-- Dialog object that serves as base to implement other dialogs. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local style = require "core.style" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" +local Label = require "libraries.widget.label" + +---@class widget.dialog : widget +---@overload fun(title?:string):widget.dialog +---@field protected title widget.label +---@field protected close widget.button +---@field protected panel widget +local Dialog = Widget:extend() + +---Constructor +---@param title string +function Dialog:new(title) + Dialog.super.new(self) + + self.type_name = "widget.dialog" + + self.draggable = true + self.scrollable = false + + -- minimum width and height + self.size.mx = 400 + self.size.my = 150 + + self.title = Label(self, "") + self.close = Button(self, "") + self.close:set_icon("X") + self.close.border.width = 0 + self.close:toggle_background(false) + self.close.padding.x = 4 + self.close.padding.y = 0 + self.panel = Widget(self) + self.panel.border.width = 0 + self.panel.scrollable = true + + local this = self + + function self.close:on_click() + this:on_close() + this:hide() + end + + self:set_title(title or "") +end + +---Returns the widget where you can add child widgets to this dialog. +---@return widget +function Dialog:get_panel() + return self.panel +end + +---Change the dialog title. +---@param text string|widget.styledtext +function Dialog:set_title(text) + self.title:set_label(text) +end + +---Calculate the dialog size, centers it relative to screen and shows it. +function Dialog:show() + Dialog.super.show(self) + self:update() + self:centered() +end + +---Called when the user clicks the close button of the dialog. +function Dialog:on_close() + self:hide() +end + +function Dialog:update() + if not Dialog.super.update(self) then return false end + + local width = math.max( + self.title:get_width() + (style.padding.x * 3) + self.close:get_width(), + self.size.mx, + self.size.x + ) + + local height = math.max( + self.title:get_height() + (style.padding.y * 3), + self.size.my, + self.size.y + ) + + self:set_size(width, height) + + self.title:set_position( + style.padding.x / 2, + style.padding.y / 2 + ) + + self.close:set_position( + self.size.x - self.close.size.x - (style.padding.x / 2), + style.padding.y / 2 + ) + + self.panel:set_position( + 0, + self.title:get_bottom() + (style.padding.y / 2) + ) + + self.panel:set_size( + self.size.x, + self.size.y - self.title.size.y - style.padding.y + ) + + return true +end + +---We overwrite default draw function to draw the title background. +function Dialog:draw() + if not self:is_visible() then return false end + + Dialog.super.draw(self) + + self:draw_border() + + if self.background_color then + self:draw_background(self.background_color) + else + self:draw_background( + self.parent and style.background or style.background2 + ) + end + + if #self.childs > 0 then + core.push_clip_rect( + self.position.x, + self.position.y, + self.size.x, + self.size.y + ) + end + + -- draw the title background + renderer.draw_rect( + self.position.x, + self.position.y, + self.size.x, self.title:get_height() + style.padding.y, + style.selection + ) + + for i=#self.childs, 1, -1 do + self.childs[i]:draw() + end + + if #self.childs > 0 then + core.pop_clip_rect() + end + + return true +end + + +return Dialog diff --git a/debian/extra/libraries/widget/filepicker.lua b/debian/extra/libraries/widget/filepicker.lua new file mode 100644 index 0000000..c37af81 --- /dev/null +++ b/debian/extra/libraries/widget/filepicker.lua @@ -0,0 +1,395 @@ +local core = require "core" +local common = require "core.common" +local style = require "core.style" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" +local Label = require "libraries.widget.label" + +---@class widget.filepicker : widget +---@overload fun(parent?:widget, path?:string):widget.filepicker +---@field public pick_mode integer +---@field public filters table +---@field private path string +---@field private file widget.label +---@field private textbox widget.textbox +---@field private button widget.button +local FilePicker = Widget:extend() + +---Operation modes for the file picker. +---@type table +FilePicker.mode = { + ---Opens file browser the selected file does not has to exist. + FILE = 1, + ---Opens file browser the selected file has to exist. + FILE_EXISTS = 2, + ---Opens directory browser the selected directory does not has to exist. + DIRECTORY = 4, + ---Opens directory browser the selected directory has to exist. + DIRECTORY_EXISTS = 8 +} + +---@param text string +local function suggest_directory(text) + text = common.home_expand(text) + return common.home_encode_list(common.dir_path_suggest(text)) +end + +---@param path string +local function check_directory_path(path) + local abs_path = system.absolute_path(path) + local info = abs_path and system.get_file_info(abs_path) + if not info or info.type ~= 'dir' then return nil end + return abs_path +end + +---@param str string +---@param find string +---@param replace string +local function str_replace(str, find, replace) + local start, ending = str:find(find, 1, true) + if start == 1 then + return replace .. str:sub(ending + 1) + else + return str:sub(1, start - 1) .. replace .. str:sub(ending + 1) + end +end + +---@alias widget.filepicker.modes +---| `FilePicker.mode.FILE` +---| `FilePicker.mode.FILE_EXISTS` +---| `FilePicker.mode.DIRECTORY` +---| `FilePicker.mode.DIRECTORY_EXISTS` + +---Constructor +---@param parent widget +---@param path? string +function FilePicker:new(parent, path) + FilePicker.super.new(self, parent) + + local this = self + + self.type_name = "widget.filepicker" + + self.filters = {} + self.border.width = 0 + self.pick_mode = FilePicker.mode.FILE + + self.file = Label(self, "") + self.file.clickable = true + self.file:set_border_width(1) + function self.file:on_click(button) + if button == "left" then + this:show_picker() + end + end + function self.file:on_mouse_enter(...) + Label.super.on_mouse_enter(self, ...) + self.border.color = style.caret + end + function self.file:on_mouse_leave(...) + Label.super.on_mouse_leave(self, ...) + self.border.color = style.text + end + + self.button = Button(self, "") + self.button:set_icon("D") + self.button:set_tooltip("open file browser") + function self.button:on_click(button) + if button == "left" then + this:show_picker() + end + end + + local label_width = self.file:get_width() + if label_width <= 10 then + label_width = 200 + (self.file.border.width * 2) + self.file:set_size(200, self.button:get_height() - self.button.border.width * 2) + end + + self:set_size( + label_width + self.button:get_width(), + math.max(self.file:get_height(), self.button:get_height()) + ) + + self:set_path(path) +end + +---Set the filepicker size +---@param width? number +---@param height? number +function FilePicker:set_size(width, height) + FilePicker.super.set_size(self, width, height) + + self.file:set_position(0, 0) + self.file:set_size( + self:get_width() - self.button:get_width(), + self.button:get_height() + ) + + self.button:set_position(self.file:get_right(), 0) + + self.size.y = math.max( + self.file:get_height(), + self.button:get_height() + -- something is off on calculation since adding border width should not + -- be needed to display whole rendered control at all... + ) + self.button.border.width +end + +---Add a lua pattern to the filters list +---@param pattern string +function FilePicker:add_filter(pattern) + table.insert(self.filters, pattern) +end + +---Clear the filters list +function FilePicker:clear_filters() + self.filters = {} +end + +---Set the operation mode for the file picker. +---@param mode widget.filepicker.modes | string | integer +function FilePicker:set_mode(mode) + if type(mode) == "string" then + ---@type integer + local intmode = FilePicker.mode[mode:upper()] + self.pick_mode = intmode + else + self.pick_mode = mode + end +end + +---Set the full path including directory and filename. +---@param path? string +function FilePicker:set_path(path) + if path then + self.path = path or "" + if common.path_belongs_to(path, core.project_dir) then + self.file.label = path ~= "" and + common.relative_path(core.project_dir, path) + or + "" + else + self.file.label = path + end + else + self.path = "" + self.file.label = "" + end +end + +---Get the full path including directory and filename. +---@return string | nil +function FilePicker:get_path() + if self.path ~= "" then + return self.path + end + return nil +end + +---Get the full path relative to current project dir or absolute if it doesn't +---belongs to the current project directory. +---@return string +function FilePicker:get_relative_path() + if + self.path ~= "" + and + common.path_belongs_to(self.path, core.project_dir) + then + return common.relative_path(core.project_dir, self.path) + end + return self.path or "" +end + +---Set the filename part only. +---@param name string +function FilePicker:set_filename(name) + local dir_part = common.dirname(self.path) + if dir_part then + self:set_path(dir_part .. PATHSEP .. name) + else + self:set_path(name) + end +end + +---Get the filename part only. +---@return string | nil +function FilePicker:get_filename() + local dir_part = common.dirname(self.path) + if dir_part then + local filename = str_replace(self.path, dir_part .. PATHSEP, "") + return filename + elseif self.path ~= "" then + return self.path + end + return nil +end + +---Set the directory part only. +---@param dir string +function FilePicker:set_directory(dir) + local filename = self:get_filename() + if filename then + self:set_path(dir:gsub("[\\/]$", "") .. PATHSEP .. filename) + else + self:set_path(dir:gsub("[\\/]$", "")) + end +end + +---Get the directory part only. +---@return string | nil +function FilePicker:get_directory() + if self.path ~= "" then + local dir_part = common.dirname(self.path) + if dir_part then return dir_part end + end + return nil +end + +---Filter a list of directories by applying currently set filters. +---@param self widget.filepicker +---@param list table +---@return table +local function filter(self, list) + if #self.filters > 0 then + local new_list = {} + for _, value in ipairs(list) do + if common.match_pattern(value, self.filters) then + table.insert(new_list, value) + elseif + self.pick_mode == FilePicker.mode.FILE + or + self.pick_mode == FilePicker.mode.FILE_EXISTS + then + local path = common.home_expand(value) + local abs_path = check_directory_path(path) + if abs_path then + table.insert(new_list, value) + end + end + end + return new_list + end + return list +end + +---@param self widget.filepicker +local function show_file_picker(self) + core.command_view:enter("Choose File", { + text = self:get_relative_path(), + submit = function(text) + ---@type string + local filename = text + local dirname = common.dirname(common.home_expand(text)) + if dirname then + filename = common.home_expand(text) + filename = system.absolute_path(dirname) + .. PATHSEP + .. str_replace(filename, dirname .. PATHSEP, "") + elseif filename ~= "" then + filename = core.project_dir .. PATHSEP .. filename + end + self:set_path(filename) + self:on_change(filename ~= "" and filename or nil) + end, + suggest = function (text) + return filter( + self, + common.home_encode_list(common.path_suggest(common.home_expand(text))) + ) + end, + validate = function(text) + if #self.filters > 0 and text ~= "" and not common.match_pattern(text, self.filters) then + core.error( + "File does not match the filters: %s", + table.concat(self.filters, ", ") + ) + return false + end + local filename = common.home_expand(text) + local path_stat, err = system.get_file_info(filename) + if path_stat and path_stat.type == 'dir' then + core.error("Cannot open %s, is a folder", text) + return false + end + if self.pick_mode == FilePicker.mode.FILE_EXISTS then + if not path_stat then + core.error("Cannot open file %s: %s", text, err) + return false + end + else + local dirname = common.dirname(filename) + local dir_stat = dirname and system.get_file_info(dirname) + if dirname and not dir_stat then + core.error("Directory does not exists: %s", dirname) + return false + end + end + return true + end, + }) +end + +---@param self widget.filepicker +local function show_dir_picker(self) + core.command_view:enter("Choose Directory", { + text = self:get_relative_path(), + submit = function(text) + local path = common.home_expand(text) + local abs_path = check_directory_path(path) + self:set_path(abs_path or text) + self:on_change(abs_path or (text ~= "" and text or nil)) + end, + suggest = function(text) + return filter(self, suggest_directory(text)) + end, + validate = function(text) + if #self.filters > 0 and text ~= "" and not common.match_pattern(text, self.filters) then + core.error( + "Directory does not match the filters: %s", + table.concat(self.filters, ", ") + ) + return false + end + if self.pick_mode == FilePicker.mode.DIRECTORY_EXISTS then + local path = common.home_expand(text) + local abs_path = check_directory_path(path) + if not abs_path then + core.error("Cannot open directory %q", path) + return false + end + end + return true + end + }) +end + +---Show the command view file or directory browser depending on the +---current file picker mode. +function FilePicker:show_picker() + if + self.pick_mode == FilePicker.mode.FILE + or + self.pick_mode == FilePicker.mode.FILE_EXISTS + then + show_file_picker(self) + else + show_dir_picker(self) + end +end + +function FilePicker:update() + if not FilePicker.super.update(self) then return false end + + if self:get_width() ~= (self.file:get_width() + self.button:get_width()) then + self:set_size( + self.file:get_width() + self.button:get_width(), + self.button:get_height() + ) + end + + return true +end + + +return FilePicker diff --git a/debian/extra/libraries/widget/foldingbook.lua b/debian/extra/libraries/widget/foldingbook.lua new file mode 100644 index 0000000..1b456a3 --- /dev/null +++ b/debian/extra/libraries/widget/foldingbook.lua @@ -0,0 +1,216 @@ +-- +-- FoldingBook Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" + +---Represents a foldingbook pane +---@class widget.foldingbook.pane +---@field public name string +---@field public tab widget.button +---@field public container widget +---@field public expanded boolean +local FoldingBookPane = {} + +---@class widget.foldingbook : widget +---@overload fun(parent:widget?):widget.foldingbook +---@field public panes widget.foldingbook.pane[] +local FoldingBook = Widget:extend() + +---FoldingBook constructor +---@param parent widget +function FoldingBook:new(parent) + FoldingBook.super.new(self, parent) + self.type_name = "widget.foldingbook" + self.panes = {} + self.scrollable = true +end + +---@param pane widget.foldingbook.pane +function FoldingBook:on_tab_click(pane) + pane.expanded = not pane.expanded +end + +---Adds a new pane to the foldingbook and returns a container widget where +---you can add more child elements. +---@param name string +---@param label string +---@return widget container +function FoldingBook:add_pane(name, label) + ---@type widget.button + local tab = Button(self, label) + tab.border.width = 0 + tab:toggle_expand(true) + tab:set_icon("+") + + if #self.panes > 0 then + if self.panes[#self.panes].expanded then + tab:set_position(0, self.panes[#self.panes].container:get_bottom() + 2) + else + tab:set_position(0, self.panes[#self.panes].tab:get_bottom() + 2) + end + else + tab:set_position(0, 10) + end + + local container = Widget(self) + container:set_position(0, tab:get_bottom() + 4) + container:set_size(self:get_width(), 0) + + local pane = { + name = name, + tab = tab, + container = container, + expanded = false + } + + tab.on_click = function() + self:on_tab_click(pane) + end + + table.insert(self.panes, pane) + + return container +end + +---@param name string +---@return widget.foldingbook.pane | nil +function FoldingBook:get_pane(name) + for _, pane in pairs(self.panes) do + if pane.name == name then + return pane + end + end + return nil +end + +---Delete a pane and all its childs from the folding book. +---@param name string +---@return boolean deleted +function FoldingBook:delete_pane(name) + for idx, pane in ipairs(self.panes) do + if pane.name == name then + self:remove_child(pane.tab) + self:remove_child(pane.container) + table.remove(self.panes, idx) + return true + end + end + return false +end + +---Activates the given pane +---@param name string +---@param visible boolean | nil +function FoldingBook:toggle_pane(name, visible) + local pane = self:get_pane(name) + if pane then + if type(visible) == "boolean" then + pane.expanded = visible + else + pane.expanded = not pane.expanded + end + end +end + +---Change the tab label of the given pane. +---@param name string +---@param label string +function FoldingBook:set_pane_label(name, label) + local pane = self:get_pane(name) + if pane then + pane.tab:set_label(label) + return true + end + return false +end + +---Set or remove the icon for the given pane. +---@param name string +---@param icon string +---@param color? renderer.color|nil +---@param hover_color? renderer.color|nil +function FoldingBook:set_pane_icon(name, icon, color, hover_color) + local pane = self:get_pane(name) + if pane then + pane.tab:set_icon(icon, color, hover_color) + return true + end + return false +end + +---Recalculate the position of the elements on resizing or position changes. +function FoldingBook:update() + if not FoldingBook.super.update(self) then return false end + + ---@type widget.foldingbook.pane + local prev_pane = nil + + for _, pane in ipairs(self.panes) do + local tx, ty = 0, 10 + local cx, cy = 0, 0 + local cw, ch = 0, 0 + + if prev_pane then + if prev_pane and prev_pane.container:is_visible() then + ty = prev_pane.container:get_bottom() + 2 + else + ty = prev_pane.tab:get_bottom() + 2 + end + end + + pane.tab:set_position(tx, ty) + + cy = pane.tab:get_bottom() + 4 + cw = self:get_width() + if #pane.container.childs > 0 then + ch = pane.container:get_real_height() + 10 + end + + pane.container.border.color = style.divider + + if pane.expanded and not pane.container.hiding then + pane.container:set_position(cx, cy) + pane.container:set_size(cw) + if not pane.container.visible then + pane.container:set_size(cw, ch) + pane.container:show_animated(true) + pane.tab:set_icon("-") + pane.container.hiding = false + end + elseif pane.container.visible and not pane.container.hiding then + pane.tab:set_icon("+") + pane.container.hiding = true + pane.container:hide_animated(true, false, { + on_complete = function() + pane.container.hiding = false + end + }) + end + + prev_pane = pane + end + + return true +end + +---Here we draw the bottom line on each tab. +function FoldingBook:draw() + if not FoldingBook.super.draw(self) then return false end + + for _, pane in ipairs(self.panes) do + local x = pane.tab.position.x + local y = pane.tab.position.y + pane.tab:get_height() + local w = self:get_width() + renderer.draw_rect(x, y, w, 2, style.selection) + end + + return true +end + + +return FoldingBook diff --git a/debian/extra/libraries/widget/fonts/cache.lua b/debian/extra/libraries/widget/fonts/cache.lua new file mode 100644 index 0000000..2dc6471 --- /dev/null +++ b/debian/extra/libraries/widget/fonts/cache.lua @@ -0,0 +1,287 @@ +local core = require "core" +local common = require "core.common" +local Object = require "core.object" +local FontInfo = require "libraries.widget.fonts.info" + +---@class widget.fonts.cache : core.object +---@overload fun():widget.fonts.cache +---@field fontinfo widget.fonts.info +---@field found integer +---@field found_monospaced integer +---@field building boolean +---@field monosppaced boolean +---@field searching_monospaced boolean +---@field fontdirs table +---@field fonts widget.fonts.data[] +local FontCache = Object:extend() + +---Constructor +function FontCache:new() + self.fontinfo = FontInfo() + self.fontdirs = {} + self.fonts = {} + self.loaded_fonts = {} + self.found = 0 + self.found_monospaced = 0 + self.building = false + self.searching_monospaced = false + self.monospaced = false + + table.insert(self.fontdirs, USERDIR .. "/fonts") + table.insert(self.fontdirs, DATADIR .. "/fonts") + + if PLATFORM == "Windows" then + table.insert(self.fontdirs, HOME .. PATHSEP .. "AppData\\Local\\Microsoft\\Windows\\Fonts" ) + table.insert(self.fontdirs, os.getenv("SYSTEMROOT") .. PATHSEP .. "Fonts" ) + elseif PLATFORM == "Mac OS X" then + table.insert(self.fontdirs, HOME .. "/Library/Fonts") + table.insert(self.fontdirs, "/Library/Fonts") + table.insert(self.fontdirs, "/System/Library/Fonts") + else + table.insert(self.fontdirs, HOME .. "/.local/share/fonts") + table.insert(self.fontdirs, HOME .. "/.fonts") + table.insert(self.fontdirs, "/usr/local/share/fonts") + table.insert(self.fontdirs, "/usr/share/fonts") + end + + if not self:load_cache() then + self:build() + elseif not self.monospaced then + self:verify_monospaced() + end +end + +---Check if the cache is already building. +---@return boolean building +function FontCache:is_building() + if self.building or self.searching_monospaced then + return true + end + return false +end + +---Build the font cache and save it. +---@return boolean started False if cache is already been built +function FontCache:build() + if self:is_building() then + core.log_quiet("The font cache is already been generated, please wait.") + return false + end + + self.found = 0 + self.building = true + self.monospaced = false + self.loaded_fonts = {} + + core.log_quiet("Generating font cache...") + local start_time = system.get_time() + + local this = self + core.add_thread(function() + for _, dir in ipairs(this.fontdirs) do + this:scan_dir(dir) + end + this:save_cache() + this.building = false + this.loaded_fonts = {} + core.log_quiet( + "Font cache generated in %.1fs for %s fonts!", + system.get_time() - start_time, tostring(this.found) + ) + self:verify_monospaced() + end) + + return true +end + +---Clear current font cache and rebuild it. +---@return boolean started False if cache is already been built +function FontCache:rebuild() + if self:is_building() then + core.log_quiet("The font cache is already been generated, please wait.") + return false + end + + local fontcache_file = USERDIR .. "/font_cache.lua" + local file = io.open(fontcache_file, "r") + + if file ~= nil then + file:close() + os.remove(fontcache_file) + end + + self.fonts = {} + self.loaded_fonts = {} + self.found = 0 + self.found_monospaced = 0 + + return self:build() +end + +---Scan a directory for valid font files and load them into the cache. +---@param path string +---@param run_count? integer +function FontCache:scan_dir(path, run_count) + run_count = run_count or 1 + local can_yield = coroutine.running() + local list = system.list_dir(path) + if list then + for _, name in pairs(list) do + if name:match("%.[tToO][tT][fFcC]$") and not self.loaded_fonts[name] then + -- prevent loading of duplicate files + self.loaded_fonts[name] = true + local font_path = path .. PATHSEP .. name + local read, errmsg = self.fontinfo:read(font_path) + + if read then + local font_data + font_data, errmsg = self.fontinfo:get_data() + if font_data then + table.insert(self.fonts, font_data) + self.found = self.found + 1 + else + io.stderr:write( + "Error: " .. path .. PATHSEP .. name .. "\n" + .. " " .. errmsg .. "\n" + ) + end + else + io.stderr:write( + "Error: " .. path .. PATHSEP .. name .. "\n" + .. " " .. errmsg .. "\n" + ) + end + if can_yield and run_count % 100 == 0 then + coroutine.yield() + end + else + self:scan_dir(path .. PATHSEP .. name, run_count) + end + run_count = run_count + 1 + end + end +end + +---Search and mark monospaced fonts on currently loaded cache and save it. +function FontCache:verify_monospaced() + if self:is_building() then + core.log_quiet("The monospaced verification is already running, please wait.") + return + end + + self.found_monospaced = 0 + self.searching_monospaced = true + self.monospaced = false + + core.log_quiet("Finding monospaced fonts...") + local start_time = system.get_time() + + local this = self + core.add_thread(function() + for _, font in ipairs(this.fonts) do + if not font.monospace then + FontInfo.check_is_monospace(font) + end + if font.monospace then + this.found_monospaced = this.found_monospaced + 1 + end + coroutine.yield() + end + this.monospaced = true + this:save_cache() + this.searching_monospaced = false + core.log_quiet( + "Found %s monospaced fonts in %.1fs!", + tostring(this.found_monospaced), system.get_time() - start_time + ) + end) +end + +---Load font cache from persistent file for faster startup time. +function FontCache:load_cache() + local ok, t = pcall(dofile, USERDIR .. "/font_cache.lua") + if ok then + self.fonts = t.fonts + self.monospaced = t.monospaced + self.found = t.found + self.found_monospaced = t.found_monospaced + return true + end + return false +end + +---Store current font cache to persistent file. +function FontCache:save_cache() + local fp = io.open(USERDIR .. "/font_cache.lua", "w") + if fp then + local output = "{\n" + .. "found = "..tostring(self.found)..",\n" + .. "found_monospaced = "..tostring(self.found_monospaced)..",\n" + .. "monospaced = "..tostring(self.monospaced)..",\n" + .. "[\"fonts\"] = " + .. common.serialize( + self.fonts, + { pretty = true, escape = true, sort = true, initial_indent = 1 } + ):gsub("^%s+", "") + .. "\n}\n" + fp:write("return ", output) + fp:close() + end +end + +---Search for a font and return the best match. +---@param name string +---@param style? widget.fonts.style +---@param monospaced? boolean +---@return widget.fonts.data? font_data +---@return string? errmsg +function FontCache:search(name, style, monospaced) + if #self.fonts == 0 then + return nil, "the font cache needs to be rebuilt" + end + + style = style or "regular" + name = name:ulower() + style = style:ulower() + + if name == "monospace" then + name = "mono" + monospaced = true + end + + if not self.monospaced then monospaced = false end + + ---@type widget.fonts.data + local fontdata = nil + local prev_score = 0 + + for _, font in ipairs(self.fonts) do + if not monospaced or (monospaced and font.monospace) then + local score = system.fuzzy_match( + font.fullname:ulower(), + name .. " " .. style, + false + ) + if score ~= nil and (score > prev_score or prev_score == 0) then + fontdata = font + prev_score = score + end + end + end + + if fontdata then + local fontfile = io.open(fontdata.path, "r") + if not fontfile then + return nil, "found font file does not exists, cache is outdated" + else + fontfile:close() + end + else + return nil, "no matching font found" + end + + return fontdata +end + + +return FontCache diff --git a/debian/extra/libraries/widget/fonts/info.lua b/debian/extra/libraries/widget/fonts/info.lua new file mode 100644 index 0000000..3ffa696 --- /dev/null +++ b/debian/extra/libraries/widget/fonts/info.lua @@ -0,0 +1,550 @@ +-- Based on the code from: +-- https://gist.github.com/zr-tex8r/1969061a025fa4fc5486c9c28460f48e + +local Object = require "core.object" + +-------------------------------------------------------------------------------- +-- Class Declarations +-------------------------------------------------------------------------------- + +---@class widget.fonts.cdata : core.object +---@overload fun(data:string):widget.fonts.cdata +---@field private data string +---@field private position integer +local FontCDATA = Object:extend() + +---@class widget.fonts.reader : core.object +---@overload fun(font_path?:string):widget.fonts.reader +---@field private file file* +---@field private path string +local FontReader = Object:extend() + +---@class widget.fonts.data +---@field public path string +---@field public id number @Numerical id of the font +---@field public type '"ttc"' | '"ttf"' | '"otf"' +---@field public copyright string +---@field public family string +---@field public subfamily '"Regular"' | '"Bold"' | '"Italic"' | '"Bold Italic"' +---@field public fullname string +---@field public version string +---@field public psname string +---@field public url string +---@field public license string +---@field public tfamily string +---@field public tsubfamily '"Regular"' | '"Bold"' | '"Italic"' | '"Bold Italic"' +---@field public wwsfamily string +---@field public wwssubfamily string +---@field public monospace boolean + +---@class widget.fonts.info : core.object +---@overload fun(font_path?:string):widget.fonts.info +---@field private reader widget.fonts.reader +---@field public path string @Path of the font file +---@field public data widget.fonts.data[] @Holds the metadata for each of the embedded fonts +local FontInfo = Object:extend() + +---@alias widget.fonts.style +---|>'"regular"' +---| '"bold"' +---| '"italic"' +---| '"bold italic"' +---| '"thin"' +---| '"medium"' +---| '"light"' +---| '"black"' +---| '"condensed"' +---| '"oblique"' +---| '"bold oblique"' +---| '"extra nold"' +---| '"Extra bold italic"' +---| '"bold condensed"' + +-------------------------------------------------------------------------------- +-- FontCDATA Implementation +-------------------------------------------------------------------------------- +function FontCDATA:new(data) + self.data = data + self.position = 0 +end + +function FontCDATA:__tostring() + return "cdata(pos="..self.position..")" +end + +function FontCDATA:pos(p) + if not p then return self.position end + self.position = p + return self +end + +function FontCDATA:unum(b) + local v, data = 0, self.data + assert(#data >= self.position + b, 11) + for _ = 1, b do + self.position = self.position + 1 + v = v * 256 + data:byte(self.position) + end + return v +end + +function FontCDATA:setunum(b, v) + local t, data = {}, self.data + t[1] = data:sub(1, self.position) + self.position = self.position + b + assert(#data >= self.position, 12) + t[b + 2] = data:sub(self.position + 1) + for i = 1, b do + t[b + 2 - i] = string.char(v % 256) + v = math.floor(v / 256) + end + self.data = table.concat(t, '') + return self +end + +function FontCDATA:str(b) + local data = self.data + self.position = self.position + b + assert(#data >= self.position, 13) + return data:sub(self.position - b + 1, self.position) +end + +function FontCDATA:setstr(s) + local t, data = {}, self.data + t[1], t[2] = data:sub(1, self.position), s + self.position = self.position + #s + assert(#data >= self.position, 14) + t[3] = data:sub(self.position + 1) + self.data = table.concat(t, '') + return self +end + +function FontCDATA:ushort() + return self:unum(2) +end + +function FontCDATA:ulong() + return self:unum(4) +end + +function FontCDATA:setulong(v) + return self:setunum(4, v) +end + +function FontCDATA:ulongs(num) + local t = {} + for i = 1, num do + t[i] = self:unum(4) + end + return t +end + +-------------------------------------------------------------------------------- +-- FontReader Implementation +-------------------------------------------------------------------------------- +function FontReader:new(font_path) + local file, errmsg = io.open(font_path, "rb") + assert(file, errmsg) + self.file = file + self.path = font_path +end + +function FontReader:__gc() + if self.file then + self.file:close() + end +end + +function FontReader:__tostring() + return "reader("..self.path..")" +end + +---@param offset integer +---@param len integer +---@return widget.fonts.cdata? +---@return string|nil errmsg +function FontReader:cdata(offset, len) + local data, errmsg = self:read(offset, len) + if data then + return FontCDATA(data) + end + return nil, errmsg +end + +function FontReader:read(offset, len) + self.file:seek("set", offset) + local data = self.file:read(len) + if data:len() ~= len then + return nil, "failed reading font data" + end + return data +end + +function FontReader:close() + self.file:close() + self.file = nil +end + +-------------------------------------------------------------------------------- +-- FontInfo Helper Functions +-------------------------------------------------------------------------------- +-- speeds up function lookups +local floor, ceil = math.floor, math.ceil + +local function div(x, y) + return floor(x / y), x % y +end + +local function utf16betoutf8(src) + local s, d = { tostring(src):byte(1, -1) }, {} + for i = 1, #s - 1, 2 do + local c = s[i] * 256 + s[i+1] + if c < 0x80 then d[#d+1] = c + elseif c < 0x800 then + local x, y = div(c, 0x40) + d[#d+1] = x + 0xC0; d[#d+1] = y + 0x80 + elseif c < 0x10000 then + local x, y, z = div(c, 0x1000); y, z = div(y, 0x40) + d[#d+1] = x + 0xE0; d[#d+1] = y + 0x80; d[#d+1] = z + 0x80 + else + assert(nil) + end + end + return string.char(table.unpack(d)) +end + +local file_type = { + [0x74746366] = 'ttc', + [0x10000] = 'ttf', + [0x4F54544F] = 'otf', + [1008813135] = 'ttc' +} + +---@param reader widget.fonts.reader +local function otf_offset(reader) + local cd, errmsg = reader:cdata(0, 12) + if not cd then + return nil, errmsg + end + local tag = cd:ulong() + local ftype = file_type[tag]; + if ftype == 'ttc' then + local ver = cd:ulong(); + local num = cd:ulong(); + cd, errmsg = reader:cdata(12, 4 * num) + if not cd then + return nil, errmsg + end + local res = cd:ulongs(num); + return res + elseif ftype == 'otf' or ftype == 'ttf' then + return { 0 } + else + return nil, string.format("unknown file tag: %s", tag) + end +end + +---@param reader widget.fonts.reader +---@param fofs integer +---@param ntbl integer +local function otf_name_table(reader, fofs, ntbl) + local cd_d = reader:cdata(fofs + 12, 16 * ntbl) + if not cd_d then + return nil, "error reading names table" + end + for _ = 1, ntbl do + local t = {-- tag, csum, ofs, len + cd_d:str(4), cd_d:ulong(), cd_d:ulong(), cd_d:ulong() + } + if t[1] == 'name' then + return reader:cdata(t[3], ceil(t[4] / 4) * 4) + end + end + return nil, "name table is missing" +end + +---@param cdata widget.fonts.cdata +local function otf_name_records(cdata) + local nfmt, nnum, nofs = cdata:ushort(), cdata:ushort(), cdata:ushort() + assert(nfmt == 0, string.format("unsupported name table format: %s", nfmt)) + local nr = {} + for i = 1, nnum do + nr[i] = { -- pid, eid, langid, nameid, len, ofs + cdata:ushort(), cdata:ushort(), cdata:ushort(), + cdata:ushort(), cdata:ushort(), cdata:ushort() + nofs + } + end + return nr +end + +---@param cdata widget.fonts.cdata +local function otf_name(cdata, nr, nameid) + local function seek(pid, eid, lid) + for i = 1, #nr do + local t = nr[i] + local ok = (t[4] == nameid and t[1] == pid and t[2] == eid and + t[3] == lid) + if ok then return t end + end + end + + local rec = seek(3, 1, 0x409) + or seek(3, 10, 0x409) + or seek(1, 0, 0) or seek(0, 3, 0) + or seek(0, 4, 0) or seek(0, 6, 0) + + if not rec then return '' end + local s = cdata:pos(rec[6]):str(rec[5]) + return (rec[1] == 3) and utf16betoutf8(s) or s +end + +---@param reader widget.fonts.reader +local function otf_list(reader, fid, fofs) + local cd_fh, errmsg = reader:cdata(fofs, 12) + if not cd_fh then + return nil, errmsg + end + + local tag = cd_fh:ulong() + local ntbl = cd_fh:ushort() + + local cd_n = nil + cd_n, errmsg = otf_name_table(reader, fofs, ntbl) + if not cd_n then + return nil, errmsg + end + + local ext = { id = fid; type = file_type[tag] or '' } + + local nr = nil + nr, errmsg = otf_name_records(cd_n) + if not nr then + return nil, errmsg + end + + local output = { + id = ext.id, + type = ext.type, + copyright = otf_name(cd_n, nr, 0), + family = otf_name(cd_n, nr, 1), + subfamily = otf_name(cd_n, nr, 2), + fullname = otf_name(cd_n, nr, 4), + version = otf_name(cd_n, nr, 5), + psname = otf_name(cd_n, nr, 6), + url = otf_name(cd_n, nr, 11), + license = otf_name(cd_n, nr, 13), + tfamily = otf_name(cd_n, nr, 16), + tsubfamily = otf_name(cd_n, nr, 17), + } + + return output +end + +-------------------------------------------------------------------------------- +-- FontInfo Implementation +-------------------------------------------------------------------------------- + +---Helper function to check and update a font monospace attribute. +---@param font_data widget.fonts.data +---@return boolean checked +---@return string? errmsg +function FontInfo.check_is_monospace(font_data) + if font_data then + local loaded, fontren = pcall(renderer.font.load, font_data.path, 8, {}) + if not loaded then + return false, "could not load font" + else + if fontren:get_width("|") == fontren:get_width("W") then + font_data.monospace = true + else + font_data.monospace = false + end + end + end + return true +end + +---Constructor +---@param font_path? string +function FontInfo:new(font_path) + if type(font_path) == "string" then + self:read(font_path) + else + self.data = {} + self.path = "" + self.last_error = "no font given" + end +end + +local function fontinfo_read_native(self, font_path) + ---@type widget.fonts.data + local font + ---@type string? + local errmsg + + ---@diagnostic disable-next-line + font, errmsg = renderer.font.get_metadata(font_path) + + if not font then + self.last_error = errmsg + return font, errmsg + end + + local add = true + local family = nil + if font.tfamily then + family = font.tfamily + elseif font.family then + family = font.family + end + + local subfamily = nil + if font.tsubfamily then + subfamily = font.tsubfamily -- sometimes tsubfamily includes more styles + elseif font.subfamily then + subfamily = font.subfamily + end + + -- fix font meta data or discard if empty + if family and subfamily then + font.fullname = family .. " " .. subfamily + elseif font.fullname and family and not font.fullname:ufind(family, 1, true) then + font.fullname = font.fullname .. " " .. family + elseif not font.fullname and family then + font.fullname = family + else + self.last_error = "font metadata is empty" + add = false + end + + if add then + table.insert(self.data, font) + else + return nil, self.last_error + end + + return true +end + +local function fontinfo_read_nonnative(self, font_path) + self.reader = FontReader(font_path) + + local tofs, errmsg = otf_offset(self.reader) + + if not tofs then + self.last_error = errmsg + return nil, errmsg + end + + local data = nil + for i = 1, #tofs do + data, errmsg = otf_list(self.reader, i - 1, tofs[i]) + if data then + table.insert(self.data, data) + else + self.last_error = errmsg + return nil, errmsg + end + end + + if self.data[1] then + local font = self.data[1] + + local family = nil + if font.tfamily ~= "" then + family = font.tfamily + elseif font.family ~= "" then + family = font.family + end + + local subfamily = nil + if font.tsubfamily ~= "" then + subfamily = font.tsubfamily -- sometimes tsubfamily includes more styles + elseif font.subfamily ~= "" then + subfamily = font.subfamily + end + + -- fix font meta data or discard if empty + if family and subfamily then + font.fullname = family .. " " .. subfamily + elseif font.fullname ~= "" and family and not font.fullname:ufind(family, 1, true) then + font.fullname = font.fullname .. " " .. family + elseif font.fullname == "" and family then + font.fullname = family + else + self.data = {} + self.last_error = "font metadata is empty" + return nil, self.last_error + end + end + + self.reader:close() + + return true +end + +---Open a font file and read its metadata. +---@param font_path string +---@return widget.fonts.info? +---@return string|nil errmsg +function FontInfo:read(font_path) + self.data = {} + self.path = font_path + + local read, errmsg + + ---@diagnostic disable-next-line + if type(renderer.font.get_metadata) == "function" then + read, errmsg = fontinfo_read_native(self, font_path) + else + read, errmsg = fontinfo_read_nonnative(self, font_path) + end + + if not read then + return read, errmsg + end + + return self +end + +---Get the amount of collections on the font file. +---@return integer +function FontInfo:embedded_fonts_count() + return #self.data +end + +---Get the metadata of a previously read font file without +---copyright and license information which can be long. +---@param idx? integer Optional position of the embedded font +---@return widget.fonts.data? +---@return string|nil errmsg +function FontInfo:get_data(idx) + idx = idx or 1 + local data = {} + + if #self.data > 0 and self.data[idx] then + data = self.data[idx] + else + return nil, self.last_error + end + + return { + path = self.path, + id = data.id, + type = data.type, + family = data.family, + subfamily = data.subfamily, + fullname = data.fullname, + version = data.version, + psname = data.psname, + url = data.url, + tfamily = data.tfamily, + tsubfamily = data.tsubfamily, + wwsfamily = data.wwsfamily, + wwssubfamily = data.wwssubfamily, + monospace = data.monospace or false + } +end + + +return FontInfo diff --git a/debian/extra/libraries/widget/fonts/init.lua b/debian/extra/libraries/widget/fonts/init.lua new file mode 100644 index 0000000..5b3c51f --- /dev/null +++ b/debian/extra/libraries/widget/fonts/init.lua @@ -0,0 +1,230 @@ +local core = require "core" +local common = require "core.common" +local style = require "core.style" +local FontCache = require "libraries.widget.fonts.cache" +local StatusView = require "core.statusview" + +---@class widget.fonts +local Fonts = {} + +---@type widget.fonts.cache | nil +local fontcache = nil + +---@type table | nil +local fonts = nil + +---Last time the status view item was rendered +local last_statusview_render = 0 + +---The amount of fonts matching the user query +local matching_fonts = 0 + +---Flag that indicates if command view font picker is for monospaced +local pick_monospaced = false + +---Generate the list of fonts displayed on the CommandView. +---@param monospaced? boolean Only display fonts detected as monospaced. +local function generate_fonts(monospaced) + if fontcache then + if fontcache.building then monospaced = false end + fonts = {} + for idx, f in ipairs(fontcache.fonts) do + if not monospaced or (monospaced and f.monospace) then + table.insert(fonts, f.fullname .. "||" .. idx) + end + end + end +end + +---Helper function to split a string by a given delimeter. +local function split(s, delimeter, delimeter_pattern) + if not delimeter_pattern then + delimeter_pattern = delimeter + end + + local result = {}; + for match in (s..delimeter):gmatch("(.-)"..delimeter_pattern) do + table.insert(result, match); + end + return result; +end + +local already_cleaning = false + +---Clean the generated font cache used on command view to free some ram +local function clean_fonts_cache() + if not fontcache or already_cleaning then return end + if not fontcache.building and not fontcache.searching_monospaced then + fontcache = nil + fonts = nil + collectgarbage "collect" + else + already_cleaning = true + core.add_thread(function() + while fontcache.building or fontcache.searching_monospaced do + coroutine.yield(1) + end + if + core.active_view ~= core.command_view + or + ( + core.command_view.label ~= "Select Font: " + and + core.command_view.label ~= "List only monospaced fonts?: " + ) + then + fontcache = nil + fonts = nil + collectgarbage "collect" + already_cleaning = false + end + end) + end +end + +---Launch the commandview and let the user select a font. +---@param callback fun(name:string, path:string) +---@param monospaced boolean +function Fonts.show_picker(callback, monospaced) + if not fontcache then fontcache = FontCache() end + + pick_monospaced = monospaced + + if not fontcache.building and (not monospaced or fontcache.monospaced) then + generate_fonts(monospaced) + else + core.add_thread(function() + while + (fontcache.building or (monospaced and not fontcache.monospaced)) + and + core.active_view == core.command_view + and + core.command_view.label == "Select Font: " + do + core.command_view:update_suggestions() + coroutine.yield(2) + end + generate_fonts(monospaced) + core.command_view:update_suggestions() + end) + end + + last_statusview_render = system.get_time() + + core.command_view:enter("Select Font", { + submit = function(text, item) + callback(item.text, item.info) + clean_fonts_cache() + end, + suggest = function(text) + if fontcache.building or (monospaced and fontcache.searching_monospaced) then + generate_fonts(monospaced) + end + local res = common.fuzzy_match(fonts, text) + matching_fonts = #res + for i, name in ipairs(res) do + local font_info = split(name, "||") + local id = tonumber(font_info[2]) + local font_data = fontcache.fonts[id] + res[i] = { + text = font_data.fullname, + info = font_data.path, + id = id + } + end + return res + end, + cancel = function() + clean_fonts_cache() + end + }) +end + +---Same as `show_picker()` but asks the user if he wants a monospaced font. +---@param callback fun(name:string, path:string) +function Fonts.show_picker_ask_monospace(callback) + if not fontcache then fontcache = FontCache() end + + core.command_view:enter("List only monospaced fonts?", { + submit = function(text, item) + Fonts.show_picker(callback, item.mono) + end, + suggest = function(text) + local res = common.fuzzy_match({"Yes", "No"}, text) + for i, name in ipairs(res) do + res[i] = { + text = name, + mono = text == "Yes" and true or false + } + end + return res + end, + cancel = function() + clean_fonts_cache() + end + }) +end + +---Check if the font cache is been built. +---@return boolean building +function Fonts.cache_is_building() + if not fontcache then return false end + return fontcache:is_building() +end + +---Remove current fonts cache file and regenerates a fresh one. +---@return boolean started False if cache is already been built +function Fonts.clean_cache() + if not fontcache then fontcache = FontCache() end + return fontcache:rebuild() +end + +core.status_view:add_item({ + predicate = function() + return core.active_view == core.command_view + and core.command_view.label == "Select Font: " + end, + name = "widget:font-select", + alignment = StatusView.Item.LEFT, + get_item = function() + local found = 0 + local dots, status = "", "" + if fontcache then + if fontcache.building or fontcache.searching_monospaced then + dots = "." + if system.get_time() - last_statusview_render >= 3 then + last_statusview_render = system.get_time() + elseif system.get_time() - last_statusview_render >= 2 then + dots = "..." + elseif system.get_time() - last_statusview_render >= 1 then + dots = ".." + end + end + if fontcache.building then + status = " | searching system fonts" .. dots + elseif fontcache.searching_monospaced then + status = " | detecting monospaced fonts" .. dots + end + + if fontcache.building or not pick_monospaced then + found = fontcache.found + else + found = fontcache.found_monospaced + end + end + + return { + style.text, + style.font, + "Matches: " + .. tostring(matching_fonts) + .. " / " + .. tostring(found) + .. status + } + end, + position = 1 +}) + + +return Fonts diff --git a/debian/extra/libraries/widget/fontslist.lua b/debian/extra/libraries/widget/fontslist.lua new file mode 100644 index 0000000..b2109a0 --- /dev/null +++ b/debian/extra/libraries/widget/fontslist.lua @@ -0,0 +1,223 @@ +-- +-- FontsList Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- +local style = require "core.style" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" +local ListBox = require "libraries.widget.listbox" +local FontDialog = require "libraries.widget.fontdialog" +local MessageBox = require "libraries.widget.messagebox" + +---@class widget.fontslist.font : widget +---@field name string +---@field path string + +---@class widget.fontslist : widget +---@overload fun(parent?:widget):widget.fontslist +---@field list widget.listbox +---@field add widget.button +---@field remove widget.button +---@field up widget.button +---@field down widget.button +---@field options renderer.fontoptions +---@field private dialog boolean +local FontsList = Widget:extend() + +---Constructor +---@param parent widget +function FontsList:new(parent) + FontsList.super.new(self, parent) + + self.type_name = "widget.fontslist" + + self.border.width = 0 + + self.dialog = false + + self.options = {} + + self.list = ListBox(self) + + local this = self + + function self.list:on_mouse_pressed(button, x, y, clicks) + if not ListBox.on_mouse_pressed(self, button, x, y, clicks) then + return false + end + + if clicks == 2 and not this.dialog then + this.dialog = true + local selected = this.list:get_selected() + local fontdata = this.list:get_row_data(selected) + ---@type widget.inputdialog + local font = FontDialog(fontdata, this:get_options()) + function font:on_save(fontdata, options) + this:set_options(options) + this:edit_font(selected, fontdata) + end + function font:on_close() + FontDialog.on_close(self) + self:destroy() + this.dialog = false + end + font:show() + end + + return true + end + + self.add = Button(self, "Add") + self.add:set_icon("B") + function self.add:on_click() + if #this.list.rows > 9 then + MessageBox.error("Max Fonts Reached", "Only a maximum of ten fonts can be added.") + return + end + if not this.dialog then + this.dialog = true + ---@type widget.inputdialog + local font = FontDialog(nil, this:get_options()) + function font:on_save(fontdata, options) + this:set_options(options) + this:add_font(fontdata) + end + function font:on_close() + FontDialog.on_close(self) + self:destroy() + this.dialog = false + end + font:show() + end + end + + self.remove = Button(self, "Remove") + self.remove:set_icon("C") + function self.remove:on_click() + local selected = this.list:get_selected() + if selected then + if #this.list.rows > 1 then + this:remove_font(selected) + else + MessageBox.error("Font required", "A minimum of one font is needed") + end + else + MessageBox.error("No font selected", "Please select a font to remove") + end + end + + self.up = Button(self, "") + self.up:set_icon("<") + self.up:set_tooltip("increase font priority") + function self.up:on_click() + local selected = this.list:get_selected() + if selected then + this.list:move_row_up(selected) + this:on_change() + else + MessageBox.error("No font selected", "Please select a font to move") + end + end + + self.down = Button(self, "") + self.down:set_icon(">") + self.down:set_tooltip("decrease font priority") + function self.down:on_click() + local selected = this.list:get_selected() + if selected then + this.list:move_row_down(selected) + this:on_change() + else + MessageBox.error("No font selected", "Please select a font to move") + end + end +end + +---Add a new font into the list. +---@param font widget.fontslist.font +function FontsList:add_font(font) + self.list:add_row({font.name}, font) + self.list:set_visible_rows() + self:on_change() +end + +---Edit an existing font on the list. +---@param idx integer +---@param font widget.fontslist.font +function FontsList:edit_font(idx, font) + self.list:set_row(idx, {font.name}) + self.list:set_row_data(idx, font) + self:on_change() +end + +---Remove the given font from the list. +---@param idx integer +function FontsList:remove_font(idx) + self.list:remove_row(idx) + self:on_change() +end + +---Return the fonts from the list. +---@return table +function FontsList:get_fonts() + local output = {} + local count = #self.list.rows + for i=1, count, 1 do + table.insert(output, self.list:get_row_data(i)) + end + return output +end + +---Set the global options for the fonts group +---@param options renderer.fontoptions +function FontsList:set_options(options) + self.options = options +end + +---Get the global options for the font group +---@return renderer.fontoptions +function FontsList:get_options() + return self.options +end + +function FontsList:update() + if not FontsList.super.update(self) then return false end + + if self.size.x == 0 then + self.size.x = self.add:get_width() + + (style.padding.x / 2) + self.remove:get_width() + + (style.padding.x / 2) + self.up:get_width() + + (style.padding.x / 2) + self.down:get_width() + (50 * SCALE) + self.size.y = self.add:get_height() + (style.padding.y * 2) + 100 + end + + self.list:set_position(0, 0) + + self.list:set_size( + self.size.x, + self.size.y - self.add:get_height() - (style.padding.y * 2) + ) + + self.add:set_position(0, self.list:get_bottom() + style.padding.y) + + self.remove:set_position( + self.add:get_right() + (style.padding.x / 2), + self.list:get_bottom() + style.padding.y + ) + + self.up:set_position( + self.remove:get_right() + (style.padding.x / 2), + self.list:get_bottom() + style.padding.y + ) + + self.down:set_position( + self.up:get_right() + (style.padding.x / 2), + self.list:get_bottom() + style.padding.y + ) + + return true +end + + +return FontsList diff --git a/debian/extra/libraries/widget/init.lua b/debian/extra/libraries/widget/init.lua new file mode 100644 index 0000000..c25352f --- /dev/null +++ b/debian/extra/libraries/widget/init.lua @@ -0,0 +1,1544 @@ +-- +-- Base widget implementation for lite. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local config = require "core.config" +local style = require "core.style" +local keymap = require "core.keymap" +local View = require "core.view" +local ScrollBar = require "libraries.widget.scrollbar" +local RootView + +---Represents the border of a widget. +---@class widget.border +---@field public width number +---@field public color renderer.color | nil + +---Represents the position of a widget. +---@class widget.position +---@field public x number Real X +---@field public y number Real y +---@field public rx number Relative X +---@field public ry number Relative Y +---@field public dx number Dragging initial x position +---@field public dy number Dragging initial y position + +---@class widget.animation.options +---Prevents duplicated animations from getting added. +---@field name? string +---Speed of the animation, defaults to 0.5 +---@field rate? number +---Called each time the value of a property changes. +---@field on_step? fun(target:table, property:string, value:number) +---Called when the animation finishes. +---@field on_complete? fun(widget:widget) + +---@class widget.animation +---@field target table +---@field properties table +---@field options? widget.animation.options + +---Represents a reference to a font stored elsewhere. +---@class widget.fontreference +---@field public container table +---@field public name string + +---@alias widget.font widget.fontreference | renderer.font | string + +---@alias widget.clicktype +---| "left" +---| "right" + +---@alias widget.styledtext table + +---A base widget +---@class widget : core.view +---@overload fun(parent?:widget, floating?:boolean):widget +---@field public super widget +---@field public parent widget | nil +---@field public name string +---@field public position widget.position +---Modifying this property directly is not advised, use set_size() instead. +---@field public size widget.position +---@field public childs table +---@field public child_active widget | nil +---@field public zindex integer +---@field public border widget.border +---@field public clickable boolean +---@field public draggable boolean +---@field public scrollable boolean +---@field public font widget.font +---@field public foreground_color renderer.color +---@field public background_color renderer.color +---@field public render_background boolean +---@field public type_name string +---@field protected visible boolean +---@field protected has_focus boolean +---@field protected dragged boolean +---@field protected tooltip string +---@field protected label string | widget.styledtext +---@field protected input_text boolean +---@field protected textview widget +---@field protected next_zindex integer +---@field protected mouse widget.position +---@field protected prev_size widget.position +---@field protected mouse_is_pressed boolean +---@field protected mouse_is_hovering boolean +---@field protected mouse_pressed_outside boolean +---@field protected is_scrolling boolean +---By default is set to true to allow ctrl+wheel or cmd+wheel on mac to scale +---the interface, you can set it to false on your parent widget to allow +---manually intercepting ctrl+wheel. +---@field protected skip_scroll_ctrl boolean +---@field protected captured_widget widget Widget that captured mouse events +---@field protected animations widget.animation[] +local Widget = View:extend() + +---Indicates on a widget.styledtext that a new line follows. +---@type integer +Widget.NEWLINE = 1 + +---Keep track of last hovered widget to properly trigger on_mouse_leave +---@type widget | nil +local last_hovered_child = nil + +---A list of floating widgets that need to receive events. +---@type table +local floating_widgets = {} + +---Flag that indicates if the tooltip is been shown +---@type boolean +local widget_showing_tooltip = false + +---When no parent is given to the widget constructor it will automatically +---overwrite RootView methods to intercept system events. +---@param parent? widget +---@param floating? boolean +function Widget:new(parent, floating) + Widget.super.new(self) + + self.v_scrollbar = ScrollBar(self, {direction = "v", alignment = "e"}) + self.h_scrollbar = ScrollBar(self, {direction = "h", alignment = "e"}) + + self.type_name = "widget" + self.parent = parent + self.name = "---" -- defaults to the application name + if type(floating) == "boolean" then + self.defer_draw = floating + else + self.defer_draw = true + end + self.childs = {} + self.child_active = nil + self.zindex = nil + self.next_zindex = 1 + self.border = { + width = 1, + color = nil + } + self.foreground_color = nil + self.background_color = nil + self.render_background = true + self.visible = parent and true or false + self.has_focus = false + self.clickable = true + self.draggable = false + self.dragged = false + self.font = "font" + self.force_events = {} + self.tooltip = "" + self.label = "" + self.input_text = false + self.textview = nil + self.mouse = {x = 0, y = 0} + self.prev_size = {x = 0, y = 0} + self.is_scrolling = false + self.skip_scroll_ctrl = true + + self.mouse_is_pressed = false + self.mouse_is_hovering = false + + -- used to allow proper node resizing + self.mouse_pressed_outside = false + + self.animations = {} + + if parent then + parent:add_child(self) + elseif self.defer_draw then + table.insert(floating_widgets, self) + Widget.override_rootview() + end + + self:set_position(0, 0) +end + +---Useful for debugging. +function Widget:__tostring() + return self.type_name +end + +---Add a child widget, automatically assign a zindex if non set and sorts +---them in reverse order for better events matching. +---@param child widget +function Widget:add_child(child) + if not child.zindex then + child.zindex = self.next_zindex + self.next_zindex = self.next_zindex + 1 + end + + table.insert(self.childs, child) + table.sort(self.childs, function(t1, t2) return t1.zindex > t2.zindex end) +end + +---Remove a child widget. +---@param child widget +function Widget:remove_child(child) + for position, element in ipairs(self.childs) do + if child == element then + child:destroy_childs() + table.remove(self.childs, position) + break + end + end +end + +---Show the widget. +function Widget:show() + if not self.parent then + if self.size.x <= 0 or self.size.y <= 0 then + self.size.x = self.prev_size.x + self.size.y = self.prev_size.y + end + self.prev_size.x = 0 + self.prev_size.y = 0 + end + self.visible = true + -- re-triggers update to make sure everything was properly calculated + -- and redraw the interface once, maybe something else can be changed + -- to not require this action, but for now lets do this. + core.add_thread(function() + self:update() + core.redraw = true + end) +end + +---Perform an animated show. +---@param lock_x? boolean Do not resize width while animating +---@param lock_y? boolean Do not resize height while animating +---@param options? widget.animation.options +function Widget:show_animated(lock_x, lock_y, options) + if not self.parent then + if self.size.x <= 0 or self.size.y <= 0 then + self.size.x = self.prev_size.x + self.size.y = self.prev_size.y + end + self.prev_size.x = 0 + self.prev_size.y = 0 + end + + local target_x, target_y = math.floor(self.size.x), math.floor(self.size.y) + self.size.x = lock_x and target_x or 0 + self.size.y = lock_y and target_y or 0 + local properties = {} + if not lock_x then properties["x"] = target_x end + if not lock_y then properties["y"] = target_y end + options = options or {} + self:animate(self.size, properties, { + name = options.name or "show_animated", + rate = options.rate, + on_step = options.on_step, + on_complete = options.on_complete + }) + + self.visible = true +end + +---Hide the widget. +function Widget:hide() + self.visible = false + -- we need to force size to zero on parent widget to properly hide it + -- when used as a lite node, otherwise the reserved space of the node + -- will stay visible and dragging will reveal empty space. + if not self.parent then + if self.size.x > 0 or self.size.y > 0 then + -- we only do this once to prevent issues of consecutive hide calls + if self.prev_size.x == 0 and self.prev_size.y == 0 then + self.prev_size.x = self.size.x + self.prev_size.y = self.size.y + end + self.size.x = 0 + self.size.y = 0 + end + end +end + +---Perform an animated hide. +---@param lock_x? boolean Do not resize width while animating +---@param lock_y? boolean Do not resize height while animating +---@param options? widget.animation.options +function Widget:hide_animated(lock_x, lock_y, options) + local x, y = self.size.x, self.size.y + local target_x = lock_x and self.size.x or 0 + local target_y = lock_y and self.size.y or 0 + local properties = {} + if not lock_x then properties["x"] = target_x end + if not lock_y then properties["y"] = target_y end + options = options or {} + self:animate(self.size, properties, { + name = options.name or "hide_animated", + rate = options.rate, + on_step = options.on_step, + on_complete = function() + self.size.x, self.size.y = x, y + self:hide() + if options.on_complete then + options.on_complete(self) + end + end + }) +end + +---When set to false the background rendering is disabled. +---@param enable? boolean | nil +function Widget:toggle_background(enable) + if type(enable) == "boolean" then + self.render_background = enable + else + self.render_background = not self.render_background + end +end + +---Toggle visibility of widget. +---@param animated? boolean +---@param lock_x? boolean +---@param lock_y? boolean +---@param options? widget.animation.options +function Widget:toggle_visible(animated, lock_x, lock_y, options) + if not self.visible then + if not animated then + self:show() + else + self:show_animated(lock_x, lock_y, options) + end + else + if not animated then + self:hide() + else + self:hide_animated(lock_x, lock_y, options) + end + end +end + +---Check if the widget is visible also recursing to the parent visibility. +---@return boolean +function Widget:is_visible() + if + not self.visible or (self.parent and not self.parent:is_visible()) + then + return false + end + return true +end + +---Taken from the logview and modified it a tiny bit. +---TODO: something similar should be on lite-xl core. +---@param font widget.font +---@param text string +---@param x integer +---@param y integer +---@param color renderer.color +---@param only_calc boolean +---@return integer resx +---@return integer resy +---@return integer width +---@return integer height +function Widget:draw_text_multiline(font, text, x, y, color, only_calc) + font = self:get_font(font) + local th = font:get_height() + local resx, resy = x, y + local width, height = 0, 0 + for line in (text .. "\n"):gmatch("(.-)\n") do + resy = y + if only_calc then + resx = x + font:get_width(line) + else + resx = renderer.draw_text(font, line, x, y, color) + end + y = y + th + width = math.max(width, resx - x) + height = height + th + end + return resx, resy, width, height +end + +---Render or calculate the size of the specified range of elements +---in a styled text elemet. +---@param text widget.styledtext +---@param start_idx integer +---@param end_idx integer +---@param x integer +---@param y integer +---@param only_calc boolean +---@return integer width +---@return integer height +function Widget:draw_styled_text(text, x, y, only_calc, start_idx, end_idx) + local font = self:get_font() + local color = self.foreground_color or style.text + local width = 0 + local height = font:get_height() + local new_line = false + local nx = x + + start_idx = start_idx or 1 + end_idx = end_idx or #text + + for pos=start_idx, end_idx, 1 do + local element = text[pos] + local ele_type = type(element) + if + ele_type == "userdata" + or + (element.container or type(element[1]) == "userdata") + then + if ele_type == "table" and element.container then + font = element.container[element.name] + else + font = element + end + elseif ele_type == "table" then + color = element + elseif element == Widget.NEWLINE then + y = y + font:get_height() + nx = x + new_line = true + elseif ele_type == "string" then + local rx, ry, w, h = self:draw_text_multiline( + font, element, nx, y, color, only_calc + ) + y = ry + nx = rx + if new_line then + height = height + h + width = math.max(width, w) + new_line = false + else + height = math.max(height, h) + width = width + w + end + end + end + + return width, height +end + +---Draw the widget configured border or custom one. +---@param x? number +---@param y? number +---@param w? number +---@param h? number +function Widget:draw_border(x, y, w, h) + if self.border.width <= 0 then return end + + x = x or self.position.x + y = y or self.position.y + w = w or self.size.x + h = h or self.size.y + + x = x - self.border.width + y = y - self.border.width + w = w + (self.border.width * 2) + h = h + (self.border.width * 2) + + -- Draw lines instead of full rectangle to be able to draw on top + + --top + renderer.draw_rect( + x, y, w + x % 1 - self.border.width, self.border.width, + self.border.color or style.text + ) + --bottom + renderer.draw_rect( + x, y+h - self.border.width, w + x % 1 - self.border.width, self.border.width, + self.border.color or style.text + ) + --right + renderer.draw_rect( + x+w - self.border.width, y, self.border.width, h, + self.border.color or style.text + ) + --left + renderer.draw_rect( + x, y, self.border.width, h, + self.border.color or style.text + ) +end + +---Called by lite node system to properly resize the widget. +---@param axis string | "'x'" | "'y'" +---@param value number +function Widget:set_target_size(axis, value) + if not self.visible then + return false + end + if axis == "x" then + self:set_size(value) + else + self:set_size(nil, value) + end + return true +end + +---@param width? integer +---@param height? integer +function Widget:set_size(width, height) + -- take into consideration the border as part of size + if width then + if width > (self.border.width * 2) then + width = width - (self.border.width * 2) + else + width = 0 + end + end + if height then + if height > (self.border.width * 2) then + height = height - (self.border.width * 2) + else + height = 0 + end + end + + if not self.parent and not self.visible then + if width then self.prev_size.x = width end + if height then self.prev_size.y = height end + else + if width then self.size.x = width end + if height then self.size.y = height end + end +end + +---Set the widget border size and appropriately re-set the widget size. +---@param width integer +function Widget:set_border_width(width) + local wwidth, wheight = 0, 0; + if self.border.width > 0 then + local prev_width = self.border.width * 2 + if not self.parent and not self.visible then + wwidth = self.prev_size.x + prev_width + wheight = self.prev_size.y + prev_width + else + wwidth = self.size.x + prev_width + wheight = self.size.y + prev_width + end + end + self.border.width = width + self:set_size(wwidth, wheight) +end + +---Called on the update function to be able to scroll the child widgets. +function Widget:update_position() + if self.parent then + self.position.x = self.position.rx + self.border.width + self.position.y = self.position.ry + self.border.width + + -- add offset to properly scroll + local ox, oy = self.parent:get_content_offset() + self.position.x = ox + self.position.x + self.position.y = oy + self.position.y + end + + for _, child in pairs(self.childs) do + child:update_position() + end +end + +---Set the position of the widget and updates the child absolute coordinates +---@param x? integer +---@param y? integer +function Widget:set_position(x, y) + if x then self.position.x = x + self.border.width end + if y then self.position.y = y + self.border.width end + + if self.parent then + -- add offset to properly scroll + local ox, oy = self.parent:get_content_offset() + + if x then + self.position.rx = x + self.position.x = ox + self.position.x + end + + if y then + self.position.ry = y + self.position.y = oy + self.position.y + end + end + + if x or y then + for _, child in pairs(self.childs) do + child:set_position(child.position.rx, child.position.ry) + end + end +end + +---Get the real renderer.font associated with a widget.font. +---@param font? widget.font +---@return renderer.font +function Widget:get_font(font) + if not font then font = self.font end + local font_type = type(font) + if font_type == "userdata" then + return font + elseif font_type == "string" then + return style[font] + elseif font and font.container then + return font.container[font.name] + end + if not font then + return style.font + end + return font +end + +---Get the relative position in relation to parent +---@return widget.position +function Widget:get_position() + local position = { x = self.position.x, y = self.position.y } + if self.parent then + position.x = self.position.rx + position.y = self.position.ry + end + return position +end + +---Get width including borders. +---@return number +function Widget:get_width() + return self.size.x + (self.border.width * 2) +end + +---Get height including borders. +---@return number +function Widget:get_height() + return self.size.y + (self.border.width * 2) +end + +---Get the right x coordinate relative to parent +---@return number +function Widget:get_right() + return self:get_position().x + self:get_width() +end + +---Get the bottom y coordinate relative to parent +---@return number +function Widget:get_bottom() + return self:get_position().y + self:get_height() +end + +---Overall height of the widget accounting all visible child widgets. +---@return number +function Widget:get_real_height() + local size = 0 + for _, child in pairs(self.childs) do + if child.visible then + size = math.max(size, child:get_bottom()) + end + end + return size +end + +---Overall width of the widget accounting all visible child widgets. +---@return number +function Widget:get_real_width() + local size = 0 + for _, child in pairs(self.childs) do + if child.visible then + size = math.max(size, child:get_right()) + end + end + return size +end + +---Check if the given mouse coordinate is hovering the widget +---@param x number +---@param y number +---@return boolean +function Widget:mouse_on_top(x, y) + return + self.visible + and + x >= self.position.x - self.border.width + and + x <= self.position.x - self.border.width + self:get_width() + and + y >= self.position.y - self.border.width + and + y <= self.position.y - self.border.width + self:get_height() +end + +---Mark a widget as having focus. +---TODO: Implement set focus system by pressing a key like tab? +function Widget:set_focus(has_focus) + self.set_focus = has_focus +end + +---Text displayed when the widget is hovered. +---@param tooltip string +function Widget:set_tooltip(tooltip) + self.tooltip = tooltip +end + +---A text label for the widget, not all widgets support this. +---@param text string | widget.styledtext +function Widget:set_label(text) + self.label = text +end + +---Used internally when dragging is activated. +---@param x number +---@param y number +function Widget:drag(x, y) + if self.position.dx and self.position.dy then + self:set_position(x - self.position.dx, y - self.position.dy) + end +end + +---Center the widget horizontally and vertically to the screen or parent widget. +function Widget:centered() + local w, h = system.get_window_size(core.window); + if self.parent then + w = self.parent:get_width() + h = self.parent:get_height() + end + self:set_position( + (w / 2) - (self:get_width() / 2), + (h / 2) - (self:get_height() / 2) + ) +end + +---Replaces current active child with a new one and calls the +---activate/deactivate events of the child. This is especially +---used to send text input events to widgets with input_text support. +---@param child? widget If nil deactivates current child +function Widget:swap_active_child(child) + if self.parent then + self.parent:swap_active_child(child) + return + end + + if child and child == self.child_active then return end + + local active_child = self.child_active + + if self.child_active then + self.child_active:deactivate() + end + + self.child_active = child + + if child then + if not self.prev_view then + self.prev_view = core.active_view + end + core.set_active_view(child.input_text and child.textview or child) + self.child_active:activate() + elseif self.prev_view then + -- return focus to previous view + if self.prev_view ~= active_child then + core.set_active_view(self.prev_view) + else + core.set_active_view(self) + end + self.prev_view = nil + end +end + +---Calculates the y scrollable size taking into account the bottom most +---widget or the size of the widget it self if greater. +---@return number +function Widget:get_scrollable_size() + return math.max(self.size.y, self:get_real_height()) +end + +---Calculates the x scrollable size taking into account the right most +---widget or the size of the widget it self if greater. +---@return number +function Widget:get_h_scrollable_size() + return math.max(self.size.x, self:get_real_width()) +end + +---The name that is displayed on lite-xl tabs. +function Widget:get_name() + return self.parent and self.parent:get_name() or self.name +end + +-- +-- Events +-- + +---Send file drop event to hovered child. +---@param filename string +---@param x number +---@param y number +---@return boolean processed +function Widget:on_file_dropped(filename, x, y) + if not self.visible then return false end + + for _, child in pairs(self.childs) do + if child:mouse_on_top(x, y) then + return child:on_file_dropped(filename, x, y) + end + end + + return false +end + +---Redirects any text input to active child with the input_text flag. +---@param text string +---@return boolean processed +function Widget:on_text_input(text) + if not self.visible then return false end + + Widget.super.on_text_input(self, text) + + if self.child_active then + self.child_active:on_text_input(text) + return true + end + + return false +end + +---All mouse events will be directly sent to the widget even if mouse moves +---outside the widget region. +---@param scrolling? boolean Capture for scrolling +function Widget:capture_mouse(scrolling) + local parent = self.parent + while parent do + -- propagate to parents so if mouse is not on top still + -- reach the childrens when the mouse is released + if scrolling then parent.is_scrolling = true end + parent.captured_widget = self + parent = parent.parent + end + if scrolling then self.is_scrolling = true end +end + +---Undo capture_mouse() +function Widget:release_mouse() + local parent = self.parent + while parent do + -- propagate to parents so if mouse is not on top still + -- reach the childrens when the mouse is released + parent.is_scrolling = false + parent.captured_widget = nil + parent = parent.parent + end + self.is_scrolling = false +end + +---Send mouse pressed events to hovered child or starts dragging if enabled. +---@param button widget.clicktype +---@param x number +---@param y number +---@param clicks integer +---@return boolean processed +function Widget:on_mouse_pressed(button, x, y, clicks) + if not self.visible then return false end + + -- Capture when scrollbar is pressed + if Widget.super.on_mouse_pressed(self, button, x, y, clicks) then + self:capture_mouse(true) + return true + end + + for _, child in pairs(self.childs) do + if child:mouse_on_top(x, y) and child.clickable then + child:on_mouse_pressed(button, x, y, clicks) + return true + end + end + + if self:mouse_on_top(x, y) then + self.mouse_is_pressed = true + + if self.parent then + -- propagate to parents so if mouse is not on top still + -- reach the childrens when the mouse is released + self.parent.mouse_is_pressed = true + end + + if self.draggable and not self.child_active then + self.position.dx = x - self.position.x + self.position.dy = y - self.position.y + system.set_cursor("hand") + end + else + self:swap_active_child() + return false + end + + return true +end + +---Send mouse released events to hovered child, ends dragging if enabled and +---emits on click events if applicable. +---@param button widget.clicktype +---@param x number +---@param y number +---@return boolean processed +function Widget:on_mouse_released(button, x, y) + if not self.visible then return false end + + if widget_showing_tooltip then + widget_showing_tooltip = false + core.status_view:remove_tooltip() + end + + if self.captured_widget then + self.captured_widget:on_mouse_released(button, x, y) + if self.is_scrolling then + self.captured_widget:release_mouse() + end + return true + end + + Widget.super.on_mouse_released(self, button, x, y) + + self:swap_active_child() + + if self.child_active then + self.child_active:on_mouse_released(button, x, y) + end + + if not self.dragged then + for _, child in pairs(self.childs) do + local mouse_on_top = child:mouse_on_top(x, y) + if + mouse_on_top + or + child.mouse_is_pressed + then + child:on_mouse_released(button, x, y) + if child.input_text then + self:swap_active_child(child) + end + if mouse_on_top and child.mouse_is_pressed then + child:on_click(button, x, y) + end + return true + end + end + end + + if + not self.dragged + and + not self.mouse_is_pressed + then + return false + end + + if self.mouse_is_pressed then + if self:mouse_on_top(x, y) then + self:on_click(button, x, y) + end + self.mouse_is_pressed = false + if self.parent then + self.parent.mouse_is_pressed = false + end + if self.draggable then + system.set_cursor("arrow") + end + end + + self.dragged = false + + return true +end + +---Event emitted when the value of the widget changes. +---If applicable, child widgets should call this method +---when its value changes. +---@param value any +function Widget:on_change(value) end + +---Click event emitted on a succesful on_mouse_pressed +---and on_mouse_released events combo. +---@param button widget.clicktype +---@param x number +---@param y number +function Widget:on_click(button, x, y) end + +---Emitted to input_text widgets when clicked. +function Widget:activate() end + +---Emitted to input_text widgets on lost focus. +function Widget:deactivate() end + +---Besides the on_mouse_moved this event emits on_mouse_enter +---and on_mouse_leave for easy hover effects. Also, if the +---widget is scrollable and pressed this will drag it unless +---there is an active input_text child active. +---@param x number +---@param y number +---@param dx number +---@param dy number +function Widget:on_mouse_moved(x, y, dx, dy) + if not self.visible then return false end + + if self.captured_widget then + self.captured_widget:on_mouse_moved(x, y, dx, dy) + return true + end + + Widget.super.on_mouse_moved(self, x, y, dx, dy) + + -- store latest mouse coordinates for usage on the on_mouse_wheel event. + self.mouse.x = x + self.mouse.y = y + + if self.child_active then + self.child_active:on_mouse_moved(x, y, dx, dy) + end + + if not self.dragged then + local hovered = nil + for _, child in pairs(self.childs) do + if + not hovered + and + (child:mouse_on_top(x, y) or child.mouse_is_pressed) + then + hovered = child + elseif child.mouse_is_hovering then + if widget_showing_tooltip then + widget_showing_tooltip = false + core.status_view:remove_tooltip() + end + child.mouse_is_hovering = false + child:on_mouse_leave(x, y, dx, dy) + system.set_cursor("arrow") + end + end + + if hovered then + hovered:on_mouse_moved(x, y, dx, dy) + if last_hovered_child and not last_hovered_child:mouse_on_top(x, y) then + last_hovered_child:on_mouse_leave(x, y, dx, dy) + last_hovered_child.mouse_is_hovering = false + last_hovered_child = nil + end + return true; + end + end + + if + not self:mouse_on_top(x, y) + and + not self.mouse_is_pressed + and + not self.mouse_is_hovering + then + return false + end + + local is_over = true + + if self:mouse_on_top(x, y) then + if not self.mouse_is_hovering then + system.set_cursor("arrow") + self.mouse_is_hovering = true + if #self.tooltip > 0 then + widget_showing_tooltip = true + core.status_view:show_tooltip(self.tooltip) + end + self:on_mouse_enter(x, y, dx, dy) + last_hovered_child = self + end + else + self:on_mouse_leave(x, y, dx, dy) + self.mouse_is_hovering = false + is_over = false + end + + if not self.child_active and self.mouse_is_pressed and self.draggable then + system.set_cursor("hand") + self:drag(x, y) + self.dragged = true + return true + end + + return is_over +end + +---Emitted once when the mouse hovers the widget. +function Widget:on_mouse_enter(x, y, dx, dy) + for _, child in pairs(self.childs) do + if child:mouse_on_top(x, y) then + child:on_mouse_enter(x, y, dx, dy) + break + end + end +end + +---Emitted once when the mouse leaves the widget. +function Widget:on_mouse_leave(x, y, dx, dy) + for _, child in pairs(self.childs) do + if child.mouse_is_hovering then + child:on_mouse_leave(x, y, dx, dy) + end + end +end + +function Widget:on_mouse_left() + if not self.captured_widget then + Widget.super.on_mouse_left(self) + self:on_mouse_moved(-1, -1, -1, -1) + end +end + +function Widget:on_mouse_wheel(y, x) + if + not self.visible + or + not self:mouse_on_top(self.mouse.x, self.mouse.y) + then + return false + else + local ctrl_pressed = false + if self.skip_scroll_ctrl and not self.parent then + local ctrl_key = PLATFORM == "Mac OS X" and "cmd" or "ctrl" + ctrl_pressed = keymap.modkeys[ctrl_key] + -- ensure only ctrl/cmd is pressed + if ctrl_pressed then + for key, status in pairs(keymap.modkeys) do + if key ~= ctrl_key and status then + ctrl_pressed = false + break + end + end + end + end + if ctrl_pressed then return false end + end + + for _, child in pairs(self.childs) do + if child:mouse_on_top(self.mouse.x, self.mouse.y) then + if child:on_mouse_wheel(y, x) then + return true + end + end + end + + if self.scrollable then + if keymap.modkeys["shift"] then + x = y + y = 0 + end + if y and y ~= 0 then + self.scroll.to.y = self.scroll.to.y + y * -config.mouse_wheel_scroll + end + if x and x ~= 0 then + self.scroll.to.x = self.scroll.to.x + x * -config.mouse_wheel_scroll + end + return true + end + + return false +end + +---Can be overriden by widgets to listen for scale change events to apply +---any neccesary changes in sizes, padding, etc... +---@param new_scale number +---@param prev_scale number +function Widget:on_scale_change(new_scale, prev_scale) + local font_type = type(self.font) + if + font_type == "userdata" + or + (font_type == "table" and not self.font.container) + then + self.font:set_size( + self.font:get_size() * (new_scale / prev_scale) + ) + end +end + +---Registers a new animation to be ran on the update cycle. +---@param target? table If nil assumes properties belong to widget it self. +---@param properties table +---@param options? widget.animation.options +function Widget:animate(target, properties, options) + if not target then target = self end + + -- if name is set then prevent adding if another one with the same + -- animation name is already running + if options and options.name then + for _, animation in ipairs(self.animations) do + if animation.options and animation.options.name == options.name then + return + end + end + end + + table.insert(self.animations, { + target = target, + properties = properties, + options = options + }) +end + +---Runs all registered animations removing duplicated and finished ones. +function Widget:run_animations() + if #self.animations > 0 then + ---@type table + local duplicates = {} + + local targets = {} + local deleted = 0 + for i=1, #self.animations do + local animation = self.animations[i - deleted] + + -- do not run animations that change same target to prevent conflicts. + if not targets[animation.target] then + local finished = true + local options = animation.options or {} + for name, value in pairs(animation.properties) do + if animation.target[name] ~= value then + self:move_towards(animation.target, name, value, options.rate) + if options.on_step then + options.on_step(animation.target, name, animation.target[name]) + end + if animation.target[name] ~= value then + finished = false + end + end + end + if finished then + if options.on_complete then + options.on_complete(self) + end + table.remove(self.animations, i - deleted) + deleted = deleted + 1 + end + targets[animation.target] = animation + -- only registers it as duplicated if the animation does needs to + -- perform any tasks on completion. + elseif not targets[animation.target].on_complete then + duplicates[targets[animation.target]] = animation + end + end + + -- remove older duplcated animations that modify same target and properties + for duplicate, newer_animation in pairs(duplicates) do + local exact_properties = true + for name, _ in pairs(duplicate.properties) do + if not newer_animation.properties[name] then + exact_properties = false + break + end + end + if exact_properties then + for name, _ in pairs(newer_animation.properties) do + if not duplicate.properties[name] then + exact_properties = false + break + end + end + end + if exact_properties then + for i, animation in ipairs(self.animations) do + if animation == duplicate then + table.remove(self.animations, i) + break + end + end + end + end + end +end + +---If visible execute the widget calculations and returns true. +---@return boolean +function Widget:update() + if not self:is_visible() then return false end + + Widget.super.update(self) + + -- call this to be able to properly scroll + self:update_position() + + -- run any pending animations + self:run_animations() + + for _, child in pairs(self.childs) do + child:update() + end + + return true +end + +function Widget:draw_scrollbar() + if self.scrollable then + Widget.super.draw_scrollbar(self) + end +end + +---If visible draw the widget and returns true. +---@return boolean +function Widget:draw() + if not self:is_visible() then return false end + + Widget.super.draw(self) + + self:draw_border() + + if self.render_background then + if self.background_color then + self:draw_background(self.background_color) + else + self:draw_background( + self.parent and style.background or style.background2 + ) + end + end + + if #self.childs > 0 then + core.push_clip_rect( + self.position.x, + self.position.y, + self.size.x, + self.size.y + ) + end + + for i=#self.childs, 1, -1 do + self.childs[i]:draw() + end + + if #self.childs > 0 then + core.pop_clip_rect() + end + + self:draw_scrollbar() + + return true +end + +---Recursively destroy all childs from the widget. +function Widget:destroy_childs() + for _=1, #self.childs do + self.childs[1]:destroy_childs() + table.remove(self.childs, 1) + end +end + +---If floating, remove the widget from the floating widgets list +---to allow proper garbage collection. +function Widget:destroy() + if not self.parent or self.defer_draw then + for idx, widget in ipairs(floating_widgets) do + if widget == self then + widget:destroy_childs() + floating_widgets[idx] = nil + table.remove(floating_widgets, idx) + break + end + end + end +end + +---Toggle the forced interception of given event even if all the conditions +---for emitting it are not met. +--- +---Note: only "mouse_released" is implemented for the moment on floating views +---for use in the SelectBox, maybe a better system can be implemented on +---the future. +---@param name "mouse_released" +---@param force boolean If omitted is set to true by default +function Widget:force_event(name, force) + if type(force) ~= "boolean" or force then + self.force_events[name] = true + else + self.force_events[name] = nil + end +end + +---Flag that indicates if the rootview events are already overrided. +---@type boolean +local root_overrided = false + +---Called when initializing a floating widget to generate RootView overrides, +---this function will only override the events once. +function Widget.override_rootview() + if root_overrided then return end + root_overrided = true + + if not RootView then RootView = require "core.rootview" end + + local root_view_on_mouse_pressed = RootView.on_mouse_pressed + local root_view_on_mouse_released = RootView.on_mouse_released + local root_view_on_mouse_moved = RootView.on_mouse_moved + local root_view_on_mouse_wheel = RootView.on_mouse_wheel + local root_view_update = RootView.update + local root_view_draw = RootView.draw + local root_view_on_file_dropped = RootView.on_file_dropped + local root_view_on_text_input = RootView.on_text_input + + function RootView:on_mouse_pressed(button, x, y, clicks) + local pressed = false + for i=#floating_widgets, 1, -1 do + local widget = floating_widgets[i] + if widget.visible then + widget.mouse_pressed_outside = not widget:mouse_on_top(x, y) + if + (not widget.defer_draw and not widget.child_active) + or + widget.mouse_pressed_outside + or + (pressed or not widget:on_mouse_pressed(button, x, y, clicks)) + then + widget:swap_active_child() + else + pressed = true + end + end + end + if not pressed then + return root_view_on_mouse_pressed(self, button, x, y, clicks) + else + return true + end + end + + function RootView:on_mouse_released(button, x, y) + local released = false + for i=#floating_widgets, 1, -1 do + local widget = floating_widgets[i] + if widget.visible then + if + (not widget.defer_draw and not widget.child_active) + or + ( + not widget.force_events["mouse_released"] + and + widget.mouse_pressed_outside + ) + or + not widget:on_mouse_released(button, x, y) + then + widget.mouse_pressed_outside = false + else + released = true + end + end + end + if not released then + root_view_on_mouse_released(self, button, x, y) + end + end + + function RootView:on_mouse_moved(x, y, dx, dy) + if core.active_view ~= core.command_view then + for i=#floating_widgets, 1, -1 do + local widget = floating_widgets[i] + if widget.visible then + if + (not widget.defer_draw and not widget.child_active) + or + widget.mouse_pressed_outside + or + not widget:on_mouse_moved(x, y, dx, dy) + then + if + not widget.is_scrolling and not widget.captured_widget + and + not widget.child_active and widget.outside_view + then + core.set_active_view(widget.outside_view) + widget.outside_view = nil + elseif widget.outside_view then + core.request_cursor("arrow") + end + else + if not widget.child_active and widget.defer_draw then + if not widget.outside_view then + widget.outside_view = core.active_view + end + core.set_active_view(widget) + end + return true + end + end + end + end + return root_view_on_mouse_moved(self, x, y, dx, dy) + end + + function RootView:on_mouse_wheel(y, x) + for i=#floating_widgets, 1, -1 do + local widget = floating_widgets[i] + if + widget.visible and widget.defer_draw and widget:on_mouse_wheel(y, x) + then + return true + end + end + return root_view_on_mouse_wheel(self, y, x) + end + + function RootView:on_file_dropped(filename, x, y) + for i=#floating_widgets, 1, -1 do + local widget = floating_widgets[i] + if + widget.visible and widget.defer_draw + and + widget:on_file_dropped(filename, x, y) + then + return true + end + end + return root_view_on_file_dropped(self, filename, x, y) + end + + function RootView:on_text_input(text) + for i=#floating_widgets, 1, -1 do + local widget = floating_widgets[i] + if + widget.visible and widget.defer_draw and widget:on_text_input(text) + then + return true + end + end + return root_view_on_text_input(self, text) + end + + function RootView:update() + root_view_update(self) + local count = #floating_widgets + for i=1, count, 1 do + local widget = floating_widgets[i] + if widget.visible and widget.defer_draw then + widget:update() + end + end + end + + function RootView:draw() + local count = #floating_widgets + for i=1, count, 1 do + local widget = floating_widgets[i] + if widget.visible and widget.defer_draw then + core.root_view:defer_draw(widget.draw, widget) + end + end + root_view_draw(self) + end +end + + +return Widget diff --git a/debian/extra/libraries/widget/inputdialog.lua b/debian/extra/libraries/widget/inputdialog.lua new file mode 100644 index 0000000..793dd8f --- /dev/null +++ b/debian/extra/libraries/widget/inputdialog.lua @@ -0,0 +1,88 @@ +-- +-- Input Dialog Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Button = require "libraries.widget.button" +local Dialog = require "libraries.widget.dialog" +local Label = require "libraries.widget.label" +local TextBox = require "libraries.widget.textbox" + +---@class widget.inputdialog : widget.dialog +---@overload fun(title?:string, message?:string, text?:string):widget.inputdialog +---@field super widget.dialog +---@field message widget.label +---@field text widget.textbox +---@field save widget.button +---@field cancel widget.button +local InputDialog = Dialog:extend() + +---Constructor +---@param title string +---@param message string +---@param text string +function InputDialog:new(title, message, text) + InputDialog.super.new(self, title or "Enter Value") + + self.type_name = "widget.inputdialog" + + self.message = Label(self.panel, message) + self.text = TextBox(self.panel, text or "") + + local this = self + + self.save = Button(self.panel, "Save") + self.save:set_icon("S") + function self.save:on_click() + this:on_save(this.text:get_text()) + this:on_close() + end + + self.cancel = Button(self.panel, "Cancel") + self.cancel:set_icon("C") + function self.cancel:on_click() + this:on_close() + end +end + +---Called when the user clicks on save +---@param value string +function InputDialog:on_save(value) end + +function InputDialog:update() + if not InputDialog.super.update(self) then return false end + + self.message:set_position(style.padding.x/2, 0) + self.text:set_position(style.padding.x/2, self.message:get_bottom() + style.padding.y) + + self.save:set_position( + style.padding.x/2, + self.text:get_bottom() + style.padding.y + ) + self.cancel:set_position( + self.save:get_right() + style.padding.x, + self.text:get_bottom() + style.padding.y + ) + + self.panel.size.x = self.panel:get_real_width() + style.padding.x + self.panel.size.y = self.panel:get_real_height() + self.size.x = self:get_real_width() - (style.padding.x / 2) + self.size.y = self:get_real_height() + (style.padding.y / 2) + + self.text:set_size( + self.size.x - style.padding.x, + self.text:get_real_height() + ) + + self.close:set_position( + self.size.x - self.close.size.x - (style.padding.x / 2), + style.padding.y / 2 + ) + + return true +end + + +return InputDialog diff --git a/debian/extra/libraries/widget/itemslist.lua b/debian/extra/libraries/widget/itemslist.lua new file mode 100644 index 0000000..5e706c2 --- /dev/null +++ b/debian/extra/libraries/widget/itemslist.lua @@ -0,0 +1,162 @@ +-- +-- ItemsList Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- +local style = require "core.style" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" +local ListBox = require "libraries.widget.listbox" +local InputDialog = require "libraries.widget.inputdialog" +local MessageBox = require "libraries.widget.messagebox" + +---@class widget.itemslist : widget +---@overload fun(parent:widget?):widget.itemslist +---@field list widget.listbox +---@field add widget.button +---@field remove widget.button +local ItemsList = Widget:extend() + +---Constructor +---@param parent widget +function ItemsList:new(parent) + ItemsList.super.new(self, parent) + + self.type_name = "widget.itemslist" + + self.border.width = 0 + + self.dialog = false + + self.list = ListBox(self) + + local this = self + + function self.list:on_mouse_pressed(button, x, y, clicks) + if not ListBox.on_mouse_pressed(self, button, x, y, clicks) then + return false + end + + if clicks == 2 and not this.dialog then + this.dialog = true + local selected = this.list:get_selected() + local selvalue = this.list:get_row_text(selected) + ---@type widget.inputdialog + local input = InputDialog("Edit Item", "Enter the new item value:", selvalue) + function input:on_save(value) + this:edit_item(selected, value) + end + function input:on_close() + InputDialog.on_close(self) + self:destroy() + this.dialog = false + end + input:show() + end + + return true + end + + self.add = Button(self, "Add") + self.add:set_icon("B") + function self.add:on_click() + if not this.dialog then + ---@type widget.inputdialog + local input = InputDialog("Add Item", "Enter the new item:") + function input:on_save(value) + this:add_item(value) + end + function input:on_close() + InputDialog.on_close(self) + self:destroy() + this.dialog = false + end + input:show() + end + end + + self.remove = Button(self, "Remove") + self.remove:set_icon("C") + function self.remove:on_click() + local selected = this.list:get_selected() + if selected then + this:remove_item(selected) + else + MessageBox.error("No item selected", "Please select an item to remove") + end + end +end + +---Add a new item into the list. +---@param text widget.styledtext | string +---@param data any +function ItemsList:add_item(text, data) + if type(text) == "string" then + text = {text} + end + self.list:add_row(text, data) + self.list:set_visible_rows() + self:on_change() +end + +---Edit an existing item on the list. +---@param idx integer +---@param text widget.styledtext | string +---@param data any +function ItemsList:edit_item(idx, text, data) + if type(text) == "string" then + text = {text} + end + self.list:set_row(idx, text) + if data then + self.list:set_row_data(idx, data) + end + self:on_change() +end + +---Remove the given item from the list. +---@param idx integer +function ItemsList:remove_item(idx) + self.list:remove_row(idx) + self:on_change() +end + +---Return the items from the list. +---@return table +function ItemsList:get_items() + local output = {} + local count = #self.list.rows + for i=1, count, 1 do + table.insert(output, self.list:get_row_text(i)) + end + return output +end + +function ItemsList:update() + if not ItemsList.super.update(self) then return false end + + if self.size.x == 0 then + self.size.x = self.add:get_width() + + (style.padding.x / 2) + self.remove:get_width() + (50 * SCALE) + self.size.y = self.add:get_height() + (style.padding.y * 2) + 100 + end + + self.list:set_position(0, 0) + + self.list:set_size( + self.size.x, + self.size.y - self.add:get_height() - (style.padding.y * 2) + ) + + self.add:set_position(0, self.list:get_bottom() + style.padding.y) + + self.remove:set_position( + self.add:get_right() + (style.padding.x / 2), + self.list:get_bottom() + style.padding.y + ) + + return true +end + + +return ItemsList diff --git a/debian/extra/libraries/widget/keybinddialog.lua b/debian/extra/libraries/widget/keybinddialog.lua new file mode 100644 index 0000000..c54f8ab --- /dev/null +++ b/debian/extra/libraries/widget/keybinddialog.lua @@ -0,0 +1,257 @@ +-- +-- KeyBinding Dialog Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local keymap = require "core.keymap" +local style = require "core.style" +local Button = require "libraries.widget.button" +local Dialog = require "libraries.widget.dialog" +local Label = require "libraries.widget.label" +local Line = require "libraries.widget.line" +local ListBox = require "libraries.widget.listbox" +local MessageBox = require "libraries.widget.messagebox" + +---@type widget.keybinddialog +local current_dialog = nil + +---@class widget.keybinddialog : widget.dialog +---@overload fun():widget.keybinddialog +---@field super widget.dialog +---@field selected integer +---@field shortcuts widget.listbox +---@field add widget.button +---@field remove widget.button +---@field line widget.line +---@field message widget.label +---@field binding widget.label +---@field mouse_intercept widget.label +---@field save widget.button +---@field reset widget.button +---@field cancel widget.button +local KeybindDialog = Dialog:extend() + +---Constructor +function KeybindDialog:new() + KeybindDialog.super.new(self, "Keybinding Selector") + + self.type_name = "widget.keybinddialog" + + self.selected = nil + + local this = self + + self.shortcuts = ListBox(self.panel) + self.shortcuts:set_size(100, 100) + function self.shortcuts:on_row_click(idx, data) + this.selected = idx + end + + self.add = Button(self.panel, "Add") + self.add:set_icon("B") + function self.add:on_click() + this.shortcuts:add_row({"none"}) + this.shortcuts:set_selected(#this.shortcuts.rows) + this.shortcuts:set_visible_rows() + this.selected = #this.shortcuts.rows + end + + self.remove = Button(self.panel, "Remove") + self.remove:set_icon("C") + function self.remove:on_click() + local selected = this.shortcuts:get_selected() + if selected then + this.shortcuts:remove_row(selected) + this.shortcuts:set_selected(nil) + this.selected = nil + else + MessageBox.error("No shortcut selected", "Please select an shortcut to remove") + end + end + + self.line = Line(self.panel) + + self.message = Label(self.panel, "Press a key combination to change selected") + + self.mouse_intercept = Label(self.panel, "Grab mouse events here") + self.mouse_intercept.border.width = 1 + self.mouse_intercept.clickable = true + self.mouse_intercept:set_size(100, 100) + function self.mouse_intercept:on_mouse_pressed(button, x, y, clicks) + keymap.on_mouse_pressed(button, x, y, clicks) + return true + end + function self.mouse_intercept:on_mouse_wheel(y) + keymap.on_mouse_wheel(y) + return true + end + function self.mouse_intercept:on_mouse_enter(...) + Label.super.on_mouse_enter(self, ...) + self.border.color = style.caret + end + function self.mouse_intercept:on_mouse_leave(...) + Label.super.on_mouse_leave(self, ...) + self.border.color = style.text + end + + self.save = Button(self.panel, "Save") + self.save:set_icon("S") + function self.save:on_click() + this:on_save(this:get_bindings()) + this:on_close() + end + + self.reset = Button(self.panel, "Reset") + function self.reset:on_click() + this:on_reset() + this:on_close() + end + + self.cancel = Button(self.panel, "Cancel") + self.cancel:set_icon("C") + function self.cancel:on_click() + this:on_close() + end +end + +---@param bindings table +function KeybindDialog:set_bindings(bindings) + self.shortcuts:clear() + for _, binding in ipairs(bindings) do + self.shortcuts:add_row({binding}) + end + if #bindings > 0 then + self.shortcuts:set_selected(1) + self.selected = 1 + end + self.shortcuts:set_visible_rows() +end + +---@return table +function KeybindDialog:get_bindings() + local bindings = {} + for idx=1, #self.shortcuts.rows, 1 do + table.insert(bindings, self.shortcuts:get_row_text(idx)) + end + return bindings +end + +---Show the dialog and enable key interceptions +function KeybindDialog:show() + current_dialog = self + KeybindDialog.super.show(self) +end + +---Hide the dialog and disable key interceptions +function KeybindDialog:hide() + current_dialog = nil + KeybindDialog.super.hide(self) +end + +---Called when the user clicks on save +---@param bindings string +function KeybindDialog:on_save(bindings) end + +---Called when the user clicks on reset +function KeybindDialog:on_reset() end + +function KeybindDialog:update() + if not KeybindDialog.super.update(self) then return false end + + self.shortcuts:set_position(style.padding.x/2, 0) + + self.add:set_position( + style.padding.x/2, + self.shortcuts:get_bottom() + style.padding.y + ) + + self.remove:set_position( + self.add:get_right() + (style.padding.x/2), + self.shortcuts:get_bottom() + style.padding.y + ) + + self.line:set_position( + 0, + self.remove:get_bottom() + style.padding.y + ) + + self.message:set_position( + style.padding.x/2, + self.line:get_bottom() + style.padding.y + ) + self.mouse_intercept:set_position( + style.padding.x/2, + self.message:get_bottom() + style.padding.y + ) + + self.save:set_position( + style.padding.x/2, + self.mouse_intercept:get_bottom() + style.padding.y + ) + self.reset:set_position( + self.save:get_right() + style.padding.x, + self.mouse_intercept:get_bottom() + style.padding.y + ) + self.cancel:set_position( + self.reset:get_right() + style.padding.x, + self.mouse_intercept:get_bottom() + style.padding.y + ) + + self.panel.size.x = self.panel:get_real_width() + style.padding.x + self.panel.size.y = self.panel:get_real_height() + self.size.x = self:get_real_width() - (style.padding.x / 2) + self.size.y = self:get_real_height() + (style.padding.y / 2) + + self.shortcuts:set_size(self.size.x - style.padding.x) + + self.line:set_width(self.size.x - style.padding.x) + + self.mouse_intercept:set_size(self.size.x - style.padding.x) + + return true +end + +-------------------------------------------------------------------------------- +-- Intercept keymap events +-------------------------------------------------------------------------------- + +-- Same declarations as in core.keymap because modkey_map is not public +local macos = PLATFORM == "Mac OS X" +local modkeys_os = require("core.modkeys-" .. (macos and "macos" or "generic")) +local modkey_map = modkeys_os.map +local modkeys = modkeys_os.keys + +---Copied from core.keymap because it is not public +local function key_to_stroke(k) + local stroke = "" + for _, mk in ipairs(modkeys) do + if keymap.modkeys[mk] then + stroke = stroke .. mk .. "+" + end + end + return stroke .. k +end + +local keymap_on_key_pressed = keymap.on_key_pressed +function keymap.on_key_pressed(k, ...) + if current_dialog and current_dialog.selected then + local mk = modkey_map[k] + if mk then + keymap.modkeys[mk] = true + -- work-around for windows where `altgr` is treated as `ctrl+alt` + if mk == "altgr" then + keymap.modkeys["ctrl"] = false + end + current_dialog.shortcuts:set_row(current_dialog.selected, {key_to_stroke("")}) + else + current_dialog.shortcuts:set_row(current_dialog.selected, {key_to_stroke(k)}) + end + return true + else + return keymap_on_key_pressed(k, ...) + end +end + + +return KeybindDialog diff --git a/debian/extra/libraries/widget/label.lua b/debian/extra/libraries/widget/label.lua new file mode 100644 index 0000000..1c05264 --- /dev/null +++ b/debian/extra/libraries/widget/label.lua @@ -0,0 +1,95 @@ +-- +-- Label Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" + +---@class widget.label : widget +---@overload fun(parent:widget?, label?:string):widget.label +---@field clickable boolean +local Label = Widget:extend() + +---Constructor +---@param parent widget +---@param label string +function Label:new(parent, label) + Label.super.new(self, parent) + self.type_name = "widget.label" + self.clickable = false + self.border.width = 0 + self.custom_size = {x = 0, y = 0} + + self:set_label(label or "") +end + +---@param width? integer +---@param height? integer +function Label:set_size(width, height) + Label.super.set_size(self, width, height) + self.custom_size.x = self.size.x + self.custom_size.y = self.size.y +end + +---Set the label text and recalculates the widget size. +---@param text string|widget.styledtext +function Label:set_label(text) + Label.super.set_label(self, text) + + local font = self:get_font() + + if self.custom_size.x <= 0 then + if type(text) == "table" then + self.size.x, self.size.y = self:draw_styled_text(text, 0, 0, true) + else + self.size.x = font:get_width(self.label) + self.size.y = font:get_height() + end + + if self.border.width > 0 then + self.size.x = self.size.x + style.padding.x + self.size.y = self.size.y + style.padding.y + end + end +end + +function Label:update() + if not Label.super.update(self) then return false end + + if self.custom_size.x <= 0 then + -- update the size + self:set_label(self.label) + end + + return true +end + +function Label:draw() + if not self:is_visible() then return false end + + self:draw_border() + + local px = self.border.width > 0 and (style.padding.x / 2) or 0 + local py = self.border.width > 0 and (style.padding.y / 2) or 0 + + local posx, posy = self.position.x + px, self.position.y + py + + if type(self.label) == "table" then + self:draw_styled_text(self.label, posx, posy) + else + renderer.draw_text( + self:get_font(), + self.label, + posx, + posy, + self.foreground_color or style.text + ) + end + + return true +end + + +return Label diff --git a/debian/extra/libraries/widget/line.lua b/debian/extra/libraries/widget/line.lua new file mode 100644 index 0000000..a5152f3 --- /dev/null +++ b/debian/extra/libraries/widget/line.lua @@ -0,0 +1,61 @@ +-- +-- Line Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" + +---@class widget.line : widget +---@overload fun(parent?:widget, thickness?:integer, padding?:number):widget.line +---@field public padding integer +---@field private custom_width number +local Line = Widget:extend() + +---Constructor +---@param parent widget +---@param thickness integer +---@param padding number +function Line:new(parent, thickness, padding) + Line.super.new(self, parent) + self.type_name = "widget.line" + self.size.y = thickness or 2 + self.custom_width = nil + self.border.width = 0 + self.padding = padding or (style.padding.x / 2) +end + +---Set the thickness of the line +---@param thickness number +function Line:set_thickness(thickness) + self.size.y = thickness or 2 +end + +---Set a custom width for the line +---@param width number +function Line:set_width(width) + self.custom_width = width + self.size.x = width +end + +function Line:draw() + if not self:is_visible() then return false end + + if not self.custom_width then + self.size.x = self.parent.size.x - (self.padding * 2) + end + + renderer.draw_rect( + self.position.x + self.padding, + self.position.y, + self.size.x, + self.size.y, + self.foreground_color or style.caret + ) + + return true +end + + +return Line diff --git a/debian/extra/libraries/widget/listbox.lua b/debian/extra/libraries/widget/listbox.lua new file mode 100644 index 0000000..2b5333a --- /dev/null +++ b/debian/extra/libraries/widget/listbox.lua @@ -0,0 +1,926 @@ +-- +-- ListBox Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local style = require "core.style" +local Widget = require "libraries.widget" +local MessageBox = require "libraries.widget.messagebox" + +---@class widget.listbox.column +---@field public name string +---@field public width string +---@field public expand boolean +---@field public longest integer + +---@alias widget.listbox.drawcol fun(self, row, x, y, font, color, only_calc) +---@alias widget.listbox.filtercb fun(self:widget.listbox, idx:integer, row:widget.listbox.row, data:any):number? + +---@alias widget.listbox.row table + +---@alias widget.listbox.colpos table + +---@class widget.listbox : widget +---@overload fun(parent:widget?):widget.listbox +---@field rows widget.listbox.row[] +---@field private row_data any +---@field private rows_original widget.listbox.row[] +---@field private row_data_original any +---@field private columns widget.listbox.column[] +---@field private positions widget.listbox.colpos[] +---@field private mouse widget.position +---@field private selected_row integer +---@field private hovered_row integer +---@field private largest_row integer +---@field private expand boolean +---@field private visible_rows table +---@field private visible_rendered boolean +---@field private last_scale integer +---@field private last_offset integer +local ListBox = Widget:extend() + +---Indicates on a widget.listbox.row that the end +---of a column was reached. +---@type integer +ListBox.COLEND = 1 + +---Indicates on a widget.listbox.row that a new line +---follows while still rendering the same column. +---@type integer +ListBox.NEWLINE = 2 + +---Constructor +---@param parent widget +function ListBox:new(parent) + ListBox.super.new(self, parent) + self.type_name = "widget.listbox" + self.scrollable = true + self.rows = {} + self.row_data = {} + self.rows_original = {} + self.row_data_original = {} + self.rows_idx_original = {} + self.columns = {} + self.positions = {} + self.selected_row = 0 + self.hovered_row = 0 + self.largest_row = 0 + self.expand = false + self.visible_rows = {} + self.visible_rendered = false + self.last_scale = 0 + self.last_offset = 0 + + self:set_size(200, (self:get_font():get_height() + (style.padding.y*2)) * 3) +end + +---Set which rows to show using the specified match string or callback, +---if nil all rows are restored. +---@param match? string | widget.listbox.filtercb +function ListBox:filter(match) + if (not match or match == "") and #self.rows_original > 0 then + self:clear() + for idx, row in ipairs(self.rows_original) do + self:add_row(row, self.row_data_original[idx]) + end + self.rows_original = {} + self.row_data_original = {} + self.rows_idx_original = {} + return + elseif match and match ~= "" then + self.rows_original = #self.rows_original > 0 + and self.rows_original or self.rows + self.row_data_original = #self.row_data_original > 0 + and self.row_data_original or self.row_data + self.rows_idx_original = {} + + self:clear() + + local match_type = type(match) + + local rows = {} + for idx, row in ipairs(self.rows_original) do + local score + if match_type == "function" then + score = match(self, idx, row, self.row_data_original[idx]) + else + score = system.fuzzy_match(self:get_row_text(row), match, false) + end + if score then + table.insert(rows, {row, self.row_data_original[idx], score, idx}) + end + end + + table.sort(rows, function(a, b) return a[3] > b[3] end) + + for _, row in ipairs(rows) do + self:add_row(row[1], row[2]) + table.insert(self.rows_idx_original, row[4]) + end + end +end + +---If no width is given column will be set to automatically +---expand depending on the longest element +---@param name string +---@param width? number +---@param expand? boolean +function ListBox:add_column(name, width, expand) + local column = { + name = name, + width = width or self:get_font():get_width(name), + expand = expand and expand or (width and false or true) + } + + table.insert(self.columns, column) +end + +---You can give it a table a la statusview style where you pass elements +---like fonts, colors, ListBox.COLEND, ListBox.NEWLINE and multiline strings. +---@param row widget.listbox.row +---@param data any Associated with the row and given to on_row_click() +function ListBox:add_row(row, data) + table.insert(self.rows, row) + table.insert(self.positions, self:get_col_positions(row)) + + if type(data) ~= "nil" then + self.row_data[#self.rows] = data + end + + -- increase columns width if needed + if #self.columns > 0 then + local ridx = #self.rows + for col, pos in ipairs(self.positions[ridx]) do + if self.columns[col].expand then + local w = self:draw_row_range(ridx, row, pos[1], pos[2], 1, 1, true) + + -- store the row with longest column for cheaper calculation + self.columns[col].width = math.max(self.columns[col].width, w) + if self.columns[col].width < w then + self.columns[col].longest = ridx + end + end + end + end + + -- precalculate the row size and position + self:calc_row_size_pos(#self.rows) +end + +---Calculate a row position and size and store it on the row it +---self on the fields x, y, w, h +---@param ridx integer +function ListBox:calc_row_size_pos(ridx) + local x = self.border.width + local y = self.border.width + + if ridx == 1 then + -- if columns are enabled leave some space to render them + if #self.columns > 0 then + y = y + self:get_font():get_height() + style.padding.y + end + else + y = y + self.rows[ridx-1].y + self.rows[ridx-1].h + end + + self:draw_row(ridx, x, y, true) +end + +---Recalculate all row sizes and positions which should be only required +---when lite-xl ui scale changes or a row is removed from the list +function ListBox:recalc_all_rows() + for ridx, _ in ipairs(self.rows) do + self:calc_row_size_pos(ridx) + end +end + +---Calculates the scrollable size based on the last row of the list. +---@return number +function ListBox:get_scrollable_size() + local size = self.size.y + local rows = #self.rows + if rows > 0 and self.rows[rows].y then + size = math.max(size, self.rows[rows].y + self.rows[rows].h) + end + return size +end + +function ListBox:get_h_scrollable_size() + local size = self.size.x + local rows = #self.rows + if rows > 0 and self.rows[rows].x then + size = math.max(size, self.rows[rows].x + self.rows[rows].w) + end + return size +end + +---Detects the rows that are visible each time the content is scrolled, +---this way the draw function will only process the visible rows. +function ListBox:set_visible_rows() + local _, oy = self:get_content_offset() + local h = self.size.y + + -- substract column heading from list height + local colh = 0 + if #self.columns > 0 then + colh = self:get_font():get_height() + style.padding.y + h = h - colh + end + + -- start from nearest row relative to scroll direction for + -- better performance on long lists + local idx, total, step = 1, #self.rows, 1 + if #self.visible_rows > 0 then + if oy < self.last_offset or not self.visible_rendered then + idx = self.visible_rows[1] + self.visible_rendered = true + else + idx = self.visible_rows[#self.visible_rows] + total = 1 + step = -1 + end + end + + oy = oy - self.position.y + + self.visible_rows = {} + local first_visible = false + local height = 0 + for i=idx, total, step do + local row = self.rows[i] + if row then + local top = row.y - colh + row.h + oy + local visible = false + local visible_area = h - top + if top < 0 and (top + row.h) > 0 then + visible = true + elseif top >= 0 and top < h then + visible = true + end + if visible and height <= h then + table.insert(self.visible_rows, i) + first_visible = true + -- store only the visible height + if top < 0 then + height = height + (top + row.h) + else + if visible_area > row.h then + height = height + row.h + else + height = height + visible_area + end + end + elseif first_visible then + table.insert(self.visible_rows, i) + break + end + end + end + + -- append one more row if possible to fill possible empty spaces of + -- incomplete row height calculation above (bad math skills workarounds) + local last_row = self.visible_rows[#self.visible_rows] + local first_row = self.visible_rows[1] + if #self.visible_rows > 0 then + if step == 1 then + if self.rows[last_row+1] then + table.insert(self.visible_rows, last_row+1) + end + else + if self.rows[first_row-2] and first_row-2 ~= 1 then + table.insert(self.visible_rows, first_row-2) + elseif self.rows[last_row+1] then + table.insert(self.visible_rows, last_row+1) + end + + -- sort for proper subsequent loop interations + table.sort( + self.visible_rows, + function(val1, val2) return val1 < val2 end + ) + + local frow = self.visible_rows[1] + for i, _ in ipairs(self.visible_rows) do + if self.rows[frow] then + self.visible_rows[i] = frow + frow = frow + 1 + end + end + if #self.visible_rows > 1 then + if + self.visible_rows[#self.visible_rows] + == + self.visible_rows[#self.visible_rows-1] + then + table.remove(self.visible_rows, #self.visible_rows) + end + end + end + end +end + +-- Solution to safely remove elements from array table: +-- found at https://stackoverflow.com/a/53038524 +local function array_remove(t, fnKeep) + local j, n = 1, #t; + + for i=1, n do + if (fnKeep(t, i, j)) then + if (i ~= j) then + t[j] = t[i]; + t[i] = nil; + end + j = j + 1; + else + t[i] = nil; + end + end + + return t; +end + +---Remove a given row index from the list. +---@param ridx integer +function ListBox:remove_row(ridx) + if not self.rows[ridx] then return end + + if #self.rows_idx_original > 0 then + MessageBox.error( + "Can not remove row", + "Rows can not be removed when the list is filtered." + ) + return + end + + local last_col = false + local row_y = self.rows[ridx].y + local row_h = self.rows[ridx].h + if ridx == #self.rows then + last_col = true + end + + local fields = { "rows", "positions", "row_data" } + for _, field in ipairs(fields) do + array_remove(self[field], function(_, i, _) + if i == ridx then + return false + end + return true + end) + end + for _, col in ipairs(self.columns) do + if col.longest == ridx then + col.longest = nil + end + end + + if not last_col and #self.rows > 0 then + for idx=ridx, #self.rows, 1 do + self.rows[idx].y = self.rows[idx].y - row_h + end + end + + local visible_removed = false + array_remove(self.visible_rows, function(t, i, _) + if t[i] == ridx then + visible_removed = true + return false + end + return true + end) + + -- make visible rows sequence correctly incremental + if visible_removed and #self.visible_rows > 0 then + local first_row = self.visible_rows[1] + for i, _ in ipairs(self.visible_rows) do + self.visible_rows[i] = first_row + first_row = first_row + 1 + end + self:set_visible_rows() + end +end + +---Set the row that is currently active/selected. +---@param idx? integer +function ListBox:set_selected(idx) + self.selected_row = idx or 0 +end + +---Get the row that is currently active/selected. +---@return integer | nil +function ListBox:get_selected() + if self.selected_row > 0 then + return self.selected_row + end + return nil +end + +---Change the content assigned to a row. +---@param idx integer +---@param row widget.listbox.row +function ListBox:set_row(idx, row) + --TODO: recalculate subsequent row sizes and max col width if needed + if self.rows[idx] then + self.rows[idx] = row + if #self.rows_idx_original > 0 then + self.rows_original[self.rows_idx_original[idx]] = row + end + -- precalculate the row size and position + self:calc_row_size_pos(idx) + end +end + +---Change the data assigned to a row. +---@param idx integer +---@param data any|nil +function ListBox:set_row_data(idx, data) + if self.rows[idx] then + self.row_data[idx] = data + if #self.rows_idx_original > 0 then + self.row_data_original[self.rows_idx_original[idx]] = data + end + end +end + +---Get the data associated with a row. +---@param idx integer +---@return any|nil +function ListBox:get_row_data(idx) + if type(self.row_data[idx]) ~= "nil" then + return self.row_data[idx] + end + return nil +end + +---Get the text only of a styled row. +---@param row integer | table +---@return string +function ListBox:get_row_text(row) + local text = "" + row = type(row) == "table" and row or self.rows[row] + if row then + for _, element in ipairs(row) do + if type(element) == "string" then + text = text .. element + elseif element == ListBox.NEWLINE then + text = text .. "\n" + end + end + end + return text +end + +---Get the starting and ending position of columns in a row table. +---@param row widget.listbox.row +---@return widget.listbox.colpos +function ListBox:get_col_positions(row) + local positions = {} + local idx = 1 + local idx_start = 1 + local row_len = #row + + for _, element in ipairs(row) do + if element == ListBox.COLEND then + table.insert(positions, { idx_start, idx-1 }) + idx_start = idx + 1 + elseif idx == row_len then + table.insert(positions, { idx_start, idx }) + end + idx = idx + 1 + end + + return positions +end + +---Move a row to the desired position if possible. +---@param idx integer +---@param pos integer +---@return boolean moved +function ListBox:move_row_to(idx, pos) + if idx == pos or (pos == #self.rows and #self.rows == 1) then return false end + + if pos < 1 then pos = 1 end + + local row = table.remove(self.rows, idx) + local position = table.remove(self.positions, idx) + + if pos <= #self.rows then + table.insert(self.rows, pos, row) + table.insert(self.positions, pos, position) + else + table.insert(self.rows, row) + table.insert(self.positions, position) + pos = #self.rows + end + + local moved_row_data = self.row_data[idx] + local swapped_row_data = self.row_data[pos] + self.row_data[idx] = swapped_row_data + self.row_data[pos] = moved_row_data + + self.selected_row = pos + + self:recalc_all_rows() + self:set_visible_rows() + + return true +end + +---Move a row one position up if possible. +---@param idx integer +---@return boolean moved +function ListBox:move_row_up(idx) + return self:move_row_to(idx, idx-1) +end + +---Move a row one position down if possible. +---@param idx integer +---@return boolean moved +function ListBox:move_row_down(idx) + self:move_row_to(idx, idx+1) +end + +---Enables expanding the element to total size of parent on content updates. +function ListBox:enable_expand(expand) + self.expand = expand + if expand then + self:resize_to_parent() + end +end + +---Resizes the listbox to match the parent size +function ListBox:resize_to_parent() + self.size.x = self.parent.size.x + - (self.border.width * 2) + + self.size.y = self.parent.size.y + - (self.border.width * 2) + + self:set_visible_rows() +end + +---Remove all the rows from the listbox. +function ListBox:clear() + self.rows = {} + self.row_data = {} + self.positions = {} + self.selected_row = 0 + self.hovered_row = 0 + + for cidx, col in ipairs(self.columns) do + col.width = self:get_col_width(cidx) + col.longest = nil + end + + self:set_visible_rows() +end + +---Render or calculate the size of the specified range of elements in a row. +---@param ridx integer +---@param row widget.listbox.row +---@param start_idx integer +---@param end_idx integer +---@param x integer +---@param y integer +---@param only_calc boolean +---@return integer width +---@return integer height +function ListBox:draw_row_range(ridx, row, start_idx, end_idx, x, y, only_calc) + local font = self:get_font() + local color = self.foreground_color or style.text + local width = 0 + local height = font:get_height() + local new_line = false + local nx = x + + for pos=start_idx, end_idx, 1 do + local element = row[pos] + local ele_type = type(element) + if + ele_type == "userdata" + or + ( + ele_type == "table" + and + (element.container or type(element[1]) == "userdata") + ) + then + if ele_type == "table" and element.container then + font = element.container[element.name] + else + font = element + end + elseif ele_type == "table" then + color = element + elseif element == ListBox.NEWLINE then + y = y + font:get_height() + nx = x + new_line = true + elseif ele_type == "function" then + local w, h = element(self, ridx, nx, y, font, color, only_calc) + nx = nx + width + height = math.max(height, h) + width = width + w + elseif ele_type == "string" then + local rx, ry, w, h = self:draw_text_multiline( + font, element, nx, y, color, only_calc + ) + y = ry + nx = rx + if new_line then + height = height + h + width = math.max(width, w) + new_line = false + else + height = math.max(height, h) + width = width + w + end + end + end + + return width, height +end + +---Calculate the overall width of a column. +---@param col integer +---@return number +function ListBox:get_col_width(col) + if self.columns[col] then + if not self.columns[col].expand then + return self.columns[col].width + else + -- if longest is available don't iterate the entire row list + if self.columns[col].longest then + local id = self.columns[col].longest + local width = self:draw_row_range( + id, + self.rows[id], + self.positions[id][col][1], + self.positions[id][col][2], + 1, + 1, + true + ) + return width + end + + local width = self:get_font():get_width(self.columns[col].name) + for id, row in ipairs(self.rows) do + local w, h = self:draw_row_range( + id, + row, + self.positions[id][col][1], + self.positions[id][col][2], + 1, + 1, + true + ) + width = math.max(width, w) + end + return width + end + end + return 0 +end + +---Draw the column headers of the list if available +---@param w integer +---@param h integer +---@param ox number Horizontal offset +function ListBox:draw_header(w, h, ox) + local x = self.position.x + local y = self.position.y + renderer.draw_rect(x, y, w, h, style.background2) + x = ox + self.position.x + for _, col in ipairs(self.columns) do + renderer.draw_text( + self:get_font(), + col.name, + x + style.padding.x / 2, + y + style.padding.y / 2, + style.accent + ) + x = x + col.width + style.padding.x + end +end + +---Draw or calculate the dimensions of the given row position and stores +---the size and position on the row it self. +---@param row integer +---@param x integer +---@param y integer +---@param only_calc? boolean +---@return integer width +---@return integer height +function ListBox:draw_row(row, x, y, only_calc) + local w, h = 0, 0 + + if not only_calc and self.rows[row].w then + w, h = self.rows[row].w, self.rows[row].h + w = self.largest_row > 0 and self.largest_row or w + + if self.selected_row == row then + renderer.draw_rect(x, y, w, h, style.selection) + end + + local mouse = self.mouse + if + mouse.x >= x + and + mouse.x <= x + w + and + mouse.y >= y + and + mouse.y <= y + h + then + renderer.draw_rect(x, y, w, h, style.line_highlight) + self.hovered_row = row + end + w, h = 0, 0 + end + + -- add padding on top + y = y + (style.padding.y / 2) + + if #self.columns > 0 then + for col, coldata in ipairs(self.columns) do + -- padding on left + w = w + style.padding.x / 2 + local cw, ch = self:draw_row_range( + row, + self.rows[row], + self.positions[row][col][1], + self.positions[row][col][2], + x + w, + y, + only_calc + ) + -- add column width and end with padding on right + w = w + coldata.width + (style.padding.x / 2) + -- only store column height if bigger than previous one + h = math.max(h, ch) + end + else + local cw, ch = self:draw_row_range( + row, + self.rows[row], + 1, + #self.rows[row], + x + style.padding.x / 2, + y, + only_calc + ) + h = ch + w = cw + style.padding.x + end + + -- Add padding on top and bottom + h = h + style.padding.y + + if only_calc or not self.rows[row].w then + -- store the dimensions for inexpensive subsequent hover calculation + self.rows[row].w = w + self.rows[row].h = h + + -- TODO: performance improvement, render only the visible rows on the view? + self.rows[row].x = x + self.rows[row].y = y - (style.padding.y / 2) + end + + -- return height with padding on top and bottom + return w, h +end + +--- +--- Events +--- + +function ListBox:on_mouse_leave(x, y, dx, dy) + ListBox.super.on_mouse_leave(self, x, y, dx, dy) + self.hovered_row = 0 +end + +function ListBox:on_mouse_moved(x, y, dx, dy) + ListBox.super.on_mouse_moved(self, x, y, dx, dy) + self.hovered_row = 0 +end + +function ListBox:on_click(button, x, y) + if button == "left" and self.hovered_row > 0 then + self.selected_row = self.hovered_row + self:on_row_click(self.hovered_row, self.row_data[self.hovered_row]) + end +end + +---You can overwrite this to listen to item clicks +---@param idx integer +---@param data any Data associated with the row +function ListBox:on_row_click(idx, data) end + +function ListBox:update() + if not ListBox.super.update(self) then return false end + + -- only calculate columns width on scale change since this can be expensive + if self.last_scale ~= SCALE then + if #self.columns > 0 then + for col, column in ipairs(self.columns) do + column.width = self:get_col_width(col) + end + end + self:recalc_all_rows() + self.last_scale = SCALE + end + + local _, oy = self:get_content_offset() + if self.last_offset ~= oy then + self:set_visible_rows() + self.last_offset = oy + end + + return true +end + +function ListBox:draw() + if not ListBox.super.draw(self) then return false end + + if #self.rows > 0 and #self.visible_rows <= 0 then + self:set_visible_rows() + end + + local new_width = 0 + local new_height = 0 + local font = self:get_font() + + if #self.columns > 0 then + new_height = new_height + font:get_height() + style.padding.y + for _, col in ipairs(self.columns) do + new_width = new_width + col.width + style.padding.x + end + end + + if self.expand then + self:resize_to_parent() + + self.largest_row = self.size.x + - (self.parent.border.width * 2) + end + + -- Normalize the offset position + local opx, opy = self.parent:get_content_offset() + if not self.parent.parent and not self.defer_draw then + -- TODO: inspect why is this workaround needed + -- Without it wrong offset occurs on child listviews of a single parent + -- like in the case of the recent projects in EmptyView. + opy = 0 + end + + local ox, oy = self:get_content_offset() + + oy = oy - opy + if #self.visible_rows > 0 then + oy = oy + (self.rows[self.visible_rows[1]].y - new_height) + end + oy = oy - (self.position.y - self.parent.position.y) + + ox = ox - opx + ox = ox - (self.position.x - self.parent.position.x) + + local x = ox + self.position.x + self.border.width + local y = oy + self.position.y + self.border.width + new_height + + core.push_clip_rect( + self.position.x, self.position.y, self.size.x, self.size.y + ) + for _, ridx in ipairs(self.visible_rows) do + if self.rows[ridx] then + local w, h = self:draw_row(ridx, x, y) + new_width = math.max(new_width, w) + new_height = new_height + h + y = y + h + end + end + + if not self.expand then + self.largest_row = self:get_width() - (self.border.width*2) + self.size.x = self.largest_row + end + + if #self.columns > 0 then + self:draw_header( + self.largest_row, + font:get_height() + style.padding.y, + ox + ) + end + core.pop_clip_rect() + + self:draw_border() + self:draw_scrollbar() + + return true +end + + +return ListBox diff --git a/debian/extra/libraries/widget/messagebox.lua b/debian/extra/libraries/widget/messagebox.lua new file mode 100644 index 0000000..4a089a1 --- /dev/null +++ b/debian/extra/libraries/widget/messagebox.lua @@ -0,0 +1,343 @@ +-- +-- MessageBox Widget/Dialog. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local common = require "core.common" +local style = require "core.style" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" +local Label = require "libraries.widget.label" + +---@class widget.messagebox : widget +---@overload fun(parent?:widget, title?:string, message?:string|widget.styledtext, icon?:widget.messagebox.icontype, icon_color?:renderer.color):widget.messagebox +---@field private title widget.label +---@field private icon widget.label +---@field private message widget.label +---@field private buttons widget.button[] +local MessageBox = Widget:extend() + +MessageBox.icon_huge_font = style.icon_font:copy(50 * SCALE) + +MessageBox.ICON_ERROR = "X" +MessageBox.ICON_INFO = "i" +MessageBox.ICON_WARNING = "!" + +---@alias widget.messagebox.icontype +---|>`MessageBox.ICON_ERROR` +---| `MessageBox.ICON_INFO` +---| `MessageBox.ICON_WARNING` + +MessageBox.BUTTONS_OK = 1 +MessageBox.BUTTONS_OK_CANCEL = 2 +MessageBox.BUTTONS_YES_NO = 3 +MessageBox.BUTTONS_YES_NO_CANCEL = 4 + +---@alias widget.messagebox.buttonstype +---|>`MessageBox.BUTTONS_OK` +---| `MessageBox.BUTTONS_OK_CANCEL` +---| `MessageBox.BUTTONS_YES_NO` +---| `MessageBox.BUTTONS_YES_NO_CANCEL` + +---@alias widget.messagebox.onclosehandler fun(self: widget.messagebox, button_id: integer, button: widget.button) + +---Constructor +---@param parent widget +---@param title string +---@param message string | widget.styledtext +---@param icon widget.messagebox.icontype +---@param icon_color renderer.color +function MessageBox:new(parent, title, message, icon, icon_color) + MessageBox.super.new(self, parent) + self.type_name = "widget.messagebox" + self.draggable = true + self.scrollable = true + self.title = Label(self, "") + self.icon = Label(self, "") + self.message = Label(self, "") + self.buttons = {} + self.last_scale = SCALE + + self:set_title(title or "") + self:set_message(message or "") + self:set_icon(icon or "", icon_color) +end + +---Change the message box title. +---@param text string | widget.styledtext +function MessageBox:set_title(text) + self.title:set_label(text) +end + +---Change the message box icon. +---@param icon widget.messagebox.icontype +---@param color? renderer.color +function MessageBox:set_icon(icon, color) + if not color then + color = style.text + if icon == MessageBox.ICON_WARNING then + color = { common.color "#c7763e" } + elseif icon == MessageBox.ICON_ERROR then + color = { common.color "#c73e3e" } + end + end + self.icon:set_label({ MessageBox.icon_huge_font, color, icon }) +end + +---Change the message box message. +---@param text string | widget.styledtext +function MessageBox:set_message(text) + self.message:set_label(text) +end + +---Adds a new button to the message box. +---@param button_or_label string|widget.button +function MessageBox:add_button(button_or_label) + if type(button_or_label) == "table" then + table.insert(self.buttons, button_or_label) + else + local button = Button(self, button_or_label) + table.insert(self.buttons, button) + end + + local button_id = #self.buttons + local new_button = self.buttons[button_id] + local on_click = new_button.on_click + new_button.on_click = function(this, ...) + on_click(this, ...) + self:on_close(button_id, new_button) + end +end + +---Calculate the width of all buttons combined. +---@return number width +function MessageBox:get_buttons_width() + local width = 0 + if #self.buttons > 0 then + for _, button in ipairs(self.buttons) do + width = width + button:get_width() + end + -- add padding inbetween buttons + if #self.buttons > 1 then + width = width + ((style.padding.x) * (#self.buttons - 1)) + end + end + return width +end + +---Get the height of biggest button. +---@return number height +function MessageBox:get_buttons_height() + local height = 0 + if #self.buttons > 0 then + for _, button in ipairs(self.buttons) do + height = math.max(height, button:get_height()) + end + end + return height +end + +---Position the buttons relative to the message. +function MessageBox:reposition_buttons() + local buttons_width = self:get_buttons_width() + local buttons_x = ((self.size.x / 2) - (buttons_width / 2)) + local buttons_y = self.message:get_bottom() + (style.padding.y * 2) + if self.icon.label[3] ~= "" then + buttons_y = math.max( + buttons_y, self.icon:get_bottom() + (style.padding.y * 2) + ) + end + + for _, button in ipairs(self.buttons) do + button:set_position(buttons_x, buttons_y) + buttons_x = buttons_x + button:get_width() + style.padding.x + end +end + +---Calculate the MessageBox size, centers it relative to screen and shows it. +function MessageBox:show() + MessageBox.super.show(self) + self:update() + self:centered() +end + +---Called when the user clicks one of the buttons in the message box. +---@param button_id integer +---@param button widget.button +---@diagnostic disable-next-line +function MessageBox:on_close(button_id, button) self:hide() end + +function MessageBox:update() + if not MessageBox.super.update(self) then return false end + + if self.last_scale ~= SCALE then + MessageBox.icon_huge_font = style.icon_font:copy(50 * SCALE) + self.last_scale = SCALE + self.icon.label[1] = MessageBox.icon_huge_font + elseif self.updated then + self.updated = true + return + end + + local width = math.max(self.title:get_width()) + width = math.max(width, self.message:get_width() + self.icon:get_width()) + width = math.max(width, self:get_buttons_width()) + + local height = self.title:get_height() + style.padding.y + if self.icon.label[3] == "" then + height = height + self.message:get_height() + (style.padding.y * 2) + else + height = height + + math.max(self.icon:get_height(), self.message:get_height()) + + (style.padding.y * 2) + end + height = height + self:get_buttons_height() + + self:set_size(width + style.padding.x * 2, height + style.padding.y * 2) + + self.title:set_position( + style.padding.x / 2, + style.padding.y / 2 + ) + + self.icon:set_position( + style.padding.x, + self.title:get_bottom() + style.padding.y + ) + + if self.icon.label[3] == "" then + self.message:set_position( + style.padding.x, + self.title:get_bottom() + style.padding.y + ) + else + local msg_y = self.title:get_bottom() + style.padding.y + 10 + if self.icon:get_height() > self.message:get_height() then + msg_y = (self.icon:get_height() / 2) + - (self.message:get_height() / 2) + + self.title:get_bottom() + style.padding.y + end + self.message:set_position( + self.icon:get_width() + (style.padding.x * 2) - (style.padding.x / 2), + msg_y + ) + end + + self:reposition_buttons() + + return true +end + +---We overwrite default draw function to draw the title background. +function MessageBox:draw() + if not self:is_visible() then return false end + + Widget.super.draw(self) + + self:draw_border() + + if self.background_color then + self:draw_background(self.background_color) + else + self:draw_background( + self.parent and style.background or style.background2 + ) + end + + if #self.childs > 0 then + core.push_clip_rect( + self.position.x, + self.position.y, + self.size.x, + self.size.y + ) + end + + -- draw the title background + renderer.draw_rect( + self.position.x, + self.position.y, + self.size.x, self.title:get_height() + style.padding.y, + style.selection + ) + + for i=#self.childs, 1, -1 do + self.childs[i]:draw() + end + + if #self.childs > 0 then + core.pop_clip_rect() + end + + self:draw_scrollbar() + + return true +end + +---Wrapper to easily show a message box. +---@param title string | widget.styledtext +---@param message string | widget.styledtext +---@param icon widget.messagebox.icontype +---@param icon_color? renderer.color +---@param on_close? widget.messagebox.onclosehandler +---@param buttons? widget.messagebox.buttonstype +function MessageBox.alert(title, message, icon, icon_color, on_close, buttons) + buttons = buttons or MessageBox.BUTTONS_OK + ---@type widget.messagebox + local msgbox = MessageBox(nil, title, message, icon, icon_color) + if buttons == MessageBox.BUTTONS_OK_CANCEL then + msgbox:add_button("Ok") + msgbox:add_button("Cancel") + elseif buttons == MessageBox.BUTTONS_YES_NO then + msgbox:add_button("Yes") + msgbox:add_button("No") + elseif buttons == MessageBox.BUTTONS_YES_NO_CANCEL then + msgbox:add_button("Yes") + msgbox:add_button("No") + msgbox:add_button("Cancel") + else + msgbox:add_button("Ok") + end + + local msgbox_on_close = msgbox.on_close + msgbox.on_close = function(self, button_id, button) + if on_close then + on_close(self, button_id, button) + end + msgbox_on_close(self, button_id, button) + self:destroy() + end + msgbox:show() +end + +---Wrapper to easily show a info message box. +---@param title string | widget.styledtext +---@param message string | widget.styledtext +---@param on_close? widget.messagebox.onclosehandler +---@param buttons? widget.messagebox.buttonstype +function MessageBox.info(title, message, on_close, buttons) + MessageBox.alert(title, message, MessageBox.ICON_INFO, nil, on_close, buttons) +end + +---Wrapper to easily show a warning message box. +---@param title string | widget.styledtext +---@param message string | widget.styledtext +---@param on_close? widget.messagebox.onclosehandler +---@param buttons? widget.messagebox.buttonstype +function MessageBox.warning(title, message, on_close, buttons) + MessageBox.alert(title, message, MessageBox.ICON_WARNING, nil, on_close, buttons) +end + +---Wrapper to easily show an error message box. +---@param title string | widget.styledtext +---@param message string | widget.styledtext +---@param on_close? widget.messagebox.onclosehandler +---@param buttons? widget.messagebox.buttonstype +function MessageBox.error(title, message, on_close, buttons) + MessageBox.alert(title, message, MessageBox.ICON_ERROR, nil, on_close, buttons) +end + + +return MessageBox diff --git a/debian/extra/libraries/widget/notebook.lua b/debian/extra/libraries/widget/notebook.lua new file mode 100644 index 0000000..1b64a42 --- /dev/null +++ b/debian/extra/libraries/widget/notebook.lua @@ -0,0 +1,188 @@ +-- +-- NoteBook Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" + +local HSPACING = 2 +local VSPACING = 2 + +---Represents a notebook pane +---@class widget.notebook.pane +---@field public name string +---@field public tab widget.button +---@field public container widget +local NoteBookPane = {} + +---@class widget.notebook : widget +---@overload fun(parent?:widget):widget.notebook +---@field public panes widget.notebook.pane[] +---@field public active_pane widget.notebook.pane +local NoteBook = Widget:extend() + +---Notebook constructor +---@param parent widget +function NoteBook:new(parent) + NoteBook.super.new(self, parent) + self.type_name = "widget.notebook" + self.panes = {} + self.active_pane = nil +end + +---Called when a tab is clicked. +---@param pane widget.notebook.pane +---@diagnostic disable-next-line +function NoteBook:on_tab_click(pane) end + +---Adds a new pane to the notebook and returns a container widget where +---you can add more child elements. +---@param name string +---@param label string +---@return widget container +function NoteBook:add_pane(name, label) + ---@type widget.button + local tab = Button(self, label) + tab.border.width = 0 + + if #self.panes > 0 then + tab:set_position(self.panes[#self.panes].tab:get_right() + HSPACING, 0) + end + + local container = Widget(self) + container.scrollable = true + container:set_position(0, tab:get_bottom() + VSPACING) + container:set_size( + self:get_width(), + self:get_height() - tab:get_height() - VSPACING + ) + + local pane = { + name = name, + tab = tab, + container = container + } + + if not self.active_pane then + self.active_pane = pane + end + + tab.on_click = function() + self.active_pane = pane + self:on_tab_click(pane) + end + + table.insert(self.panes, pane) + + return container +end + +---Search the pane for the given name and return it. +---@param name string +---@return widget.notebook.pane | nil +function NoteBook:get_pane(name) + for _, pane in pairs(self.panes) do + if pane.name == name then + return pane + end + end + return nil +end + +---Activates the given pane. +---@param name string +---@return boolean +function NoteBook:set_pane(name) + local pane = self:get_pane(name) + if pane then + self.active_pane = pane + return true + end + return false +end + +---Change the tab label of the given pane. +---@param name string +---@param label string +function NoteBook:set_pane_label(name, label) + local pane = self:get_pane(name) + if pane then + pane.tab:set_label(label) + return true + end + return false +end + +---Set or remove the icon for the given pane. +---@param name string +---@param icon? string|nil +---@param color? renderer.color|nil +---@param hover_color? renderer.color|nil +function NoteBook:set_pane_icon(name, icon, color, hover_color) + local pane = self:get_pane(name) + if pane then + pane.tab:set_icon(icon, color, hover_color) + return true + end + return false +end + +---Recalculate the position of the elements on resizing or position +---changes and also make changes to properly render active pane. +function NoteBook:update() + if not NoteBook.super.update(self) then return false end + + for pos, pane in pairs(self.panes) do + if pos ~= 1 then + pane.tab:set_position( + self.panes[pos-1].tab:get_right() + HSPACING, 0 + ) + else + pane.tab:set_position(0, 0) + end + if pane ~= self.active_pane then + if pane.container.visible then + pane.tab.background_color = style.background + pane.tab.foreground_color = style.text + pane.container:hide() + end + elseif not pane.container.visible then + pane.container:show() + end + end + + if self.active_pane then + self.active_pane.tab.foreground_color = style.accent + + self.active_pane.container:set_position( + 0, self.active_pane.tab:get_bottom() + VSPACING + ) + self.active_pane.container:set_size( + self:get_width(), + self:get_height() - self.active_pane.tab:get_height() - VSPACING + ) + self.active_pane.container.border.color = style.divider + end + + return true +end + +---Here we draw the bottom line on the tab of active pane. +function NoteBook:draw() + if not NoteBook.super.draw(self) then return false end + + if self.active_pane then + local x = self.active_pane.tab.position.x + local y = self.active_pane.tab.position.y + self.active_pane.tab:get_bottom() + local w = self.active_pane.tab:get_width() + renderer.draw_rect(x, y, w, HSPACING, style.caret) + end + + return true +end + + +return NoteBook diff --git a/debian/extra/libraries/widget/numberbox.lua b/debian/extra/libraries/widget/numberbox.lua new file mode 100644 index 0000000..31f885c --- /dev/null +++ b/debian/extra/libraries/widget/numberbox.lua @@ -0,0 +1,238 @@ +-- +-- NumberBox Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local Widget = require "libraries.widget" +local Button = require "libraries.widget.button" +local TextBox = require "libraries.widget.textbox" + +---@class widget.numberbox : widget +---@overload fun(parent?:widget, value:number, min?:number, max?:number, step?:number):widget.numberbox +---@field private textbox widget.textbox +---@field private decrease_button widget.button +---@field private increase_button widget.button +---@field private minimum number +---@field private maximum number +---@field private step number +local NumberBox = Widget:extend() + +---Constructor +---@param parent widget +---@param value number +---@param min? number +---@param max? number +---@param step? number +function NumberBox:new(parent, value, min, max, step) + NumberBox.super.new(self, parent) + + self.type_name = "widget.numberbox" + + self:set_range(min, max) + self:set_step(step) + + self.textbox = TextBox(self, "") + self.textbox.scrollable = true + + self.decrease_button = Button(self, "-") + self.increase_button = Button(self, "+") + + self:set_value(value) + + local this = self + function self.textbox.textview.doc:on_text_change(type) + if not tonumber(this.textbox:get_text()) then + if not this.coroutine_run then + this.coroutine_run = true + core.add_thread(function() + this.textbox:set_text(this.current_text) + this.coroutine_run = false + end) + end + else + this.textbox.placeholder_active = false + this.current_text = this.textbox:get_text() + this:on_change(tonumber(this.current_text)) + end + end + function self.textbox:on_mouse_wheel(y) + if self.active then + if y > 0 then this:increase() else this:decrease() end + return true + end + return false + end + function self.decrease_button:on_mouse_pressed(button, x, y, clicks) + if Button.super.on_mouse_pressed(self, button, x, y, clicks) then + this.mouse_is_pressed = true + this:mouse_pressed(false) + return true + end + return false + end + function self.increase_button:on_mouse_pressed(button, x, y, clicks) + if Button.super.on_mouse_pressed(self, button, x, y, clicks) then + this.mouse_is_pressed = true + this:mouse_pressed(true) + return true + end + return false + end + function self.decrease_button:on_mouse_released(button, x, y) + if Button.super.on_mouse_released(self, button, x, y) then + this.mouse_is_pressed = false + return true + end + return false + end + function self.increase_button:on_mouse_released(button, x, y) + if Button.super.on_mouse_released(self, button, x, y) then + this.mouse_is_pressed = false + return true + end + return false + end + + self.border.width = 0 + + self:set_size( + self.textbox:get_width() - 100 + + self.decrease_button:get_width() + + self.increase_button:get_width() + ) +end + +---Set a new value. +---@param value number +function NumberBox:set_value(value) + if type(value) == "number" then + self.textbox:set_text(tostring(value)) + elseif type(value) == "string" and tonumber(value) then + self.textbox:set_text(value) + else + self.textbox:set_text(tostring(self.minimum)) + end + self.textbox.placeholder_active = false + self.current_text = self.textbox:get_text() + self:on_change(tonumber(self.current_text)) +end + +---Get the current value. +---@return number +function NumberBox:get_value() + return tonumber(self.textbox:get_text()) or self.minimum +end + +---Set the minimum and maximum values allowed. +---@param min? number +---@param max? number +function NumberBox:set_range(min, max) + self.minimum = min or math.mininteger + self.maximum = max or math.maxinteger +end + +---Set the value used to increase or decrease the number when the +---buttons are pressed. +---@param step number +function NumberBox:set_step(step) + self.step = step or 1 +end + +---Decrease the current value. +function NumberBox:decrease() + self.textbox.placeholder_active = false + local value = tonumber(self.textbox:get_text()) or self.maximum + if (value - self.step) >= self.minimum then + self:set_value(value - self.step) + end +end + +---Increase the current value. +function NumberBox:increase() + self.textbox.placeholder_active = false + local value = tonumber(self.textbox:get_text()) or self.minimum + if (value + self.step) <= self.maximum then + self:set_value(value + self.step) + end +end + +---Triggered when the mouse is pressed on the increase/decrease buttons. +---@param increase boolean +function NumberBox:mouse_pressed(increase) + if increase then self:increase() else self:decrease() end + + local elapsed = system.get_time() + 0.3 + local this = self + + core.add_thread(function() + while this.mouse_is_pressed do + if elapsed < system.get_time() then + if increase then + this:increase() + else + this:decrease() + end + core.redraw = true + elapsed = system.get_time() + 0.1 + end + coroutine.yield() + end + end) +end + +---Overrided to enforce minimum allowed size. +---@param width integer +---@param height? integer Ignored on the number box +function NumberBox:set_size(width, height) + local buttons_w = self.decrease_button:get_width() + + self.increase_button:get_width() + + -- permit a minimum of 100 pixels wide for textbox + if width < (buttons_w + 100) then + width = 100 + buttons_w + end + + self.textbox:set_size(width - buttons_w) + + NumberBox.super.set_size( + self, + width, + math.max( + self.textbox:get_height(), + self.decrease_button:get_height(), + self.increase_button:get_height() + ) + -- TODO: check what causes the need for this border size addition since + -- it shouldn't be needed but for now fixes occasional bottom border cut. + + self.increase_button.border.width + ) +end + +function NumberBox:update() + if not NumberBox.super.update(self) then return false end + + self:set_size( + self.textbox:get_width() + + self.decrease_button:get_width() + + self.increase_button:get_width() + ) + + self.textbox:set_position(0, 0) + + self.decrease_button:set_position( + self.textbox:get_right(), + 0 + ) + + self.increase_button:set_position( + self.decrease_button:get_right(), + 0 + ) + + return true +end + + +return NumberBox diff --git a/debian/extra/libraries/widget/progressbar.lua b/debian/extra/libraries/widget/progressbar.lua new file mode 100644 index 0000000..5c88036 --- /dev/null +++ b/debian/extra/libraries/widget/progressbar.lua @@ -0,0 +1,95 @@ +-- +-- ProgressBar Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" + +---@class widget.progressbar : widget +---@overload fun(parent?:widget, percent?:number, width?:number):widget.progressbar +---@field public percent number +---@field public show_percent boolean +---@field private percent_width number +---@field private percent_x number +---@field private percent_y number +local ProgressBar = Widget:extend() + +---Constructor +---@param parent widget +---@param percent number +---@param width number +function ProgressBar:new(parent, percent, width) + ProgressBar.super.new(self, parent) + self.type_name = "widget.progressbar" + self.clickable = false + self.percent = percent or 0 + self.percent_width = 0 + self.show_percent = true + self:set_size(width or 200, self:get_font():get_height() + style.padding.y) +end + +---@param percent number +function ProgressBar:set_percent(percent) + self.percent = percent +end + +---@return number +function ProgressBar:get_percent() + return self.percent +end + +function ProgressBar:update() + if not ProgressBar.super.update(self) then return false end + + local font = self:get_font() + + -- update the size + self:set_label(self.percent .. "%") + + self:set_size( + nil, + font:get_height() + style.padding.y + ) + + local percent_width = (self.size.x * (self.percent / 100)) + + self:move_towards(self, "percent_width", percent_width, 0.2) + + if self.show_percent then + self.percent_x = (self:get_width() / 2) + - (font:get_width(self.label) / 2) + + self.percent_y = style.padding.y / 2 + end + + return true +end + +function ProgressBar:draw() + if not ProgressBar.super.draw(self) then return false end + + renderer.draw_rect( + self.position.x, + self.position.y, + self.percent_width, + self.size.y, + style.dim + ) + + if self.show_percent then + renderer.draw_text( + self:get_font(), + self.label, + self.position.x + self.percent_x, + self.position.y + self.percent_y, + style.text + ) + end + + return true +end + + +return ProgressBar diff --git a/debian/extra/libraries/widget/scrollbar.lua b/debian/extra/libraries/widget/scrollbar.lua new file mode 100644 index 0000000..5f9c181 --- /dev/null +++ b/debian/extra/libraries/widget/scrollbar.lua @@ -0,0 +1,33 @@ +-- +-- Extends core.scrollbar to allow propagating force status to child elements. +-- + +---@type core.scrollbar +local CoreScrollBar = require "core.scrollbar" + +---@class widget.scrollbar : core.scrollbar +---@overload fun(parent?:widget, options?:table):widget.scrollbar +---@field super widget.scrollbar +---@field widget_parent widget +local ScrollBar = CoreScrollBar:extend() + +function ScrollBar:new(parent, options) + self.widget_parent = parent + ScrollBar.super.new(self, options) +end + +function ScrollBar:set_forced_status(status) + ScrollBar.super.set_forced_status(self, status) + if self.widget_parent and self.widget_parent.childs then + for _, child in pairs(self.widget_parent.childs) do + if self.direction == "v" then + child.v_scrollbar:set_forced_status(status) + else + child.h_scrollbar:set_forced_status(status) + end + end + end +end + + +return ScrollBar diff --git a/debian/extra/libraries/widget/searchreplacelist.lua b/debian/extra/libraries/widget/searchreplacelist.lua new file mode 100644 index 0000000..0f5db33 --- /dev/null +++ b/debian/extra/libraries/widget/searchreplacelist.lua @@ -0,0 +1,607 @@ +-- +-- SearchReplaceList Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local common = require "core.common" +local style = require "core.style" +local Widget = require "libraries.widget" + +---@class widget.searchreplacelist.lineposition +---@field col1 integer +---@field col2 integer +---@field checked boolean? + +---@class widget.searchreplacelist.line +---@field line integer +---@field text string +---@field positions widget.searchreplacelist.lineposition[] + +---@class widget.searchreplacelist.file +---@field path string +---@field lines widget.searchreplacelist.line[] +---@field expanded boolean + +---@class widget.searchreplacelist.item +---@field checked boolean +---@field file widget.searchreplacelist.file? +---@field parent widget.searchreplacelist.item? +---@field line widget.searchreplacelist.line? +---@field position widget.searchreplacelist.lineposition? + +---@class widget.searchreplacelist : widget +---@field replacement string? +---@field selected integer +---@field hovered integer +---@field items widget.searchreplacelist.item[] +---@field total_files integer +---@field total_results integer +---@field base_dir string +---@overload fun(parent:widget, find:string, replacement:string?):widget.searchreplacelist +local SearchReplaceList = Widget:extend() + +---Colors to use when performing a replacement. +local DIFF = { + ADD = { common.color "#72b886" }, + DEL = { common.color "#F36161" }, + TEXT = { common.color "#000000" } +} + +---Constructor +---@param parent widget +---@param replacement string? +function SearchReplaceList:new(parent, replacement) + SearchReplaceList.super.new(self, parent) + + self.type_name = "widget.searchreplacelist" + + self.replacement = replacement or nil + self.selected = 0 + self.hovered = 0 + self.items = {} + self.max_width = 0 + self.hovered_checkbox = false + self.hovered_expander = false + self.scrollable = true + self.total_files = 0 + self.total_results = 0 + self.base_dir = "" +end + +---Overridable event triggered when an item is clicked. +---@param item widget.searchreplacelist.item +---@param clicks integer +function SearchReplaceList:on_item_click(item, clicks) end + +---Add a new file with all the matching lines and positions. +---@param path string +---@param lines widget.searchreplacelist.line[] +---@param expanded boolean? +function SearchReplaceList:add_file(path, lines, expanded) + if type(expanded) == "nil" then expanded = true end + table.insert(self.items, { + checked = true, + file = { + path = path, + lines = lines, + expanded = false + } + }) + self.total_files = self.total_files + 1 + -- expand results and count them + if expanded and #lines > 0 then + self:expand(#self.items, true) + -- count the results only + else + for _, line in ipairs(self.items[#self.items]) do + self.total_results = self.total_results + #line.positions + end + end +end + +---Removes all elements from the list and reset it. +function SearchReplaceList:clear() + self.selected = 0 + self.hovered = 0 + self.items = {} + self.max_width = 0 + self.hovered_checkbox = false + self.hovered_expander = false + self.total_files = 0 + self.total_results = 0 +end + +---Uncollapse a file line results. +---@param position integer +function SearchReplaceList:expand(position, count_results) + local parent = self.items[position] + if + parent and parent.file + and + not parent.file.expanded + then + local insert_pos = position+1 + local items = {} + for _, line in ipairs(parent.file.lines) do + for _, line_pos in ipairs(line.positions) do + table.insert(items, { + parent = parent, + line = line, + position = line_pos + }) + if count_results then + self.total_results = self.total_results + 1 + end + end + end + common.splice(self.items, insert_pos, 0, items) + parent.file.expanded = true + end +end + +---Collapse a file line results. +---@param position integer +function SearchReplaceList:contract(position) + local parent = self.items[position] + if + parent and parent.file + and + parent.file.expanded + then + local start_pos = position+1 + local end_pos = 0 + for _, line in ipairs(parent.file.lines) do + for _, _ in ipairs(line.positions) do + end_pos = end_pos + 1 + end + end + common.splice(self.items, start_pos, end_pos) + parent.file.expanded = false + end +end + +---Collapse/uncollapse a file line results. +---@param position integer +function SearchReplaceList:toggle_expand(position) + local parent = self.items[position] + if parent and parent.file then + if parent.file.expanded then + self:contract(position) + else + self:expand(position) + end + end +end + +---Toggle the checkbox of the given item position. +---@param pos integer +function SearchReplaceList:toggle_check(pos) + local item = self.items[pos] + if not item or self.replacement == nil then return end + if item.file then + item.checked = not item.checked + for _, line in ipairs(item.file.lines) do + for _, position in ipairs(line.positions) do + position.checked = item.checked + end + end + else + if type(item.position.checked) == "nil" then + item.position.checked = false + else + item.position.checked = not item.position.checked + end + local parent_checked = true + for _, line in ipairs(item.parent.file.lines) do + for _, position in ipairs(line.positions) do + if position.checked == false then + parent_checked = false + break + end + end + end + item.parent.checked = parent_checked + end +end + +---Replace a position on a string with a given replacement. +---@param str string +---@param s integer +---@param e integer +---@param rep string +local function replace_substring(str, s, e, rep) + local head = s <= 1 and "" or string.sub(str, 1, s - 1) + local tail = e >= #str and "" or string.sub(str, e + 1) + return head .. rep .. tail +end + +---Applies the replacement on the given item position but not on the real file. +--- +---The purpose of this function is to reflect the changes on the listed items. +---@param position integer +function SearchReplaceList:apply_replacement(position) + local item = self.items[position] + if item and item.file and self.replacement then + local replacement = self.replacement + local replacement_len = #self.replacement + for _, line in ipairs(item.file.lines) do + local offset = 0 + for _, pos in ipairs(line.positions) do + local col1 = pos.col1 + offset + local col2 = pos.col2 + offset + if pos.checked or type(pos.checked) == "nil" then + line.text = replace_substring(line.text, col1, col2, replacement) + local current_len = col2 - col1 + 1 + local len_diff = 0 + if current_len > replacement_len then + len_diff = current_len - replacement_len + offset = offset - len_diff + col2 = col2 - len_diff + elseif current_len < replacement_len then + len_diff = replacement_len - current_len + offset = offset + len_diff + col2 = col2 + len_diff + end + end + pos.col1, pos.col2 = col1, col2 + end + end + end +end + +---Select the item that follows currently selected item. +---@return widget.searchreplacelist.item? +function SearchReplaceList:select_next() + local items_count = #self.items + if items_count <= 0 then return nil end + local selected = self.selected+1 + if selected > items_count then selected = 1 end + self.selected = common.clamp(selected, 1, items_count) + self:scroll_to_selected() + return self.items[self.selected] +end + +---Select the item that precedes currently selected item. +---@return widget.searchreplacelist.item? +function SearchReplaceList:select_prev() + local items_count = #self.items + if items_count <= 0 then return nil end + local selected = self.selected-1 + if selected < 1 then selected = items_count end + self.selected = common.clamp(selected, 1, items_count) + self:scroll_to_selected() + return self.items[self.selected] +end + +---Get the currently selected item. +---@return widget.searchreplacelist.item? +function SearchReplaceList:get_selected() + if self.selected > 0 and self.selected <= #self.items then + return self.items[self.selected] + end + return nil +end + +---Get the line height used when drawing each item row. +---@return number height +function SearchReplaceList:get_line_height() + return style.padding.y + style.font:get_height() +end + +---Used when calculating if vertical scrolling is needed. +---@return number size +function SearchReplaceList:get_scrollable_size() + return #self.items * self:get_line_height() + style.padding.y +end + +---Used when calculating if horizontal scrolling is needed. +---@return number size +function SearchReplaceList:get_h_scrollable_size() + local width = style.padding.x / 2 + + style.icon_font:get_width("-") + + style.padding.x / 2 + + self.max_width + if self.replacement then + local cb_w = self:get_checkbox_size() + width = width + + cb_w + style.padding.x / 2 + + style.font:get_width(self.replacement) + end + return width +end + +---Get the checkbox size based on the line height. +---@param y? number +---@return number w +---@return number h +---@return number y Vertically center align coord based on given y param +function SearchReplaceList:get_checkbox_size(y) + if not y then y = 0 end + local lh = self:get_line_height() + local w = lh * 0.6 + local h = w + y = y + ((lh / 2) - (h / 2)) + return w, h, y +end + +---Get the position of first and last visible items. +---@return integer first +---@return integer last +function SearchReplaceList:get_visible_items_range() + local lh = self:get_line_height() + local min = math.max(1, math.floor(self.scroll.y / lh)) + return min, min + math.floor(self.size.y / lh) + 1 +end + +---Allows iterating the currently visible items only. +---@return fun():integer,widget.searchreplacelist.item,number,number,number,number +function SearchReplaceList:each_visible_item() + return coroutine.wrap(function() + local lh = self:get_line_height() + local x, y = self:get_content_offset() + local min, max = self:get_visible_items_range() + y = y + lh * (min - 1) + for i = min, max do + local item = self.items[i] + if not item then break end + coroutine.yield(i, item, x, y, self.size.x, lh) + y = y + lh + end + end) +end + +---Iterates over all files, only those that have a position checked on replacement mode. +---@return fun():integer,widget.searchreplacelist.file +function SearchReplaceList:each_file() + return coroutine.wrap(function() + local replacement = self.replacement + for i, item in ipairs(self.items) do + if item.file then + if replacement then + local none_checked = true + for _, line in ipairs(item.file.lines) do + for _, pos in ipairs(line.positions) do + if type(pos.checked) == "nil" or pos.checked then + none_checked = false + break + end + end + end + if none_checked then + goto continue + end + end + coroutine.yield(i, item.file) + end + ::continue:: + end + end) +end + +---Scroll to currently selected item only if not already visible. +function SearchReplaceList:scroll_to_selected() + if self.selected == 0 then return end + local h = self:get_line_height() + local y = h * (self.selected - 1) + self.scroll.to.y = math.min(self.scroll.to.y, y) + self.scroll.to.y = math.max(self.scroll.to.y, y + h - self.size.y) +end + +function SearchReplaceList:on_mouse_moved(mx, my, ...) + if not SearchReplaceList.super.on_mouse_moved(self, mx, my, ...) then + return false + end + self.hovered = 0 + for i, item, x,y,w,h in self:each_visible_item() do + w = self.size.x + if mx >= x and my >= y and mx < x + w and my < y + h then + self.hovered = i + x = x + style.padding.x / 2 + w = style.icon_font:get_width('-') + if item.file and mx >= x and my >= y and mx < x + w and my < y + h then + self.hovered_expander = true + self.hovered_checkbox = false + else + self.hovered_expander = false + end + if not self.hovered_expander and self.replacement then + x = x + w + style.padding.x / 2 + w, h, y = self:get_checkbox_size(y) + if mx >= x and my >= y and mx < x + w and my < y + h then + self.hovered_checkbox = true + self.hovered_expander = false + else + self.hovered_checkbox = false + end + end + break + end + end + return true +end + +function SearchReplaceList:on_mouse_pressed(button, x, y, clicks) + if + not SearchReplaceList.super.on_mouse_pressed(self, button, x, y, clicks) + then + return false + end + if self:scrollbar_hovering() then return true end + local item = self.items[self.hovered] + if not item then return true end + self.selected = self.hovered + if self.hovered_checkbox then + self:toggle_check(self.selected) + elseif item.file and (clicks > 1 or self.hovered_expander) then + if not item.file.expanded then + self:expand(self.hovered) + else + self:contract(self.hovered) + end + else + self:on_item_click(item, clicks) + end + return true +end + +function SearchReplaceList:draw_checkbox(checked, hovered, x, y, lh) + local w, h, cy = self:get_checkbox_size(y) + renderer.draw_rect(x, cy, w, h, style.text) + renderer.draw_rect( + x + 2, cy + 2, w-4, h-4, + hovered and style.dim or style.background + ) + if checked then + renderer.draw_rect(x + 5, cy + 5, w-10, h-10, style.caret) + end + return x + w +end + +function SearchReplaceList:draw() + if not SearchReplaceList.super.draw(self) then return false end + + core.push_clip_rect( + self.position.x, + self.position.y, + self.size.x, + self.size.y + ) + + local font = self:get_font() + + local replacement = self.replacement + local replacement_width = font:get_width(replacement or "") + local file_path + + self.max_width = 0 + + for i, item, x,y,w,h in self:each_visible_item() do + if item.file then + file_path = common.relative_path(self.base_dir, item.file.path) + end + + -- add left padding + x = x + style.padding.x / 2 + + local text_color = style.text + + if i == self.selected then + renderer.draw_rect(self.position.x, y, self.size.x, h, style.selection) + elseif i == self.hovered then + renderer.draw_rect(self.position.x, y, self.size.x, h, style.line_highlight) + text_color = style.accent + end + + -- draw collapse/contract symbol + if item.file then + common.draw_text( + style.icon_font, + (self.hovered == i and self.hovered_expander) and style.accent or style.text, + item.file.expanded and "-" or "+", + "left", + x, y, w, h + ) + x = x + style.icon_font:get_width("-") + else + x = x + style.icon_font:get_width("-") + end + + x = x + style.padding.x / 2 + + -- draw checkbox + if replacement then + local checked = false + if item.file then + checked = item.checked + else + if type(item.position.checked) == "nil" then + checked = true + else + checked = item.position.checked + end + end + x = style.padding.x / 2 + self:draw_checkbox( + checked, + i == self.hovered and self.hovered_checkbox or false, + x, y, h + ) + end + + -- draw text + local text = item.file and file_path or item.line.text + local all_text = "" + + if item.line then + local start_pos, end_pos = 1, #text + local prefix, postfix = "", "" + -- truncate long lines to keep good rendering performance + if #text > 120 then + start_pos = math.max(item.position.col1 - 50, 1) + end_pos = math.min(item.position.col2 + 50, end_pos) + if start_pos ~= 1 then prefix = "..." end + if end_pos ~= #text then postfix = "..." end + end + x = common.draw_text( + font, + style.syntax["number"], + tostring(item.line.line) .. ": ", + "left", + x, y, w, h + ) + local start_text = item.position.col1 ~= 1 and + prefix .. text:sub(start_pos, item.position.col1-1) + or + "" + local end_text = item.position.col2 ~= #text and + text:sub(item.position.col2+1, end_pos) .. postfix + or + "" + local found_text = text:sub(item.position.col1, item.position.col2) + local found_width = style.font:get_width(found_text) + if start_text ~= "" then + x = common.draw_text( + font, + text_color, + start_text, + "left", + x, y, w, h + ) + end + local found_color = not replacement and style.dim or DIFF.DEL + local found_text_color = not replacement and text_color or DIFF.TEXT + renderer.draw_rect(x, y, found_width, h, found_color) + x = common.draw_text(font, found_text_color, found_text, "left", x, y, w, h) + if replacement then + renderer.draw_rect(x, y, replacement_width, h, DIFF.ADD) + x = common.draw_text(font, DIFF.TEXT, replacement, "left", x, y, w, h) + end + if end_text ~= "" then + x = common.draw_text( + font, + text_color, + end_text, + "left", + x, y, w, h + ) + end + all_text = item.line.line .. ": " .. start_text .. found_text .. end_text + else + x = common.draw_text(font, text_color, text, "left", x, y, w, h) + all_text = file_path + end + + -- recalc max_width for horizontal scrollbar + self.max_width = math.max(self.max_width, style.font:get_width(all_text)) + end + + core.pop_clip_rect() + + self:draw_scrollbar() + + return true +end + + +return SearchReplaceList diff --git a/debian/extra/libraries/widget/selectbox.lua b/debian/extra/libraries/widget/selectbox.lua new file mode 100644 index 0000000..45314c8 --- /dev/null +++ b/debian/extra/libraries/widget/selectbox.lua @@ -0,0 +1,288 @@ +-- +-- SelectBox Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local common = require "core.common" +local style = require "core.style" +local Widget = require "libraries.widget" +local ListBox = require "libraries.widget.listbox" + +---@class widget.selectbox : widget +---@overload fun(parent?:widget, label?:string):widget.selectbox +---@field private list_container widget +---@field private list widget.listbox +---@field private selected integer +---@field private hover_text renderer.color +local SelectBox = Widget:extend() + +---Constructor +---@param parent widget +---@param label string +function SelectBox:new(parent, label) + SelectBox.super.new(self, parent) + self.type_name = "widget.selectbox" + self.size.x = 200 + (style.padding.x * 2) + self.size.y = self:get_font():get_height() + (style.padding.y * 2) + self.list_container = Widget() + self.list_container.name = self:get_name() + self.list_container:set_size( + self.size.x - self.list_container.border.width, + 150 + ) + self.list = ListBox(self.list_container) + self.list.border.width = 0 + self.list:enable_expand(true) + self.selected = 0 + + local list_on_row_click = self.list.on_row_click + self.list.on_row_click = function(this, idx, data) + list_on_row_click(this, idx, data) + if idx ~= 1 then + self.selected = idx-1 + self:on_selected(idx-1, data) + self:on_change(self.selected) + end + self.list_container:hide_animated(true) + end + + -- Hide list if mouse clicked outside + self.list_container:force_event("mouse_released") + self.list_container.on_mouse_released = function(this, button, x, y) + if + this:is_visible() + and + not this:mouse_on_top(x, y) and not self:mouse_on_top(x, y) + then + this:hide() + return false + end + if this:is_visible() and this:mouse_on_top(x, y) then + return Widget.on_mouse_released(this, button, x, y) + end + end + + self:set_label(label or "select") +end + +---Set the text displayed when no item is selected. +---@param text string +function SelectBox:set_label(text) + SelectBox.super.set_label(self, "- "..text.." -") + if not self.list.rows[1] then + self.list:add_row({"- "..text.." -"}) + else + self.list.rows[1][1] = "- "..text.." -" + end +end + +---Add selectable option to the selectbox. +---@param text widget.styledtext|string +---@param data any +function SelectBox:add_option(text, data) + if type(text) == "string" then + self.list:add_row({ text }, data) + else + self.list:add_row(text, data) + end +end + +---Check if a text is longer than the given maximum width and if larger returns +---a chopped version with the overflow_chars appended to it. +---@param text string +---@param max_width number +---@param font widget.font Default is style.font +---@param overflow_chars? string Default is '...' +---@return string chopped_text +---@return boolean overflows True if the text overflows +function SelectBox:text_overflow(text, max_width, font, overflow_chars) + font = self:get_font(font) + overflow_chars = overflow_chars or "..." + + local overflow = false + local overflow_chars_width = font:get_width(overflow_chars) + + if font:get_width(text) > max_width then + overflow = true + for i = 1, #text do + local reduced_text = text:sub(1, #text - i) + if + font:get_width(reduced_text) + overflow_chars_width + <= + max_width + then + text = reduced_text .. "…" + break + end + end + end + + return text, overflow +end + +---Set the active option index. +---@param idx integer +function SelectBox:set_selected(idx) + if self.list.rows[idx+1] then + self.selected = idx + self.list:set_selected(idx+1) + else + self.selected = 0 + self.list:set_selected() + end + self:on_change(self.selected) +end + +---Get the currently selected option index. +---@return integer +function SelectBox:get_selected() + return self.selected +end + +---Get the currently selected option text. +---@return string|nil +function SelectBox:get_selected_text() + if self.selected > 0 then + return self.list:get_row_text(self.selected + 1) + end + return nil +end + +---Get the currently selected option associated data. +---@return any|nil +function SelectBox:get_selected_data() + if self.selected > 0 then + return self.list:get_row_data(self.selected + 1) + end + return nil +end + +---Repositions the listbox container according to the selectbox position +---and available screensize. +function SelectBox:reposition_container() + local y1 = self.position.y + self:get_height() + local y2 = self.position.y - self.list:get_height() + + local _, h = system.get_window_size(core.window) + + if y1 + self.list:get_height() <= h then + self.list_container:set_position( + self.position.x, + y1 + ) + else + self.list_container:set_position( + self.position.x, + y2 + ) + end + + self.list_container.size.x = self.size.x - (self.border.width * 2) +end + +---Overrided to destroy the floating listbox container. +function SelectBox:destroy_childs() + SelectBox.super.destroy_childs(self) + self.list_container:destroy() +end + +-- +-- Events +-- + +---Overwrite to listen to on_selected events. +---@param item_idx integer +---@param item_data widget.listbox.row +---@diagnostic disable-next-line +function SelectBox:on_selected(item_idx, item_data) end + +function SelectBox:on_mouse_enter(...) + SelectBox.super.on_mouse_enter(self, ...) + self.hover_text = style.accent +end + +function SelectBox:on_mouse_leave(...) + SelectBox.super.on_mouse_leave(self, ...) + self.hover_text = nil +end + +function SelectBox:on_click(button, x, y) + SelectBox.super.on_click(self, button, x, y) + + if button == "left" then + self:reposition_container() + + self.list_container.border.color = style.caret + + self.list_container:toggle_visible(true, true) + + self.list:resize_to_parent() + end +end + +function SelectBox:update() + if not SelectBox.super.update(self) then return false end + + local font = self:get_font() + + self.size.y = font:get_height() + style.padding.y * 2 + + if + self.list_container.visible + and + self.list_container.position.y ~= self.position.y + self:get_height() + then + self:reposition_container() + end + + return true +end + +function SelectBox:draw() + if not SelectBox.super.draw(self) then return false end + + local font = self:get_font() + + local icon_width = style.icon_font:get_width("+") + + local max_width = self.size.x + - icon_width + - (style.padding.x * 2) -- left/right paddings + - (style.padding.x / 2) -- space between icon and text + + local item_text = self.selected == 0 and + self.label or self.list:get_row_text(self.selected+1) + + local text = self:text_overflow(item_text, max_width, font) + + -- draw label or selected item + common.draw_text( + font, + self.hover_text or self.foreground_color or style.text, + text, + "left", + self.position.x + style.padding.x, + self.position.y, + self.size.x - style.padding.x, + self.size.y + ) + + -- draw arrow down icon + common.draw_text( + style.icon_font, + self.hover_text or self.foreground_color or style.text, + "-", + "right", + self.position.x, + self.position.y, + self.size.x - style.padding.x, + self.size.y + ) + + return true +end + + +return SelectBox diff --git a/debian/extra/libraries/widget/textbox.lua b/debian/extra/libraries/widget/textbox.lua new file mode 100644 index 0000000..08abddd --- /dev/null +++ b/debian/extra/libraries/widget/textbox.lua @@ -0,0 +1,308 @@ +-- +-- TextBox widget re-using code from lite's DocView. +-- + +local core = require "core" +local style = require "core.style" +local translate = require "core.doc.translate" +local Doc = require "core.doc" +local DocView = require "core.docview" +local View = require "core.view" +local Widget = require "libraries.widget" + + +---@class widget.textbox.SingleLineDoc : core.doc +---@overload fun():widget.textbox.SingleLineDoc +---@field super core.doc +local SingleLineDoc = Doc:extend() + +function SingleLineDoc:insert(line, col, text) + SingleLineDoc.super.insert(self, line, col, text:gsub("\n", "")) +end + +---@class widget.textbox.TextView : core.docview +---@overload fun():widget.textbox.TextView +---@field super core.docview +local TextView = DocView:extend() + +function TextView:new() + TextView.super.new(self, SingleLineDoc()) + self.gutter_width = 0 + self.hide_lines_gutter = true + self.gutter_text_brightness = 0 + self.scrollable = true + self.font = "font" + self.name = View.get_name(self) + + self.size.y = 0 + self.label = "" +end + +function TextView:get_name() + return self.name +end + +function TextView:get_scrollable_size() + return 0 +end + +function TextView:get_text() + return self.doc:get_text(1, 1, 1, math.huge) +end + +function TextView:set_text(text, select) + self.doc:remove(1, 1, math.huge, math.huge) + self.doc:text_input(text) + if select then + self.doc:set_selection(math.huge, math.huge, 1, 1) + end +end + +function TextView:get_gutter_width() + return self.gutter_width or 0 +end + +function TextView:get_line_height() + return math.floor(self:get_font():get_height() * 1.2) +end + +function TextView:draw_line_gutter(idx, x, y) + if self.hide_lines_gutter then + return + end + TextView.super.draw_line_gutter(self, idx, x, y) +end + +function TextView:draw_line_highlight() + -- no-op function to disable this functionality +end + +-- Overwrite this function just to disable the core.push_clip_rect +function TextView:draw() + self:draw_background(style.background) + local _, indent_size = self.doc:get_indent_info() + self:get_font():set_tab_size(indent_size) + + local minline, maxline = self:get_visible_line_range() + local lh = self:get_line_height() + + local x, y = self:get_line_screen_position(minline) + for i = minline, maxline do + self:draw_line_gutter(i, self.position.x, y) + y = y + lh + end + + x, y = self:get_line_screen_position(minline) + for i = minline, maxline do + self:draw_line_body(i, x, y) + y = y + lh + end + self:draw_overlay() + + self:draw_scrollbar() +end + +---@class widget.textbox : widget +---@overload fun(parent?:widget, text?:string, placeholder?:string):widget.textbox +---@field textview widget.textbox.TextView +---@field placeholder string +---@field placeholder_active boolean +local TextBox = Widget:extend() + +function TextBox:new(parent, text, placeholder) + TextBox.super.new(self, parent) + self.type_name = "widget.textbox" + self.textview = TextView() + self.textview.name = parent.name + self.size.x = 200 + (style.padding.x * 2) + self.textview.size.x = self.size.x + self.size.y = self:get_font():get_height() + (style.padding.y * 2) + self.placeholder = placeholder or "" + self.placeholder_active = false + -- this widget is for text input + self.input_text = true + self.cursor = "ibeam" + self.active = false + self.drag_select = false + + if text ~= "" then + self.textview:set_text(text, select) + else + self.placeholder_active = true + self.textview:set_text(self.placeholder) + end + + local this = self + + function self.textview.doc:on_text_change() + if not this.placeholder_active then + this:on_change(this:get_text()) + end + end + + -- more granular listening of text changing events + local doc_raw_insert = self.textview.doc.raw_insert + function self.textview.doc:raw_insert(...) + doc_raw_insert(self, ...) + this:on_text_change("insert", ...) + end + + local doc_raw_remove = self.textview.doc.raw_remove + function self.textview.doc:raw_remove(...) + doc_raw_remove(self, ...) + this:on_text_change("remove", ...) + end +end + +---@param width integer +function TextBox:set_size(width) + TextBox.super.set_size( + self, + width, + self:get_font():get_height() + (style.padding.y * 2) + ) + self.textview.size.x = self.size.x +end + +--- Get the text displayed on the textbox. +---@return string +function TextBox:get_text() + if self.placeholder_active then + return "" + end + return self.textview:get_text() +end + +--- Set the text displayed on the textbox. +---@param text string +---@param select? boolean +function TextBox:set_text(text, select) + self.textview:set_text(text, select) +end + +-- +-- Events +-- + +function TextBox:on_mouse_pressed(button, x, y, clicks) + if TextBox.super.on_mouse_pressed(self, button, x, y, clicks) then + self.textview:on_mouse_pressed(button, x, y, clicks) + local line, col = self.textview:resolve_screen_position(x, y) + self.drag_select = { line = line, col = col } + self.textview.doc:set_selection(line, col, line, col) + if clicks == 2 then + local line1, col1 = translate.start_of_word(self.textview.doc, line, col) + local line2, col2 = translate.end_of_word(self.textview.doc, line1, col1) + self.textview.doc:set_selection(line2, col2, line1, col1) + elseif clicks == 3 then + self.textview.doc:set_selection(1, 1, 1, math.huge) + end + if core.active_view ~= self.textview then + self.textview:on_mouse_released(button, x, y) + end + return true + end + return false +end + +function TextBox:on_mouse_released(button, x, y) + if TextBox.super.on_mouse_released(self, button, x, y) then + self.drag_select = false + self.textview:on_mouse_released(button, x, y) + return true + end + return false +end + +function TextBox:on_mouse_moved(x, y, dx, dy) + if self.drag_select then + local line, col = self.textview:resolve_screen_position(x, y) + self.textview.doc:set_selection( + self.drag_select.line, self.drag_select.col, line, col + ) + end + if TextBox.super.on_mouse_moved(self, x, y, dx, dy) then + if self.active or core.active_view == self.textview then + self.textview:on_mouse_moved(x, y, dx, dy) + end + return true + end + return false +end + +function TextBox:activate() + self.hover_border = style.caret + if self.placeholder_active then + self.placeholder_active = false + self:set_text("") + end + self.active = true + core.request_cursor("ibeam") +end + +function TextBox:deactivate() + self.hover_border = nil + self.drag_select = false + if self:get_text() == "" then + self.placeholder_active = true + self:set_text(self.placeholder) + end + self.active = false + core.request_cursor("arrow") +end + +function TextBox:on_text_input(text) + TextBox.super.on_text_input(self, text) + self.textview:on_text_input(text) +end + +---Event fired on any text change event. +---@param action string Can be "insert" or "remove", +---insert arguments (see Doc:raw_insert): +--- line, col, text, undo_stack, time +---remove arguments (see Doc:raw_remove): +--- line1, col1, line2, col2, undo_stack, time +---@diagnostic disable-next-line +function TextBox:on_text_change(action, ...) end + +function TextBox:update() + if not TextBox.super.update(self) then return false end + + if + self.drag_select + or + (self.active and self:mouse_on_top(self.mouse.x, self.mouse.y)) + then + core.request_cursor("ibeam") + end + + self.textview:update() + self.size.y = self:get_font():get_height() + (style.padding.y * 2) + + return true +end + +function TextBox:draw() + if not self:is_visible() then return false end + + self.border.color = self.hover_border or style.text + TextBox.super.draw(self) + self.textview.position.x = self.position.x + (style.padding.x / 2) + self.textview.position.y = self.position.y - (style.padding.y/2.5) + self.textview.size.x = self.size.x + self.textview.size.y = self.size.y - (style.padding.y * 2) + + core.push_clip_rect( + self.position.x, + self.position.y, + self.size.x, + self.size.y + ) + self.textview:draw() + core.pop_clip_rect() + + return true +end + + +return TextBox diff --git a/debian/extra/libraries/widget/toggle.lua b/debian/extra/libraries/widget/toggle.lua new file mode 100644 index 0000000..f3ed952 --- /dev/null +++ b/debian/extra/libraries/widget/toggle.lua @@ -0,0 +1,140 @@ +-- +-- Toggle Widget. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" +local Label = require "libraries.widget.label" + +-- Hold dimensions of rendered toggle +local BOX = 40 +local TOGGLE = 15 +local BORDER = 3 + +---@class widget.toggle : widget +---@overload fun(parent?:widget, label?:string, enable?:boolean):widget.toggle +---@field public enabled boolean +---@field private caption_label widget.textbox +---@field private padding integer +---@field private switch_x number +---@field private toggle_bg renderer.color +local Toggle = Widget:extend() + +---Constructor +---@param parent widget +---@param label string +---@param enable boolean +function Toggle:new(parent, label, enable) + Toggle.super.new(self, parent) + + self.type_name = "widget.toggle" + + self.enabled = enable or false + self.label = label or "" + + self.caption_label = Label(self, self.label) + self.caption_label:set_position(0, 0) + + self.padding = 2 + self.border.width = 0 + + self:set_size( + self.caption_label:get_width() + (style.padding.x / 2) + (BOX * SCALE), + self.caption_label:get_height() + ((self.padding * 2) * SCALE) + ) + + self.animate_switch = false + self.toggle_x = 0 +end + +---@param enabled boolean +function Toggle:set_toggle(enabled) + self.enabled = enabled + self.animate_switch = true + self:on_change(self.enabled) +end + +---@return boolean +function Toggle:is_toggled() + return self.enabled +end + +function Toggle:toggle() + self.enabled = not self.enabled + self.animate_switch = true + self:on_change(self.enabled) +end + +---@param text string|widget.styledtext +function Toggle:set_label(text) + Toggle.super.set_label(self, text) + self.caption_label:set_label(text) +end + +function Toggle:on_click() + self:toggle() +end + +function Toggle:update() + if not Toggle.super.update(self) then return false end + + local px = style.padding.x / 2 + + self:set_size( + self.caption_label:get_width() + px + (BOX * SCALE), + self.caption_label:get_height() + ((self.padding * 2) * SCALE) + ) + + self.toggle_x = self.caption_label:get_right() + px + + local switch_x = self.enabled and + self.position.x + self.toggle_x + + ((BOX - TOGGLE - BORDER) * SCALE) + or + self.position.x + self.toggle_x + (BORDER * SCALE) + + if not self.animate_switch then + self.switch_x = switch_x + self.toggle_bg = {} + local color = self.enabled and style.caret or style.line_number + for i=1, 4, 1 do self.toggle_bg[i] = color[i] end + else + local color = self.enabled and style.caret or style.line_number + self:move_towards(self, "switch_x", switch_x, 0.2) + for i=1, 4, 1 do + self:move_towards(self.toggle_bg, i, color[i], 0.2) + end + if self.switch_x == switch_x then + self.animate_switch = false + end + end + + return true +end + +function Toggle:draw() + if not Toggle.super.draw(self) then return false end + + renderer.draw_rect( + self.position.x + self.toggle_x, + self.position.y, + BOX * SCALE, + self.size.y, + self.toggle_bg + ) + + renderer.draw_rect( + self.switch_x, + self.position.y + (BORDER * SCALE), + TOGGLE * SCALE, + self.size.y - ((BORDER * 2) * SCALE), + style.line_highlight + ) + + return true +end + + +return Toggle diff --git a/debian/extra/libraries/widget/treelist.lua b/debian/extra/libraries/widget/treelist.lua new file mode 100644 index 0000000..758db49 --- /dev/null +++ b/debian/extra/libraries/widget/treelist.lua @@ -0,0 +1,609 @@ +-- +-- TreeList Widget heavily based on TreeView plugin. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local core = require "core" +local common = require "core.common" +local style = require "core.style" +local Widget = require "libraries.widget" + +---@class widget.treelist.item +---@field name string +---@field label string +---@field data any? +---@field expanded boolean? +---@field visible boolean? +---@field tooltip string? +---@field depth integer? +---@field childs widget.treelist.item[]? +---@field parent widget.treelist.item[]? +---@field icon string? + +---@class widget.treelist : widget +---@field items widget.treelist.item[] +---@field selected_item widget.treelist.item? +---@field hovered_item widget.treelist.item? +---@field icon_font renderer.font? +---@field private count_lines integer +---@field private scroll_width integer +---@overload fun(parent:widget?):widget.treelist +local TreeList = Widget:extend() + +---Constructor +---@param parent? widget +function TreeList:new(parent) + TreeList.super.new(self, parent) + + self.type_name = "widget.treelist" + + self.scrollable = true + self.init_size = true + self.count_lines = 0 + self.scroll_width = 0 + self.items = {} + self.tooltip = { x = 0, y = 0, begin = 0, alpha = 0 } + self.last_scroll_y = 0 + + self.item_icon_width = 0 + self.item_text_spacing = 0 +end + +---Get the height of a single item. +---@return number h +function TreeList:get_item_height() + return style.font:get_height() + style.padding.y +end + +---Add new item to to tree list +---@param item widget.treelist.item +function TreeList:add_item(item) + table.insert(self.items, item) +end + +---Remove all items from the tree +function TreeList:clear() + self.items = {} + self.selected_item = nil + self.hovered_item = nil +end + +---Retrieve the amount of visible items and also yield them. +---@param item widget.treelist.item +---@param x number +---@param y number +---@param w number +---@param h number +---@param depth? number +---@return integer items_count +function TreeList:get_items(item, x, y, w, h, depth) + if not depth then depth = 0 else depth = depth + 1 end + item.depth = depth + coroutine.yield(item, x, y, w, h) + local count_lines = 1 + if item and item.childs and item.expanded then + for _, child in ipairs(item.childs) do + if child.visible ~= false then + count_lines = count_lines + self:get_items( + child, x, y + count_lines * h, w, h, depth + ) + end + end + end + return count_lines +end + +---Allows iterating the currently visible items only. +---@return fun():widget.treelist.item,number,number,number,number +function TreeList:each_item() + return coroutine.wrap(function() + local count_lines = 0 + local ox, oy = self:get_content_offset() + local h = self:get_item_height() + if #self.items > 0 then + for i=1, #self.items do + count_lines = count_lines + self:get_items( + self.items[i], + ox, oy + style.padding.y + h * count_lines, + self.size.x, h + ) + end + end + self.count_lines = count_lines + end) +end + +---Retrieve an item by name using the query format: +---"parent_name>child_name_2>child_name_2>etc..." +---@param query string +---@param items? widget.treelist.item[] +---@param separator? string Use a different separator (default: >) +---@return widget.treelist.item? +function TreeList:query_item(query, items, separator) + local parent = items or self.items + local item = nil + separator = separator or ">" + for name in query:gmatch("([^"..separator.."]+)") do + if parent then + local found = false + for _, child in ipairs(parent) do + if name == child.name then + item = child + parent = child.childs + found = true + break + end + end + if not found then return nil end + else + return nil + end + end + return item +end + +---Set the active item. +---@param selection widget.treelist.item +---@param selection_y? number +---@param center? boolean +---@param instant? boolean +function TreeList:set_selection(selection, selection_y, center, instant) + self.selected_item = selection + if selection and selection_y + and (selection_y <= 0 or selection_y >= self.size.y) then + local lh = self:get_item_height() + if not center and selection_y >= self.size.y - lh then + selection_y = selection_y - self.size.y + lh + end + if center then + selection_y = selection_y - (self.size.y - lh) / 2 + end + local _, y = self:get_content_offset() + self.scroll.to.y = selection_y - y + self.scroll.to.y = common.clamp( + self.scroll.to.y, 0, self:get_scrollable_size() - self.size.y + ) + if instant then + self.scroll.y = self.scroll.to.y + end + end +end + +---Sets the selection to the file with the specified path. +---TODO: Not tested, idea is to allow query like selections using item names +---by introducing a get_item/set_item methods that accepts a string query, +---For the moment we leave this inherited TreeView function here. +---@param path string #Absolute path of item to select +---@param expand boolean #Expand dirs leading to the item +---@param scroll_to boolean #Scroll to make the item visible +---@param instant boolean #Don't animate the scroll +---@return table? #The selected item +function TreeList:set_selection_from_path(path, expand, scroll_to, instant) + local separator = "||" + local to_select, to_select_y + local let_it_finish, done + ::restart:: + for item, _,y,_,_ in self:each_item() do + if not done then + if item.childs and #item.childs > 0 then + local _, to = string.find(path, item.name..separator, 1, true) + if to and to == #item.name + #separator then + to_select, to_select_y = item, y + if expand and not item.expanded then + self:toggle_expand(true, item) + -- Because we altered the size of the TreeList + -- and because TreeList:get_scrollable_size uses self.count_lines + -- which gets updated only when TreeList:each_item finishes, + -- we can't stop here or we risk that the scroll + -- gets clamped by View:clamp_scroll_position. + let_it_finish = true + -- We need to restart the process because if TreeList:toggle_expand + -- altered the cache, TreeList:each_item risks looping indefinitely. + goto restart + end + end + else + if item.name == path then + to_select, to_select_y = item, y + done = true + if not let_it_finish then break end + end + end + end + end + if to_select then + self:set_selection(to_select, scroll_to and to_select_y, true, instant) + end + return to_select +end + +---Set the icon font used to render the items icon. +---@param font renderer.font +function TreeList:set_icon_font(font) + if font:get_size() ~= style.icon_font:get_size() then + font:set_size(style.icon_font:get_size()) + end + self.icon_font = font +end + +---Keep the icon font size updated to match current scale. +function TreeList:on_scale_change() + if self.icon_font then + self.icon_font:set_size(style.icon_font:get_size()) + end +end + +function TreeList:on_mouse_moved(px, py, ...) + if TreeList.super.on_mouse_moved(self, px, py, ...) then + self.hovered_item = nil + else + return false + end + + local position = self:get_position() + local item_changed, tooltip_changed + for item, x,y,w,h in self:each_item() do + if px > x and py > y and px <= (self.size.x + position.x) and py <= y + h then + item_changed = true + self.hovered_item = item + + x = math.max(x, self.position.x) + if px > x and py > y and px <= x + w and py <= y + h then + tooltip_changed = true + self.tooltip.x, self.tooltip.y = px, py + self.tooltip.begin = system.get_time() + end + break + end + end + if not item_changed then self.hovered_item = nil end + if not tooltip_changed then self.tooltip.x, self.tooltip.y = nil, nil end + + return true +end + +---Override to listen for item click events. +---@param item widget.treelist.item +---@param button string +---@param clicks integer +function TreeList:on_item_click(item, button, x, y, clicks) end + +function TreeList:on_mouse_pressed(button, x, y, clicks) + if TreeList.super.on_mouse_pressed(self, button, x, y, clicks) then + if self:scrollbar_hovering() then return true end + self:set_selection(self.hovered_item) + if self.hovered_item then + local emit_click = false + if clicks > 1 then + self:toggle_expand() + else + if self.hovered_item.childs then + local x1, x2 = self:get_chevron_position(self.hovered_item) + if x >= x1 and x <= x2 then + self:toggle_expand() + else + emit_click = true + end + else + emit_click = true + end + end + if emit_click then + self:on_item_click(self.hovered_item, button, x, y, clicks) + end + end + return true + end + return false +end + +function TreeList:on_mouse_left() + TreeList.super.on_mouse_left(self) + self.hovered_item = nil +end + +function TreeList:update() + if not self:is_visible() then return end + + local duration = system.get_time() - self.tooltip.begin + local tooltip_delay = 0.5 + if self.hovered_item and self.tooltip.x and duration > tooltip_delay then + self:move_towards(self.tooltip, "alpha", 255, 1, "treeview") + else + self.tooltip.alpha = 0 + end + + self.item_icon_width = style.icon_font:get_width("D") + self.item_text_spacing = style.icon_font:get_width("f") / 2 + + -- this will make sure hovered_item is updated + local dy = math.abs(self.last_scroll_y - self.scroll.y) + if dy > 0 then + self:on_mouse_moved(core.root_view.mouse.x, core.root_view.mouse.y, 0, 0) + self.last_scroll_y = self.scroll.y + end + + TreeList.super.update(self) +end + +function TreeList:get_scrollable_size() + return self.count_lines and self:get_item_height() * (self.count_lines + 1) or math.huge +end + +function TreeList:get_h_scrollable_size() + local _, _, v_scroll_w = self.v_scrollbar:get_thumb_rect() + return self.scroll_width + ( + self.size.x > self.scroll_width + v_scroll_w and 0 or style.padding.x + ) +end + +local function replace_alpha(color, alpha) + local r, g, b = table.unpack(color) + return { r, g, b, alpha } +end + +function TreeList:draw_tooltip() + if not self.hovered_item or not self.hovered_item.tooltip then + return + end + + local text = common.home_encode(self.hovered_item.tooltip) + local w, h = style.font:get_width(text), style.font:get_height() + + local tooltip_offset = style.font:get_height() + local x, y = self.tooltip.x + tooltip_offset, self.tooltip.y + tooltip_offset + w, h = w + style.padding.x, h + style.padding.y + + if x + w > core.root_view.root_node.size.x then -- check if we can span right + x = x - w -- span left instead + end + + local tooltip_border = 1 + local bx, by = x - tooltip_border, y - tooltip_border + local bw, bh = w + 2 * tooltip_border, h + 2 * tooltip_border + renderer.draw_rect( + bx, by, bw, bh, replace_alpha(style.text, self.tooltip.alpha) + ) + renderer.draw_rect( + x, y, w, h, replace_alpha(style.background2, self.tooltip.alpha) + ) + common.draw_text( + style.font, + replace_alpha(style.text, self.tooltip.alpha), + text, "center", x, y, w, h + ) +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +function TreeList:get_item_icon(item, active, hovered) + local character = item.icon + local font = self.icon_font or style.icon_font + local color = style.text + if active or hovered then + color = style.accent + end + return character, font, color +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +function TreeList:get_item_text(item, active, hovered) + local text = item.label + local font = style.font + local color = style.text + if active or hovered then + color = style.accent + end + return text, font, color +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +---@param x number +---@param y number +---@param w number +---@param h number +function TreeList:draw_item_text(item, active, hovered, x, y, w, h) + local item_text, item_font, item_color = self:get_item_text(item, active, hovered) + return common.draw_text(item_font, item_color, item_text, "left", x, y, 0, h) +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +---@param x number +---@param y number +---@param w number +---@param h number +function TreeList:draw_item_icon(item, active, hovered, x, y, w, h) + local icon_char, icon_font, icon_color = self:get_item_icon(item, active, hovered) + if not icon_char then return 0 end + common.draw_text(icon_font, icon_color, icon_char, "left", x, y, 0, h) + return self.item_icon_width + self.item_text_spacing +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +---@param x number +---@param y number +---@param w number +---@param h number +function TreeList:draw_item_body(item, active, hovered, x, y, w, h) + x = x + self:draw_item_icon(item, active, hovered, x, y, w, h) + return self:draw_item_text(item, active, hovered, x, y, w, h) +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +---@param x number +---@param y number +---@param w number +---@param h number +function TreeList:draw_item_chevron(item, active, hovered, x, y, w, h) + if item.childs and #item.childs > 0 then + local chevron_icon = item.expanded and "-" or "+" + local chevron_color = hovered and style.accent or style.text + common.draw_text(style.icon_font, chevron_color, chevron_icon, "left", x, y, 0, h) + end + return style.padding.x +end + +---Get an item chevron starting and ending positions. +---@return number x1 +---@return number x2 +function TreeList:get_chevron_position(item) + local ox = self:get_content_offset() + local x1 = ox + item.depth * style.padding.x + local x2 = x1 + style.padding.x * 2 + return x1, x2 +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +---@param x number +---@param y number +---@param w number +---@param h number +function TreeList:draw_item_background(item, active, hovered, x, y, w, h) + if hovered then + local hover_color = { table.unpack(style.line_highlight) } + hover_color[4] = 160 + renderer.draw_rect(self.position.x, y, self.size.x, h, hover_color) + elseif active then + renderer.draw_rect(self.position.x, y, self.size.x, h, style.line_highlight) + end +end + +---@param item widget.treelist.item +---@param active boolean +---@param hovered boolean +---@param x number +---@param y number +---@param w number +---@param h number +function TreeList:draw_item(item, active, hovered, x, y, w, h) + self:draw_item_background(item, active, hovered, x, y, w, h) + + x = x + item.depth * style.padding.x + style.padding.x + x = x + self:draw_item_chevron(item, active, hovered, x, y, w, h) + + return self:draw_item_body(item, active, hovered, x, y, w, h) +end + +function TreeList:draw() + if not TreeList.super.draw(self) then return end + + local position, ox = self:get_position(), self:get_content_offset() + local _y, _h, sw = position.y, self.size.y, 0 + for item, x,y,w,h in self:each_item() do + if y + h >= _y and y < _y + _h then + w = self:draw_item( + item, + item == self.selected_item, + item == self.hovered_item, + x, y, w, h + ) - position.x + (position.x - ox) + sw = math.max(w, sw) + end + end + self.scroll_width = sw + + self:draw_scrollbar() + + if + self.hovered_item and self.hovered_item.tooltip + and + self.tooltip.x and self.tooltip.alpha > 0 + then + core.root_view:defer_draw(self.draw_tooltip, self) + end +end + +---@param item? widget.treelist.item +---@param where integer +---@return widget.treelist.item item +---@return number x +---@return number y +---@return number w +---@return number h +function TreeList:get_item(item, where) + item = item or self.selected_item + + local last_item, last_x, last_y, last_w, last_h + local stop = false + + for it, x, y, w, h in self:each_item() do + if not item and where >= 0 then + return it, x, y, w, h + end + if item == it then + if where < 0 and last_item then + break + elseif where == 0 or (where < 0 and not last_item) then + return it, x, y, w, h + end + stop = true + elseif stop then + item = it + return it, x, y, w, h + end + last_item, last_x, last_y, last_w, last_h = it, x, y, w, h + end + return last_item, last_x, last_y, last_w, last_h +end + +---@param item? widget.treelist.item +---@return widget.treelist.item item +---@return number x +---@return number y +---@return number w +---@return number h +function TreeList:get_next(item) + return self:get_item(item, 1) +end + +---@param item? widget.treelist.item +---@return widget.treelist.item item +---@return number x +---@return number y +---@return number w +---@return number h +function TreeList:get_previous(item) + return self:get_item(item, -1) +end + +function TreeList:select_next() + self.selected_item = self:get_next() +end + +function TreeList:select_prev() + self.selected_item = self:get_previous() +end + +---Expand or collapse the currently selected or given item. +---@param toggle? boolean +---@param item? widget.treelist.item +function TreeList:toggle_expand(toggle, item) + item = item or self.selected_item + + if not item then return end + + if item.childs and #item.childs > 0 then + if type(toggle) == "boolean" then + item.expanded = toggle + else + item.expanded = not item.expanded + end + end +end + + +return TreeList diff --git a/debian/extra/plugins/fontconfig.lua b/debian/extra/plugins/fontconfig.lua new file mode 100644 index 0000000..03a2f95 --- /dev/null +++ b/debian/extra/plugins/fontconfig.lua @@ -0,0 +1,118 @@ +-- mod-version:3 +local subprocess = require "process" + +local core = require "core" +local style = require "core.style" +local config = require "core.config" +local common = require "core.common" + +config.plugins.fontconfig = common.merge({ prefix = "" }, config.plugins.fontconfig) + +--[[ + Example config (put it in user module): + + ``` + local fontconfig = require "plugins.fontconfig" + fontconfig.use { + font = { name = 'sans', size = 13 * SCALE }, + code_font = { name = 'monospace', size = 13 * SCALE }, + } + ``` + + if you want the fonts to load instantaneously on startup, + you can try your luck on fontconfig.use_blocking. I won't be responsible for + the slow startup time. +]] + +local function resolve_font(spec) + local scan_rate = 1 / config.fps + local proc = subprocess.start({ config.plugins.fontconfig.prefix .. "fc-match", "-s", "-f", "%{file}\n", spec }, { + stdin = subprocess.REDIRECT_DISCARD, + stdout = subprocess.REDIRECT_PIPE, + stderr = subprocess.REDIRECT_STDOUT + }) + local prev + local lines = {} + while true do + coroutine.yield(scan_rate) + local buf = proc:read_stdout() + if not buf then break end + + local last_line_start = 1 + for line, ln in string.gmatch(buf, "([^\n]-)\n()") do + last_line_start = ln + if prev then line = prev .. line end + table.insert(lines, line) + end + prev = last_line_start < #buf and string.sub(buf, last_line_start) + end + if prev then table.insert(lines, prev) end + + if proc:returncode() ~= 0 or #lines < 1 then + error(string.format("Cannot find a font matching the given specs: %q", spec), 0) + end + return lines[1] +end + + +local M = {} + +function M.load(font_name, font_size, font_opt) + local font_file = resolve_font(font_name) + return renderer.font.load(font_file, font_size, font_opt) +end + +function M.load_blocking(font_name, font_size, font_opt) + local co = coroutine.create(function() + return M.load(font_name, font_size, font_opt) + end) + local result + while coroutine.status(co) ~= "dead" do + local ok, err = coroutine.resume(co) + if not ok then error(err) end + result = err + end + return result +end + +function M.load_group_blocking(group, font_size, font_opt) + local fonts = {} + for i in ipairs(group) do + local co = coroutine.create(function() + return M.load(group[i], font_size, font_opt) + end) + local result + while coroutine.status(co) ~= "dead" do + local ok, err = coroutine.resume(co) + if not ok then error(err) end + result = err + end + table.insert(fonts, result) + end + + return renderer.font.group(fonts) +end + +function M.use(spec) + core.add_thread(function() + for key, value in pairs(spec) do + style[key] = M.load(value.name, value.size, value) + end + end) +end + +-- there is basically no need for this, but for the sake of completeness +-- I'll leave this here +function M.use_blocking(spec) + for key, value in pairs(spec) do + local font + if value.group then + font = M.load_group_blocking(value.group, value.size, value) + else + font = M.load_blocking(value.name, value.size, value) + end + style[key] = font + end +end + +return M diff --git a/debian/extra/plugins/gitopen.lua b/debian/extra/plugins/gitopen.lua new file mode 100644 index 0000000..4c5a2ac --- /dev/null +++ b/debian/extra/plugins/gitopen.lua @@ -0,0 +1,51 @@ +-- mod-version:3 +local core = require "core" +local command = require "core.command" +local common = require "core.common" +local config = require "core.config" + +local function exec(cmd) + local proc = process.start(cmd) + while proc:running() do + coroutine.yield(0.1) + end + if proc:returncode() > 0 then + core.error("ERROR - command: " .. table.concat(cmd, " ")) + end + return proc:read_stdout() or "" +end + +local function git_find_files_and_open(commit) + local git_root = exec({"git", "rev-parse", "--show-toplevel"}):match("^%s*(.-)%s*$") + local file_list_str = exec({"git", "show", "--name-only", "--pretty=format:", commit}) + + for str in string.gmatch(file_list_str, "([^\n]+)") do + -- Nomalize path as Git for Windows uses / as Unix based systems + local filename = common.normalize_path(git_root .. PATHSEP .. str) + + -- Only open files within the commit whose names do not match the configured ignore file patterns + if not common.match_pattern(common.basename(filename), config.ignore_files) then + core.root_view:open_doc(core.open_doc(filename)) + end + end +end + +-- works in any context +command.add(nil, { + ["gitopen:open-from-commit"] = function(dv) + core.command_view:enter("Which commit? (default=HEAD)", { + submit = function(commit) + if commit == nil or commit == "" then + commit = "HEAD" + end + -- open the files in the background, return immediately + core.add_thread( + function () + git_find_files_and_open(commit) + end + ) + end + }) + end, +}) + diff --git a/debian/extra/plugins/gitstatus.lua b/debian/extra/plugins/gitstatus.lua new file mode 100644 index 0000000..04f6b15 --- /dev/null +++ b/debian/extra/plugins/gitstatus.lua @@ -0,0 +1,155 @@ +-- mod-version:3 +local core = require "core" +local common = require "core.common" +local config = require "core.config" +local style = require "core.style" +local StatusView = require "core.statusview" +local TreeView = require "plugins.treeview" + +config.plugins.gitstatus = common.merge({ + color_icons = true, + recurse_submodules = true, + -- The config specification used by the settings gui + config_spec = { + name = "Git Status", + { + label = "Colorize icons", + description = "Colorize the icons as well", + path = "color_icons", + type = "toggle", + default = true + }, + { + label = "Recurse Submodules", + description = "Also retrieve git stats from submodules.", + path = "recurse_submodules", + type = "toggle", + default = true + } + } +}, config.plugins.gitstatus) + +style.gitstatus_addition = {common.color "#587c0c"} +style.gitstatus_modification = {common.color "#0c7d9d"} +style.gitstatus_deletion = {common.color "#94151b"} + +local scan_rate = config.project_scan_rate or 5 +local cached_color_for_item = {} + + +-- Override TreeView's get_item_text to add modification color +local treeview_get_item_text = TreeView.get_item_text +function TreeView:get_item_text(item, active, hovered) + local text, font, color = treeview_get_item_text(self, item, active, hovered) + if cached_color_for_item[item.abs_filename] then + color = cached_color_for_item[item.abs_filename] + end + return text, font, color +end + +-- Override TreeView's get_item_icon to add modification color +local treeview_get_item_icon = TreeView.get_item_icon +function TreeView:get_item_icon(item, active, hovered) + local character, font, color = treeview_get_item_icon(self, item, active, hovered) + if config.plugins.gitstatus and config.plugins.gitstatus.color_icons and cached_color_for_item[item.abs_filename] then + color = cached_color_for_item[item.abs_filename] + end + return character, font, color +end + +local git = { + branch = nil, + inserts = 0, + deletes = 0, +} + +local function exec(cmd) + local proc = process.start(cmd) + -- Don't use proc:wait() here - that will freeze the app. + -- Instead, rely on the fact that this is only called within + -- a coroutine, and yield for a fraction of a second, allowing + -- other stuff to happen while we wait for the process to complete. + while proc:running() do + coroutine.yield(0.1) + end + return proc:read_stdout() or "" +end + + +core.add_thread(function() + while true do + if system.get_file_info(".git") then + -- get branch name + git.branch = exec({"git", "rev-parse", "--abbrev-ref", "HEAD"}):match("[^\n]*") + + local inserts = 0 + local deletes = 0 + + -- get diff + local diff = exec({"git", "diff", "--numstat"}) + if + config.plugins.gitstatus.recurse_submodules + and + system.get_file_info(".gitmodules") + then + local diff2 = exec({"git", "submodule", "foreach", "git diff --numstat"}) + diff = diff .. diff2 + end + + -- forget the old state + cached_color_for_item = {} + + local folder = core.project_dir + for line in string.gmatch(diff, "[^\n]+") do + local submodule = line:match("^Entering '(.+)'$") + if submodule then + folder = core.project_dir .. PATHSEP .. submodule + else + local ins, dels, path = line:match("(%d+)%s+(%d+)%s+(.+)") + if path then + inserts = inserts + (tonumber(ins) or 0) + deletes = deletes + (tonumber(dels) or 0) + local abs_path = folder .. PATHSEP .. path + -- Color this file, and each parent folder, + -- so you can see at a glance which folders + -- have modified files in them. + while abs_path do + cached_color_for_item[abs_path] = style.gitstatus_modification + abs_path = common.dirname(abs_path) + end + end + end + end + + git.inserts = inserts + git.deletes = deletes + + else + git.branch = nil + end + + coroutine.yield(scan_rate) + end +end) + + +core.status_view:add_item({ + name = "status:git", + alignment = StatusView.Item.RIGHT, + get_item = function() + if not git.branch then + return {} + end + return { + (git.inserts ~= 0 or git.deletes ~= 0) and style.accent or style.text, + git.branch, + style.dim, " ", + git.inserts ~= 0 and style.accent or style.text, "+", git.inserts, + style.dim, " / ", + git.deletes ~= 0 and style.accent or style.text, "-", git.deletes, + } + end, + position = -1, + tooltip = "branch and changes", + separator = core.status_view.separator2 +}) diff --git a/debian/extra/plugins/language_R.lua b/debian/extra/plugins/language_R.lua new file mode 100644 index 0000000..afe3d1e --- /dev/null +++ b/debian/extra/plugins/language_R.lua @@ -0,0 +1,39 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add{ + name = "R", + files = {"%.r$", "%.rds$", "%.rda$", "%.rdata$", "%.R$"}, + comment = "#", + patterns = { + {pattern = {"#", "\n"}, type = "comment"}, + {pattern = {'"', '"'}, type = "string"}, + {pattern = {"'", "'"}, type = "string"}, + {pattern = "[%a_][%w_]*%f[(]", type = "function"}, + {pattern = "[%a_][%w_]*", type = "symbol"}, + {pattern = "[%+%-=/%*%^%%<>!|&]", type = "operator"}, + {pattern = "0x[%da-fA-F]+", type = "number"}, + {pattern = "-?%d+[%d%.eE]*", type = "number"}, + {pattern = "-?%.?%d+", type = "number"}, + }, + symbols = { + ["TRUE"] = "literal", + ["FALSE"] = "literal", + ["NA"] = "literal", + ["NULL"] = "literal", + ["Inf"] = "literal", + ["if"] = "keyword", + ["else"] = "keyword", + ["while"] = "keyword", + ["function"] = "keyword", + ["break"] = "keyword", + ["next"] = "keyword", + ["repeat"] = "keyword", + ["in"] = "keyword", + ["for"] = "keyword", + ["NA_integer"] = "keyword", + ["NA_complex"] = "keyword", + ["NA_character"] = "keyword", + ["NA_real"] = "keyword" + } +} diff --git a/debian/extra/plugins/language_angelscript.lua b/debian/extra/plugins/language_angelscript.lua new file mode 100644 index 0000000..4e003ea --- /dev/null +++ b/debian/extra/plugins/language_angelscript.lua @@ -0,0 +1,88 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "AngelScript", + files = { "%.as$", "%.asc$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { "#", "[^\\]\n" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0[xX]%x+", type = "number" }, + { pattern = "-?0[bB][0-1]+", type = "number" }, + { pattern = "-?0[oO][0-7]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "&inout", type = "keyword" }, + { pattern = "&in", type = "keyword" }, + { pattern = "&out", type = "keyword" }, + { pattern = "[%a_][%w_]*@", type = "keyword2" }, + { pattern = "[%-%+!~@%?:&|%^<>%*/=%%]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- Common + ["shared"] = "keyword", + ["external"] = "keyword", + ["private"] = "keyword", + ["protected"] = "keyword", + ["const"] = "keyword", + ["final"] = "keyword", + ["abstract"] = "keyword", + ["class"] = "keyword", + ["typedef"] = "keyword", + ["namespace"] = "keyword", + ["interface"] = "keyword", + ["import"] = "keyword", + ["enum"] = "keyword", + ["funcdef"] = "keyword", + ["get"] = "keyword", + ["set"] = "keyword", + ["mixin"] = "keyword", + ["void"] = "keyword2", + ["int"] = "keyword2", + ["int8"] = "keyword2", + ["int16"] = "keyword2", + ["int32"] = "keyword2", + ["int64"] = "keyword2", + ["uint"] = "keyword2", + ["uint8"] = "keyword2", + ["uint16"] = "keyword2", + ["uint32"] = "keyword2", + ["uint64"] = "keyword2", + ["float"] = "keyword2", + ["double"] = "keyword2", + ["bool"] = "keyword2", + ["auto"] = "keyword", + ["override"] = "keyword", + ["explicit"] = "keyword", + ["property"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["default"] = "keyword", + ["for"] = "keyword", + ["while"] = "keyword", + ["do"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["try"] = "keyword", + ["catch"] = "keyword", + ["cast"] = "keyword", + ["function"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["is"] = "operator", + ["and"] = "operator", + ["or"] = "operator", + ["xor"] = "operator", + }, +} + diff --git a/debian/extra/plugins/language_assembly_riscv.lua b/debian/extra/plugins/language_assembly_riscv.lua new file mode 100644 index 0000000..c3fa254 --- /dev/null +++ b/debian/extra/plugins/language_assembly_riscv.lua @@ -0,0 +1,538 @@ +-- mod-version:3 +-- Support for RISC-V assembly +-- Note: kinda conflicts with x86 asm, must uninstall it or use force-syntax plugin +-- https://github.com/cheyao +local syntax = require "core.syntax" + +syntax.add { + name = "RISC-V Assembly", + files = { "%.asm$", "%.[sS]$" }, + comment = "#", + patterns = { + { pattern = "#.*\n", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0[bB][0-1]+%W", type = "number" }, + { pattern = "0[xX]%x+", type = "number" }, + { pattern = "%%+[%a_][%w_]*", type = "function" }, + { pattern = "[%a%._][%w%._]*:%W", type = "function" }, + { pattern = "[^%p%a]%-?%d[%d%.]*", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&%$]", type = "operator" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "%.%a+", type = "normal" } + }, + symbols = { + -- Integer Registers + ["x0"] = "literal", + ["x1"] = "literal", + ["x2"] = "literal", + ["x3"] = "literal", + ["x4"] = "literal", + ["x5"] = "literal", + ["x6"] = "literal", + ["x7"] = "literal", + ["x8"] = "literal", + ["x9"] = "literal", + ["x10"] = "literal", + ["x11"] = "literal", + ["x12"] = "literal", + ["x13"] = "literal", + ["x14"] = "literal", + ["x15"] = "literal", + ["x16"] = "literal", + ["x17"] = "literal", + ["x18"] = "literal", + ["x19"] = "literal", + ["x20"] = "literal", + ["x21"] = "literal", + ["x22"] = "literal", + ["x23"] = "literal", + ["x24"] = "literal", + ["x25"] = "literal", + ["x26"] = "literal", + ["x27"] = "literal", + ["x28"] = "literal", + ["x29"] = "literal", + ["x30"] = "literal", + ["x31"] = "literal", + ["zero"] = "literal", + ["ra"] = "literal", + ["sp"] = "literal", + ["gp"] = "literal", + ["tp"] = "literal", + ["t0"] = "literal", + ["t1"] = "literal", + ["t2"] = "literal", + ["fp"] = "literal", + ["s0"] = "literal", + ["s1"] = "literal", + ["a0"] = "literal", + ["a1"] = "literal", + ["a2"] = "literal", + ["a3"] = "literal", + ["a4"] = "literal", + ["a5"] = "literal", + ["a6"] = "literal", + ["a7"] = "literal", + ["s2"] = "literal", + ["s3"] = "literal", + ["s4"] = "literal", + ["s5"] = "literal", + ["s6"] = "literal", + ["s7"] = "literal", + ["s8"] = "literal", + ["s9"] = "literal", + ["s10"] = "literal", + ["s11"] = "literal", + ["t3"] = "literal", + ["t4"] = "literal", + ["t5"] = "literal", + ["t6"] = "literal", + ["pc"] = "literal", + -- Floating-point Registers + ["f0"] = "literal", + ["f1"] = "literal", + ["f2"] = "literal", + ["f3"] = "literal", + ["f4"] = "literal", + ["f5"] = "literal", + ["f6"] = "literal", + ["f7"] = "literal", + ["f8"] = "literal", + ["f9"] = "literal", + ["f10"] = "literal", + ["f11"] = "literal", + ["f12"] = "literal", + ["f13"] = "literal", + ["f14"] = "literal", + ["f15"] = "literal", + ["f16"] = "literal", + ["f17"] = "literal", + ["f18"] = "literal", + ["f19"] = "literal", + ["f20"] = "literal", + ["f21"] = "literal", + ["f22"] = "literal", + ["f23"] = "literal", + ["f24"] = "literal", + ["f25"] = "literal", + ["f26"] = "literal", + ["f27"] = "literal", + ["f28"] = "literal", + ["f29"] = "literal", + ["f30"] = "literal", + ["f31"] = "literal", + + ["ft0"] = "literal", + ["ft1"] = "literal", + ["ft2"] = "literal", + ["ft3"] = "literal", + ["ft4"] = "literal", + ["ft5"] = "literal", + ["ft6"] = "literal", + ["ft7"] = "literal", + + ["fs0"] = "literal", + ["fs1"] = "literal", + + ["fa0"] = "literal", + ["fa1"] = "literal", + ["fa2"] = "literal", + ["fa3"] = "literal", + ["fa4"] = "literal", + ["fa5"] = "literal", + ["fa6"] = "literal", + ["fa7"] = "literal", + + ["fa2"] = "literal", + ["fa3"] = "literal", + ["fa4"] = "literal", + ["fa5"] = "literal", + ["fa6"] = "literal", + ["fa7"] = "literal", + ["fa8"] = "literal", + ["fa9"] = "literal", + ["fa10"] = "literal", + ["fa11"] = "literal", + + ["ft8"] = "literal", + ["ft9"] = "literal", + ["ft10"] = "literal", + ["ft11"] = "literal", + + -- Vector Registers + ["v0"] = "literal", + ["v1"] = "literal", + ["v2"] = "literal", + ["v3"] = "literal", + ["v4"] = "literal", + ["v5"] = "literal", + ["v6"] = "literal", + ["v7"] = "literal", + ["v8"] = "literal", + ["v9"] = "literal", + ["v10"] = "literal", + ["v11"] = "literal", + ["v12"] = "literal", + ["v13"] = "literal", + ["v14"] = "literal", + ["v15"] = "literal", + ["v16"] = "literal", + ["v17"] = "literal", + ["v18"] = "literal", + ["v19"] = "literal", + ["v20"] = "literal", + ["v21"] = "literal", + ["v22"] = "literal", + ["v23"] = "literal", + ["v24"] = "literal", + ["v25"] = "literal", + ["v26"] = "literal", + ["v27"] = "literal", + ["v28"] = "literal", + ["v29"] = "literal", + ["v30"] = "literal", + ["v31"] = "literal", + + ["vl"] = "literal", + ["vtype"] = "literal", + ["vzrm"] = "literal", + ["vxsat"] = "literal", + + -- RV32I instructions + ["lui"] = "keyword", + ["auipc"] = "keyword", + ["jal"] = "keyword", + ["jalr"] = "keyword", + ["beq"] = "keyword", + ["bne"] = "keyword", + ["blt"] = "keyword", + ["bge"] = "keyword", + ["bltu"] = "keyword", + ["bgeu"] = "keyword", + ["lb"] = "keyword", + ["lh"] = "keyword", + ["lw"] = "keyword", + ["lbu"] = "keyword", + ["lhu"] = "keyword", + ["sb"] = "keyword", + ["sh"] = "keyword", + ["sw"] = "keyword", + ["addi"] = "keyword", + ["slti"] = "keyword", + ["sltiu"] = "keyword", + ["xori"] = "keyword", + ["ori"] = "keyword", + ["andi"] = "keyword", + ["slli"] = "keyword", + ["srli"] = "keyword", + ["srai"] = "keyword", + ["add"] = "keyword", + ["sub"] = "keyword", + ["sll"] = "keyword", + ["slt"] = "keyword", + ["sltu"] = "keyword", + ["xor"] = "keyword", + ["srl"] = "keyword", + ["sra"] = "keyword", + ["or"] = "keyword", + ["and"] = "keyword", + ["fence"] = "keyword", + ["fence.tso"] = "keyword", + ["pause"] = "keyword", + ["ecall"] = "keyword", + ["ebreak"] = "keyword", + + -- RV64I instructions + ["lwu"] = "keyword", + ["ld"] = "keyword", + ["sd"] = "keyword", + ["slli"] = "keyword", + ["srli"] = "keyword", + ["srai"] = "keyword", + ["addiw"] = "keyword", + ["slliw"] = "keyword", + ["srliw"] = "keyword", + ["sraiw"] = "keyword", + ["addw"] = "keyword", + ["subw"] = "keyword", + ["sllw"] = "keyword", + ["srlw"] = "keyword", + ["sraw"] = "keyword", + + -- Zifencei instructions + ["fence.i"] = "keyword", + + -- Zicsr instructions + ["csrrw"] = "keyword", + ["csrrs"] = "keyword", + ["csrrc"] = "keyword", + ["csrrwi"] = "keyword", + ["csrrsi"] = "keyword", + ["csrrci"] = "keyword", + + -- RV32M instructions + ["mul"] = "keyword", + ["mulh"] = "keyword", + ["mulhsu"] = "keyword", + ["mulhu"] = "keyword", + ["div"] = "keyword", + ["divu"] = "keyword", + ["rem"] = "keyword", + ["remu"] = "keyword", + + -- RV64M instructions + ["mulw"] = "keyword", + ["divw"] = "keyword", + ["divuw"] = "keyword", + ["remw"] = "keyword", + ["remuw"] = "keyword", + + -- RV32A instructions + ["lr.w"] = "keyword", + ["sc.w"] = "keyword", + ["amoswap.w"] = "keyword", + ["amoadd.w"] = "keyword", + ["amoxor.w"] = "keyword", + ["amoand.w"] = "keyword", + ["amoor.w"] = "keyword", + ["amomin.w"] = "keyword", + ["amomax.w"] = "keyword", + ["amominu.w"] = "keyword", + ["amomaxu.w"] = "keyword", + + -- RV64A instructions + ["lr.d"] = "keyword", + ["sc.d"] = "keyword", + ["amoswap.d"] = "keyword", + ["amoadd.d"] = "keyword", + ["amoxor.d"] = "keyword", + ["amoand.d"] = "keyword", + ["amoor.d"] = "keyword", + ["amomin.d"] = "keyword", + ["amomax.d"] = "keyword", + ["amominu.d"] = "keyword", + ["amomaxu.d"] = "keyword", + + -- RV32F instructions + ["flw"] = "keyword", + ["fsw"] = "keyword", + ["fmadd.s"] = "keyword", + ["fmsub.s"] = "keyword", + ["fnmsub.s"] = "keyword", + ["fnmadd.s"] = "keyword", + ["fadd.s"] = "keyword", + ["fsub.s"] = "keyword", + ["fmul.s"] = "keyword", + ["fdiv.s"] = "keyword", + ["fsqrt.s"] = "keyword", + ["fsgnj.s"] = "keyword", + ["fsgnjn.s"] = "keyword", + ["fsgnjx.s"] = "keyword", + ["fmin.s"] = "keyword", + ["fmax.s"] = "keyword", + ["fcvt.w.s"] = "keyword", + ["fcvt.wu.s"] = "keyword", + ["fmv.x.w"] = "keyword", + ["feq.s"] = "keyword", + ["flt.s"] = "keyword", + ["fle.s"] = "keyword", + ["fclass.s"] = "keyword", + ["fcvt.s.w"] = "keyword", + ["fcvt.s.wu"] = "keyword", + ["fmv.w.x"] = "keyword", + + -- RV64F instructions + ["fcvt.l.s"] = "keyword", + ["fcvt.lu.s"] = "keyword", + ["fcvt.s.l"] = "keyword", + ["fcvt.s.lu"] = "keyword", + + -- RV32D instructions + ["fld"] = "keyword", + ["fsd"] = "keyword", + ["fmadd.d"] = "keyword", + ["fmsub.d"] = "keyword", + ["fnmsub.d"] = "keyword", + ["fnmadd.d"] = "keyword", + ["fadd.d"] = "keyword", + ["fsub.d"] = "keyword", + ["fmul.d"] = "keyword", + ["fdiv.d"] = "keyword", + ["fsqrt.d"] = "keyword", + ["fsgnj.d"] = "keyword", + ["fsgnjn.d"] = "keyword", + ["fsgnjx.d"] = "keyword", + ["fmin.d"] = "keyword", + ["fmax.d"] = "keyword", + ["fcvt.s.d"] = "keyword", + ["fcvt.d.s"] = "keyword", + ["feq.d"] = "keyword", + ["flt.d"] = "keyword", + ["fle.d"] = "keyword", + ["fclass.d"] = "keyword", + ["fcvt.w.d"] = "keyword", + ["fcvt.wu.d"] = "keyword", + ["fcvt.d.w"] = "keyword", + ["fcvt.d.wu"] = "keyword", + + -- RV64D instructions + ["fcvt.l.d"] = "keyword", + ["fcvt.lu.d"] = "keyword", + ["fmv.x.d"] = "keyword", + ["fcvt.d.l"] = "keyword", + ["fcvt.d.lu"] = "keyword", + ["fmv.d.x"] = "keyword", + + -- RV32Q instructions + ["flq"] = "keyword", + ["fsq"] = "keyword", + ["fmadd.q"] = "keyword", + ["fmsub.q"] = "keyword", + ["fnmsub.q"] = "keyword", + ["fnmadd.q"] = "keyword", + ["fadd.q"] = "keyword", + ["fsub.q"] = "keyword", + ["fmul.q"] = "keyword", + ["fdiv.q"] = "keyword", + ["fsqrt.q"] = "keyword", + ["fsgnj.q"] = "keyword", + ["fsgnjn.q"] = "keyword", + ["fsgnjx.q"] = "keyword", + ["fmin.q"] = "keyword", + ["fmax.q"] = "keyword", + ["fcvt.s.q"] = "keyword", + ["fcvt.q.s"] = "keyword", + ["fcvt.d.q"] = "keyword", + ["fcvt.q.d"] = "keyword", + ["feq.q"] = "keyword", + ["flt.q"] = "keyword", + ["fle.q"] = "keyword", + ["fclass.q"] = "keyword", + ["fcvt.w.q"] = "keyword", + ["fcvt.wu.q"] = "keyword", + ["fcvt.q.w"] = "keyword", + ["fcvt.q.wu"] = "keyword", + + -- RV64Q instructions + ["fcvt.l.q"] = "keyword", + ["fcvt.lu.q"] = "keyword", + ["fcvt.q.l"] = "keyword", + ["fcvt.q.lu"] = "keyword", + + -- RV32Zfh instructions + ["flh"] = "keyword", + ["fsh"] = "keyword", + ["fmadd.h"] = "keyword", + ["fmsub.h"] = "keyword", + ["fnmsub.h"] = "keyword", + ["fnmadd.h"] = "keyword", + ["fadd.h"] = "keyword", + ["fsub.h"] = "keyword", + ["fmul.h"] = "keyword", + ["fdiv.h"] = "keyword", + ["fsqrt.h"] = "keyword", + ["fsgnj.h"] = "keyword", + ["fsgnjn.h"] = "keyword", + ["fsgnjx.h"] = "keyword", + ["fmin.h"] = "keyword", + ["fmax.h"] = "keyword", + ["fcvt.s.h"] = "keyword", + ["fcvt.h.s"] = "keyword", + ["fcvt.d.h"] = "keyword", + ["fcvt.h.d"] = "keyword", + ["fcvt.q.h"] = "keyword", + ["fcvt.h.q"] = "keyword", + ["feq.h"] = "keyword", + ["flt.h"] = "keyword", + ["fle.h"] = "keyword", + ["fclass.h"] = "keyword", + ["fcvt.w.h"] = "keyword", + ["fcvt.wu.h"] = "keyword", + ["fmv.x.h"] = "keyword", + ["fcvt.h.w"] = "keyword", + ["fcvt.h.wu"] = "keyword", + ["fmv.h.x"] = "keyword", + + -- RV64Zfh instructions + ["fcvt.l.h"] = "keyword", + ["fcvt.lu.h"] = "keyword", + ["fcvt.h.l"] = "keyword", + ["fcvt.h.lu"] = "keyword", + + -- Pesudo-instructions + ["nop"] = "keyword", + ["li"] = "keyword", + ["mv"] = "keyword", + ["not"] = "keyword", + ["neg"] = "keyword", + ["negw"] = "keyword", + ["sext.w"] = "keyword", + ["seqz"] = "keyword", + ["snez"] = "keyword", + ["sltz"] = "keyword", + ["sgtz"] = "keyword", + ["fmv.s"] = "keyword", + ["fabs.s"] = "keyword", + ["fneg.s"] = "keyword", + ["fmv.d"] = "keyword", + ["fabs.d"] = "keyword", + ["fneg.d"] = "keyword", + ["beqz"] = "keyword", + ["bnez"] = "keyword", + ["blez"] = "keyword", + ["bgez"] = "keyword", + ["bltz"] = "keyword", + ["bgtz"] = "keyword", + ["bgt"] = "keyword", + ["ble"] = "keyword", + ["bgtu"] = "keyword", + ["bleu"] = "keyword", + ["j"] = "keyword", + ["jr"] = "keyword", + ["ret"] = "keyword", + ["call"] = "keyword", + ["tail"] = "keyword", + + -- Other + [".2byte"] = "keyword2", + [".4byte"] = "keyword2", + [".8byte"] = "keyword2", + [".half"] = "keyword2", + [".word"] = "keyword2", + [".dword"] = "keyword2", + [".byte"] = "keyword2", + [".dtpreldword"] = "keyword2", + [".dtprelword"] = "keyword2", + [".sleb128"] = "keyword2", + [".uleb128"] = "keyword2", + [".asciz"] = "keyword2", + [".string"] = "keyword2", + [".incbin"] = "keyword2", + [".zero"] = "keyword2", + + [".align"] = "keyword2", + [".balign"] = "keyword2", + [".p2align"] = "keyword2", + + [".globl"] = "keyword2", + [".local"] = "keyword2", + [".equ"] = "keyword2", + + [".text"] = "keyword2", + [".data"] = "keyword2", + [".rodata"] = "keyword2", + [".bss"] = "keyword2", + [".comm"] = "keyword2", + [".common"] = "keyword2", + [".section"] = "keyword2", + + [".option"] = "keyword2", + [".macro"] = "keyword2", + [".endm"] = "keyword2", + [".file"] = "keyword2", + [".ident"] = "keyword2", + [".size"] = "keyword2", + [".type"] = "keyword2", + }, +} diff --git a/debian/extra/plugins/language_assembly_x86.lua b/debian/extra/plugins/language_assembly_x86.lua new file mode 100644 index 0000000..e6d218b --- /dev/null +++ b/debian/extra/plugins/language_assembly_x86.lua @@ -0,0 +1,2215 @@ +-- mod-version:3 +-- Support for the intel syntax x86-64 assembly +-- Simply add it to lite-xl's plugins folder (located somewhere at home/.config/lite-xl/plugins) +-- https://github.com/DMClVG + +local syntax = require "core.syntax" + +syntax.add { + name = "x86 Assembly", + files = { "%.asm$", "%.[sS]$" }, + comment = ";", + patterns = { + { pattern = ";.-\n", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0[bB][0-1]+%W", type = "number" }, + { pattern = "[0-1]+[bB]%W", type = "number" }, + { pattern = "0[xX]%x+", type = "number" }, + { pattern = "%x+[hH]%W", type = "number" }, + { pattern = "%d+[%d%.eE]*f?", type = "number" }, + { pattern = "%.?%d+f?", type = "number" }, + { pattern = "%%+[%a_][%w_]*", type = "keyword" }, + { pattern = "[%+%-=/%*%^%%<>!~|&%$]", type = "operator" }, + { pattern = "[%a_][%w_]*:%W", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "%.%.%a+", type = "normal" } + }, + symbols = { + -- Registers + ["rax"] = "literal", + ["eax"] = "literal", + ["ax"] = "literal", + ["ah"] = "literal", + ["al"] = "literal", + ["rbx"] = "literal", + ["ebx"] = "literal", + ["bx"] = "literal", + ["bh"] = "literal", + ["bl"] = "literal", + ["rcx"] = "literal", + ["ecx"] = "literal", + ["cx"] = "literal", + ["ch"] = "literal", + ["cl"] = "literal", + ["rdx"] = "literal", + ["edx"] = "literal", + ["dx"] = "literal", + ["dh"] = "literal", + ["dl"] = "literal", + ["rbp"] = "literal", + ["ebp"] = "literal", + ["bp"] = "literal", + ["bpl"] = "literal", + ["rsi"] = "literal", + ["esi"] = "literal", + ["si"] = "literal", + ["sil"] = "literal", + ["rdi"] = "literal", + ["edi"] = "literal", + ["di"] = "literal", + ["dil"] = "literal", + ["rip"] = "literal", + ["eip"] = "literal", + ["ip"] = "literal", + ["rsp"] = "literal", + ["esp"] = "literal", + ["sp"] = "literal", + ["spl"] = "literal", + ["cs"] = "literal", + ["ds"] = "literal", + ["es"] = "literal", + ["fs"] = "literal", + ["gs"] = "literal", + ["ss"] = "literal", + ["cr0"] = "literal", + ["cr1"] = "literal", + ["cr2"] = "literal", + ["cr3"] = "literal", + ["cr4"] = "literal", + ["dr0"] = "literal", + ["dr1"] = "literal", + ["dr2"] = "literal", + ["dr3"] = "literal", + ["dr6"] = "literal", + ["dr7"] = "literal", + ["st"] = "literal", + ["st0"] = "literal", + ["st1"] = "literal", + ["st2"] = "literal", + ["st3"] = "literal", + ["st4"] = "literal", + ["st5"] = "literal", + ["st6"] = "literal", + ["st7"] = "literal", + ["mm0"] = "literal", + ["mm1"] = "literal", + ["mm2"] = "literal", + ["mm3"] = "literal", + ["mm4"] = "literal", + ["mm5"] = "literal", + ["mm6"] = "literal", + ["mm7"] = "literal", + ["xmm0"] = "literal", + ["xmm1"] = "literal", + ["xmm2"] = "literal", + ["xmm3"] = "literal", + ["xmm4"] = "literal", + ["xmm5"] = "literal", + ["xmm6"] = "literal", + ["xmm7"] = "literal", + ["xmm8"] = "literal", + ["xmm9"] = "literal", + ["xmm10"] = "literal", + ["xmm11"] = "literal", + ["xmm12"] = "literal", + ["xmm13"] = "literal", + ["xmm14"] = "literal", + ["xmm15"] = "literal", + ["xmm16"] = "literal", + ["xmm17"] = "literal", + ["xmm18"] = "literal", + ["xmm19"] = "literal", + ["xmm20"] = "literal", + ["xmm21"] = "literal", + ["xmm22"] = "literal", + ["xmm23"] = "literal", + ["xmm24"] = "literal", + ["xmm25"] = "literal", + ["xmm26"] = "literal", + ["xmm27"] = "literal", + ["xmm28"] = "literal", + ["xmm29"] = "literal", + ["xmm30"] = "literal", + ["xmm31"] = "literal", + ["ymm0"] = "literal", + ["ymm1"] = "literal", + ["ymm2"] = "literal", + ["ymm3"] = "literal", + ["ymm4"] = "literal", + ["ymm5"] = "literal", + ["ymm6"] = "literal", + ["ymm7"] = "literal", + ["ymm8"] = "literal", + ["ymm9"] = "literal", + ["ymm10"] = "literal", + ["ymm11"] = "literal", + ["ymm12"] = "literal", + ["ymm13"] = "literal", + ["ymm14"] = "literal", + ["ymm15"] = "literal", + ["ymm16"] = "literal", + ["ymm17"] = "literal", + ["ymm18"] = "literal", + ["ymm19"] = "literal", + ["ymm20"] = "literal", + ["ymm21"] = "literal", + ["ymm22"] = "literal", + ["ymm23"] = "literal", + ["ymm24"] = "literal", + ["ymm25"] = "literal", + ["ymm26"] = "literal", + ["ymm27"] = "literal", + ["ymm28"] = "literal", + ["ymm29"] = "literal", + ["ymm30"] = "literal", + ["ymm31"] = "literal", + ["zmm0"] = "literal", + ["zmm1"] = "literal", + ["zmm2"] = "literal", + ["zmm3"] = "literal", + ["zmm4"] = "literal", + ["zmm5"] = "literal", + ["zmm6"] = "literal", + ["zmm7"] = "literal", + ["zmm8"] = "literal", + ["zmm9"] = "literal", + ["zmm10"] = "literal", + ["zmm11"] = "literal", + ["zmm12"] = "literal", + ["zmm13"] = "literal", + ["zmm14"] = "literal", + ["zmm15"] = "literal", + ["zmm16"] = "literal", + ["zmm17"] = "literal", + ["zmm18"] = "literal", + ["zmm19"] = "literal", + ["zmm20"] = "literal", + ["zmm21"] = "literal", + ["zmm22"] = "literal", + ["zmm23"] = "literal", + ["zmm24"] = "literal", + ["zmm25"] = "literal", + ["zmm26"] = "literal", + ["zmm27"] = "literal", + ["zmm28"] = "literal", + ["zmm29"] = "literal", + ["zmm30"] = "literal", + ["zmm31"] = "literal", + ["r8"] = "literal", + ["r8d"] = "literal", + ["r8w"] = "literal", + ["r8b"] = "literal", + ["r9"] = "literal", + ["r9d"] = "literal", + ["r9w"] = "literal", + ["r9b"] = "literal", + ["r10"] = "literal", + ["r10d"] = "literal", + ["r10w"] = "literal", + ["r10b"] = "literal", + ["r11"] = "literal", + ["r11d"] = "literal", + ["r11w"] = "literal", + ["r11b"] = "literal", + ["r12"] = "literal", + ["r12d"] = "literal", + ["r12w"] = "literal", + ["r12b"] = "literal", + ["r13"] = "literal", + ["r13d"] = "literal", + ["r13w"] = "literal", + ["r13b"] = "literal", + ["r14"] = "literal", + ["r14d"] = "literal", + ["r14w"] = "literal", + ["r14b"] = "literal", + ["r15"] = "literal", + ["r15d"] = "literal", + ["r15w"] = "literal", + ["r15b"] = "literal", + + -- Instructions + ["aaa"] = "keyword", + ["aad"] = "keyword", + ["aam"] = "keyword", + ["aas"] = "keyword", + ["adc"] = "keyword", + ["adcx"] = "keyword", + ["add"] = "keyword", + ["addpd"] = "keyword", + ["addps"] = "keyword", + ["addsd"] = "keyword", + ["addss"] = "keyword", + ["addsubpd"] = "keyword", + ["addsubps"] = "keyword", + ["adox"] = "keyword", + ["aesdec"] = "keyword", + ["aesdeclast"] = "keyword", + ["aesenc"] = "keyword", + ["aesenclast"] = "keyword", + ["aesimc"] = "keyword", + ["aeskeygenassist"] = "keyword", + ["and"] = "keyword", + ["andn"] = "keyword", + ["andnpd"] = "keyword", + ["andnps"] = "keyword", + ["andpd"] = "keyword", + ["andps"] = "keyword", + ["arpl"] = "keyword", + ["bb0_reset"] = "keyword", + ["bb1_reset"] = "keyword", + ["bextr"] = "keyword", + ["blcfill"] = "keyword", + ["blci"] = "keyword", + ["blcic"] = "keyword", + ["blcmsk"] = "keyword", + ["blcs"] = "keyword", + ["blendpd"] = "keyword", + ["blendps"] = "keyword", + ["blendvpd"] = "keyword", + ["blendvps"] = "keyword", + ["blsfill"] = "keyword", + ["blsi"] = "keyword", + ["blsic"] = "keyword", + ["blsmsk"] = "keyword", + ["blsr"] = "keyword", + ["bndcl"] = "keyword", + ["bndcn"] = "keyword", + ["bndcu"] = "keyword", + ["bndldx"] = "keyword", + ["bndmk"] = "keyword", + ["bndmov"] = "keyword", + ["bndstx"] = "keyword", + ["bound"] = "keyword", + ["bsf"] = "keyword", + ["bsr"] = "keyword", + ["bswap"] = "keyword", + ["bt"] = "keyword", + ["btc"] = "keyword", + ["btr"] = "keyword", + ["bts"] = "keyword", + ["bzhi"] = "keyword", + ["call"] = "keyword", + ["cbw"] = "keyword", + ["cdq"] = "keyword", + ["cdqe"] = "keyword", + ["clac"] = "keyword", + ["clc"] = "keyword", + ["cld"] = "keyword", + ["clflush"] = "keyword", + ["clflushopt"] = "keyword", + ["clgi"] = "keyword", + ["cli"] = "keyword", + ["clts"] = "keyword", + ["clwb"] = "keyword", + ["clzero"] = "keyword", + ["cmc"] = "keyword", + ["cmova"] = "keyword", + ["cmovae"] = "keyword", + ["cmovb"] = "keyword", + ["cmovbe"] = "keyword", + ["cmovc"] = "keyword", + ["cmove"] = "keyword", + ["cmovg"] = "keyword", + ["cmovge"] = "keyword", + ["cmovl"] = "keyword", + ["cmovle"] = "keyword", + ["cmovna"] = "keyword", + ["cmovnae"] = "keyword", + ["cmovnb"] = "keyword", + ["cmovnbe"] = "keyword", + ["cmovnc"] = "keyword", + ["cmovne"] = "keyword", + ["cmovng"] = "keyword", + ["cmovnge"] = "keyword", + ["cmovnl"] = "keyword", + ["cmovnle"] = "keyword", + ["cmovno"] = "keyword", + ["cmovnp"] = "keyword", + ["cmovns"] = "keyword", + ["cmovnz"] = "keyword", + ["cmovo"] = "keyword", + ["cmovp"] = "keyword", + ["cmovpe"] = "keyword", + ["cmovpo"] = "keyword", + ["cmovs"] = "keyword", + ["cmovz"] = "keyword", + ["cmp"] = "keyword", + ["cmpeqpd"] = "keyword", + ["cmpeqps"] = "keyword", + ["cmpeqsd"] = "keyword", + ["cmpeqss"] = "keyword", + ["cmplepd"] = "keyword", + ["cmpleps"] = "keyword", + ["cmplesd"] = "keyword", + ["cmpless"] = "keyword", + ["cmpltpd"] = "keyword", + ["cmpltps"] = "keyword", + ["cmpltsd"] = "keyword", + ["cmpltss"] = "keyword", + ["cmpneqpd"] = "keyword", + ["cmpneqps"] = "keyword", + ["cmpneqsd"] = "keyword", + ["cmpneqss"] = "keyword", + ["cmpnlepd"] = "keyword", + ["cmpnleps"] = "keyword", + ["cmpnlesd"] = "keyword", + ["cmpnless"] = "keyword", + ["cmpnltpd"] = "keyword", + ["cmpnltps"] = "keyword", + ["cmpnltsd"] = "keyword", + ["cmpnltss"] = "keyword", + ["cmpordpd"] = "keyword", + ["cmpordps"] = "keyword", + ["cmpordsd"] = "keyword", + ["cmpordss"] = "keyword", + ["cmppd"] = "keyword", + ["cmpps"] = "keyword", + ["cmps"] = "keyword", + ["cmpsb"] = "keyword", + ["cmpsd"] = "keyword", + ["cmpsq"] = "keyword", + ["cmpss"] = "keyword", + ["cmpsw"] = "keyword", + ["cmpunordpd"] = "keyword", + ["cmpunordps"] = "keyword", + ["cmpunordsd"] = "keyword", + ["cmpunordss"] = "keyword", + ["cmpxchg"] = "keyword", + ["cmpxchg16b"] = "keyword", + ["cmpxchg486"] = "keyword", + ["cmpxchg8b"] = "keyword", + ["comisd"] = "keyword", + ["comiss"] = "keyword", + ["cpu_read"] = "keyword", + ["cpu_write"] = "keyword", + ["cpuid"] = "keyword", + ["cqo"] = "keyword", + ["crc32"] = "keyword", + ["cvtdq2pd"] = "keyword", + ["cvtdq2ps"] = "keyword", + ["cvtpd2dq"] = "keyword", + ["cvtpd2pi"] = "keyword", + ["cvtpd2ps"] = "keyword", + ["cvtpi2pd"] = "keyword", + ["cvtpi2ps"] = "keyword", + ["cvtps2dq"] = "keyword", + ["cvtps2pd"] = "keyword", + ["cvtps2pi"] = "keyword", + ["cvtsd2si"] = "keyword", + ["cvtsd2ss"] = "keyword", + ["cvtsi2sd"] = "keyword", + ["cvtsi2ss"] = "keyword", + ["cvtss2sd"] = "keyword", + ["cvtss2si"] = "keyword", + ["cvttpd2dq"] = "keyword", + ["cvttpd2pi"] = "keyword", + ["cvttps2dq"] = "keyword", + ["cvttps2pi"] = "keyword", + ["cvttsd2si"] = "keyword", + ["cvttss2si"] = "keyword", + ["cwd"] = "keyword", + ["cwde"] = "keyword", + ["daa"] = "keyword", + ["das"] = "keyword", + ["dec"] = "keyword", + ["div"] = "keyword", + ["divpd"] = "keyword", + ["divps"] = "keyword", + ["divsd"] = "keyword", + ["divss"] = "keyword", + ["dmint"] = "keyword", + ["dppd"] = "keyword", + ["dpps"] = "keyword", + ["emms"] = "keyword", + ["enter"] = "keyword", + ["extractps"] = "keyword", + ["extrq"] = "keyword", + ["f2xm1"] = "keyword", + ["fabs"] = "keyword", + ["fadd"] = "keyword", + ["faddp"] = "keyword", + ["fbld"] = "keyword", + ["fbstp"] = "keyword", + ["fchs"] = "keyword", + ["fclex"] = "keyword", + ["fcmovb"] = "keyword", + ["fcmovbe"] = "keyword", + ["fcmove"] = "keyword", + ["fcmovnb"] = "keyword", + ["fcmovnbe"] = "keyword", + ["fcmovne"] = "keyword", + ["fcmovnu"] = "keyword", + ["fcmovu"] = "keyword", + ["fcom"] = "keyword", + ["fcomi"] = "keyword", + ["fcomip"] = "keyword", + ["fcomp"] = "keyword", + ["fcompp"] = "keyword", + ["fcos"] = "keyword", + ["fdecstp"] = "keyword", + ["fdisi"] = "keyword", + ["fdiv"] = "keyword", + ["fdivp"] = "keyword", + ["fdivr"] = "keyword", + ["fdivrp"] = "keyword", + ["femms"] = "keyword", + ["feni"] = "keyword", + ["ffree"] = "keyword", + ["ffreep"] = "keyword", + ["fiadd"] = "keyword", + ["ficom"] = "keyword", + ["ficomp"] = "keyword", + ["fidiv"] = "keyword", + ["fidivr"] = "keyword", + ["fild"] = "keyword", + ["fimul"] = "keyword", + ["fincstp"] = "keyword", + ["finit"] = "keyword", + ["fist"] = "keyword", + ["fistp"] = "keyword", + ["fisttp"] = "keyword", + ["fisub"] = "keyword", + ["fisubr"] = "keyword", + ["fld"] = "keyword", + ["fld1"] = "keyword", + ["fldcw"] = "keyword", + ["fldenv"] = "keyword", + ["fldl2e"] = "keyword", + ["fldl2t"] = "keyword", + ["fldlg2"] = "keyword", + ["fldln2"] = "keyword", + ["fldpi"] = "keyword", + ["fldz"] = "keyword", + ["fmul"] = "keyword", + ["fmulp"] = "keyword", + ["fnclex"] = "keyword", + ["fndisi"] = "keyword", + ["fneni"] = "keyword", + ["fninit"] = "keyword", + ["fnop"] = "keyword", + ["fnsave"] = "keyword", + ["fnstcw"] = "keyword", + ["fnstenv"] = "keyword", + ["fnstsw"] = "keyword", + ["fnwait"] = "keyword", + ["fpatan"] = "keyword", + ["fprem"] = "keyword", + ["fprem1"] = "keyword", + ["fptan"] = "keyword", + ["frndint"] = "keyword", + ["frstor"] = "keyword", + ["fsave"] = "keyword", + ["fscale"] = "keyword", + ["fsetpm"] = "keyword", + ["fsin"] = "keyword", + ["fsincos"] = "keyword", + ["fsqrt"] = "keyword", + ["fst"] = "keyword", + ["fstcw"] = "keyword", + ["fstenv"] = "keyword", + ["fstp"] = "keyword", + ["fstsw"] = "keyword", + ["fsub"] = "keyword", + ["fsubp"] = "keyword", + ["fsubr"] = "keyword", + ["fsubrp"] = "keyword", + ["ftst"] = "keyword", + ["fucom"] = "keyword", + ["fucomi"] = "keyword", + ["fucomip"] = "keyword", + ["fucomp"] = "keyword", + ["fucompp"] = "keyword", + ["fwait"] = "keyword", + ["fxam"] = "keyword", + ["fxch"] = "keyword", + ["fxrstor"] = "keyword", + ["fxrstor64"] = "keyword", + ["fxsave"] = "keyword", + ["fxsave64"] = "keyword", + ["fxtract"] = "keyword", + ["fyl2x"] = "keyword", + ["fyl2xp1"] = "keyword", + ["getsec"] = "keyword", + ["haddpd"] = "keyword", + ["haddps"] = "keyword", + ["hint_nop0"] = "keyword", + ["hint_nop1"] = "keyword", + ["hint_nop10"] = "keyword", + ["hint_nop11"] = "keyword", + ["hint_nop12"] = "keyword", + ["hint_nop13"] = "keyword", + ["hint_nop14"] = "keyword", + ["hint_nop15"] = "keyword", + ["hint_nop16"] = "keyword", + ["hint_nop17"] = "keyword", + ["hint_nop18"] = "keyword", + ["hint_nop19"] = "keyword", + ["hint_nop2"] = "keyword", + ["hint_nop20"] = "keyword", + ["hint_nop21"] = "keyword", + ["hint_nop22"] = "keyword", + ["hint_nop23"] = "keyword", + ["hint_nop24"] = "keyword", + ["hint_nop25"] = "keyword", + ["hint_nop26"] = "keyword", + ["hint_nop27"] = "keyword", + ["hint_nop28"] = "keyword", + ["hint_nop29"] = "keyword", + ["hint_nop3"] = "keyword", + ["hint_nop30"] = "keyword", + ["hint_nop31"] = "keyword", + ["hint_nop32"] = "keyword", + ["hint_nop33"] = "keyword", + ["hint_nop34"] = "keyword", + ["hint_nop35"] = "keyword", + ["hint_nop36"] = "keyword", + ["hint_nop37"] = "keyword", + ["hint_nop38"] = "keyword", + ["hint_nop39"] = "keyword", + ["hint_nop4"] = "keyword", + ["hint_nop40"] = "keyword", + ["hint_nop41"] = "keyword", + ["hint_nop42"] = "keyword", + ["hint_nop43"] = "keyword", + ["hint_nop44"] = "keyword", + ["hint_nop45"] = "keyword", + ["hint_nop46"] = "keyword", + ["hint_nop47"] = "keyword", + ["hint_nop48"] = "keyword", + ["hint_nop49"] = "keyword", + ["hint_nop5"] = "keyword", + ["hint_nop50"] = "keyword", + ["hint_nop51"] = "keyword", + ["hint_nop52"] = "keyword", + ["hint_nop53"] = "keyword", + ["hint_nop54"] = "keyword", + ["hint_nop55"] = "keyword", + ["hint_nop56"] = "keyword", + ["hint_nop57"] = "keyword", + ["hint_nop58"] = "keyword", + ["hint_nop59"] = "keyword", + ["hint_nop6"] = "keyword", + ["hint_nop60"] = "keyword", + ["hint_nop61"] = "keyword", + ["hint_nop62"] = "keyword", + ["hint_nop63"] = "keyword", + ["hint_nop7"] = "keyword", + ["hint_nop8"] = "keyword", + ["hint_nop9"] = "keyword", + ["hlt"] = "keyword", + ["hsubpd"] = "keyword", + ["hsubps"] = "keyword", + ["ibts"] = "keyword", + ["icebp"] = "keyword", + ["idiv"] = "keyword", + ["imul"] = "keyword", + ["in"] = "keyword", + ["inc"] = "keyword", + ["ins"] = "keyword", + ["insb"] = "keyword", + ["insd"] = "keyword", + ["insertps"] = "keyword", + ["insertq"] = "keyword", + ["insw"] = "keyword", + ["int"] = "keyword", + ["int01"] = "keyword", + ["int03"] = "keyword", + ["int1"] = "keyword", + ["int3"] = "keyword", + ["into"] = "keyword", + ["invd"] = "keyword", + ["invept"] = "keyword", + ["invlpg"] = "keyword", + ["invlpga"] = "keyword", + ["invpcid"] = "keyword", + ["invvpid"] = "keyword", + ["iret"] = "keyword", + ["iretd"] = "keyword", + ["iretq"] = "keyword", + ["iretw"] = "keyword", + ["ja"] = "keyword", + ["jae"] = "keyword", + ["jb"] = "keyword", + ["jbe"] = "keyword", + ["jc"] = "keyword", + ["jcc"] = "keyword", + ["jcxz"] = "keyword", + ["je"] = "keyword", + ["jecxz"] = "keyword", + ["jg"] = "keyword", + ["jge"] = "keyword", + ["jl"] = "keyword", + ["jle"] = "keyword", + ["jmp"] = "keyword", + ["jmpe"] = "keyword", + ["jna"] = "keyword", + ["jnae"] = "keyword", + ["jnb"] = "keyword", + ["jnbe"] = "keyword", + ["jnc"] = "keyword", + ["jne"] = "keyword", + ["jng"] = "keyword", + ["jnge"] = "keyword", + ["jnl"] = "keyword", + ["jnle"] = "keyword", + ["jno"] = "keyword", + ["jnp"] = "keyword", + ["jns"] = "keyword", + ["jnz"] = "keyword", + ["jo"] = "keyword", + ["jp"] = "keyword", + ["jpe"] = "keyword", + ["jpo"] = "keyword", + ["jrcxz"] = "keyword", + ["js"] = "keyword", + ["jz"] = "keyword", + ["kaddb"] = "keyword", + ["kaddd"] = "keyword", + ["kaddq"] = "keyword", + ["kaddw"] = "keyword", + ["kandb"] = "keyword", + ["kandd"] = "keyword", + ["kandnb"] = "keyword", + ["kandnd"] = "keyword", + ["kandnq"] = "keyword", + ["kandnw"] = "keyword", + ["kandq"] = "keyword", + ["kandw"] = "keyword", + ["kmovb"] = "keyword", + ["kmovd"] = "keyword", + ["kmovq"] = "keyword", + ["kmovw"] = "keyword", + ["knotb"] = "keyword", + ["knotd"] = "keyword", + ["knotq"] = "keyword", + ["knotw"] = "keyword", + ["korb"] = "keyword", + ["kord"] = "keyword", + ["korq"] = "keyword", + ["kortestb"] = "keyword", + ["kortestd"] = "keyword", + ["kortestq"] = "keyword", + ["kortestw"] = "keyword", + ["korw"] = "keyword", + ["kshiftlb"] = "keyword", + ["kshiftld"] = "keyword", + ["kshiftlq"] = "keyword", + ["kshiftlw"] = "keyword", + ["kshiftrb"] = "keyword", + ["kshiftrd"] = "keyword", + ["kshiftrq"] = "keyword", + ["kshiftrw"] = "keyword", + ["ktestb"] = "keyword", + ["ktestd"] = "keyword", + ["ktestq"] = "keyword", + ["ktestw"] = "keyword", + ["kunpckbw"] = "keyword", + ["kunpckdq"] = "keyword", + ["kunpckwd"] = "keyword", + ["kxnorb"] = "keyword", + ["kxnord"] = "keyword", + ["kxnorq"] = "keyword", + ["kxnorw"] = "keyword", + ["kxorb"] = "keyword", + ["kxord"] = "keyword", + ["kxorq"] = "keyword", + ["kxorw"] = "keyword", + ["lahf"] = "keyword", + ["lar"] = "keyword", + ["lddqu"] = "keyword", + ["ldmxcsr"] = "keyword", + ["lds"] = "keyword", + ["lea"] = "keyword", + ["leave"] = "keyword", + ["les"] = "keyword", + ["lfence"] = "keyword", + ["lfs"] = "keyword", + ["lgdt"] = "keyword", + ["lgs"] = "keyword", + ["lidt"] = "keyword", + ["lldt"] = "keyword", + ["llwpcb"] = "keyword", + ["lmsw"] = "keyword", + ["loadall"] = "keyword", + ["loadall286"] = "keyword", + ["lock"] = "keyword", + ["lods"] = "keyword", + ["lodsb"] = "keyword", + ["lodsd"] = "keyword", + ["lodsq"] = "keyword", + ["lodsw"] = "keyword", + ["loop"] = "keyword", + ["loope"] = "keyword", + ["loopne"] = "keyword", + ["loopnz"] = "keyword", + ["loopz"] = "keyword", + ["lsl"] = "keyword", + ["lss"] = "keyword", + ["ltr"] = "keyword", + ["lwpins"] = "keyword", + ["lwpval"] = "keyword", + ["lzcnt"] = "keyword", + ["maskmovdqu"] = "keyword", + ["maskmovq"] = "keyword", + ["maxpd"] = "keyword", + ["maxps"] = "keyword", + ["maxsd"] = "keyword", + ["maxss"] = "keyword", + ["mfence"] = "keyword", + ["minpd"] = "keyword", + ["minps"] = "keyword", + ["minsd"] = "keyword", + ["minss"] = "keyword", + ["monitor"] = "keyword", + ["monitorx"] = "keyword", + ["montmul"] = "keyword", + ["mov"] = "keyword", + ["movapd"] = "keyword", + ["movaps"] = "keyword", + ["movbe"] = "keyword", + ["movd"] = "keyword", + ["movddup"] = "keyword", + ["movdq2q"] = "keyword", + ["movdqa"] = "keyword", + ["movdqu"] = "keyword", + ["movhlps"] = "keyword", + ["movhpd"] = "keyword", + ["movhps"] = "keyword", + ["movlhps"] = "keyword", + ["movlpd"] = "keyword", + ["movlps"] = "keyword", + ["movmskpd"] = "keyword", + ["movmskps"] = "keyword", + ["movntdq"] = "keyword", + ["movntdqa"] = "keyword", + ["movnti"] = "keyword", + ["movntpd"] = "keyword", + ["movntps"] = "keyword", + ["movntq"] = "keyword", + ["movntsd"] = "keyword", + ["movntss"] = "keyword", + ["movq"] = "keyword", + ["movq2dq"] = "keyword", + ["movs"] = "keyword", + ["movsb"] = "keyword", + ["movsd"] = "keyword", + ["movshdup"] = "keyword", + ["movsldup"] = "keyword", + ["movsq"] = "keyword", + ["movss"] = "keyword", + ["movsw"] = "keyword", + ["movsx"] = "keyword", + ["movsxd"] = "keyword", + ["movupd"] = "keyword", + ["movups"] = "keyword", + ["movzx"] = "keyword", + ["mpsadbw"] = "keyword", + ["mul"] = "keyword", + ["mulpd"] = "keyword", + ["mulps"] = "keyword", + ["mulsd"] = "keyword", + ["mulss"] = "keyword", + ["mulx"] = "keyword", + ["mwait"] = "keyword", + ["mwaitx"] = "keyword", + ["neg"] = "keyword", + ["nop"] = "keyword", + ["not"] = "keyword", + ["or"] = "keyword", + ["orpd"] = "keyword", + ["orps"] = "keyword", + ["out"] = "keyword", + ["outs"] = "keyword", + ["outsb"] = "keyword", + ["outsd"] = "keyword", + ["outsw"] = "keyword", + ["pabsb"] = "keyword", + ["pabsd"] = "keyword", + ["pabsw"] = "keyword", + ["packssdw"] = "keyword", + ["packsswb"] = "keyword", + ["packusdw"] = "keyword", + ["packuswb"] = "keyword", + ["paddb"] = "keyword", + ["paddd"] = "keyword", + ["paddq"] = "keyword", + ["paddsb"] = "keyword", + ["paddsiw"] = "keyword", + ["paddsw"] = "keyword", + ["paddusb"] = "keyword", + ["paddusw"] = "keyword", + ["paddw"] = "keyword", + ["palignr"] = "keyword", + ["pand"] = "keyword", + ["pandn"] = "keyword", + ["pause"] = "keyword", + ["paveb"] = "keyword", + ["pavgb"] = "keyword", + ["pavgusb"] = "keyword", + ["pavgw"] = "keyword", + ["pblendvb"] = "keyword", + ["pblendw"] = "keyword", + ["pclmulhqhqdq"] = "keyword", + ["pclmulhqlqdq"] = "keyword", + ["pclmullqhqdq"] = "keyword", + ["pclmullqlqdq"] = "keyword", + ["pclmulqdq"] = "keyword", + ["pcmpeqb"] = "keyword", + ["pcmpeqd"] = "keyword", + ["pcmpeqq"] = "keyword", + ["pcmpeqw"] = "keyword", + ["pcmpestri"] = "keyword", + ["pcmpestrm"] = "keyword", + ["pcmpgtb"] = "keyword", + ["pcmpgtd"] = "keyword", + ["pcmpgtq"] = "keyword", + ["pcmpgtw"] = "keyword", + ["pcmpistri"] = "keyword", + ["pcmpistrm"] = "keyword", + ["pcommit"] = "keyword", + ["pdep"] = "keyword", + ["pdistib"] = "keyword", + ["pext"] = "keyword", + ["pextrb"] = "keyword", + ["pextrd"] = "keyword", + ["pextrq"] = "keyword", + ["pextrw"] = "keyword", + ["pf2id"] = "keyword", + ["pf2iw"] = "keyword", + ["pfacc"] = "keyword", + ["pfadd"] = "keyword", + ["pfcmpeq"] = "keyword", + ["pfcmpge"] = "keyword", + ["pfcmpgt"] = "keyword", + ["pfmax"] = "keyword", + ["pfmin"] = "keyword", + ["pfmul"] = "keyword", + ["pfnacc"] = "keyword", + ["pfpnacc"] = "keyword", + ["pfrcp"] = "keyword", + ["pfrcpit1"] = "keyword", + ["pfrcpit2"] = "keyword", + ["pfrcpv"] = "keyword", + ["pfrsqit1"] = "keyword", + ["pfrsqrt"] = "keyword", + ["pfrsqrtv"] = "keyword", + ["pfsub"] = "keyword", + ["pfsubr"] = "keyword", + ["phaddd"] = "keyword", + ["phaddsw"] = "keyword", + ["phaddw"] = "keyword", + ["phminposuw"] = "keyword", + ["phsubd"] = "keyword", + ["phsubsw"] = "keyword", + ["phsubw"] = "keyword", + ["pi2fd"] = "keyword", + ["pi2fw"] = "keyword", + ["pinsrb"] = "keyword", + ["pinsrd"] = "keyword", + ["pinsrq"] = "keyword", + ["pinsrw"] = "keyword", + ["pmachriw"] = "keyword", + ["pmaddubsw"] = "keyword", + ["pmaddwd"] = "keyword", + ["pmagw"] = "keyword", + ["pmaxsb"] = "keyword", + ["pmaxsd"] = "keyword", + ["pmaxsw"] = "keyword", + ["pmaxub"] = "keyword", + ["pmaxud"] = "keyword", + ["pmaxuw"] = "keyword", + ["pminsb"] = "keyword", + ["pminsd"] = "keyword", + ["pminsw"] = "keyword", + ["pminub"] = "keyword", + ["pminud"] = "keyword", + ["pminuw"] = "keyword", + ["pmovmskb"] = "keyword", + ["pmovsxbd"] = "keyword", + ["pmovsxbq"] = "keyword", + ["pmovsxbw"] = "keyword", + ["pmovsxdq"] = "keyword", + ["pmovsxwd"] = "keyword", + ["pmovsxwq"] = "keyword", + ["pmovzxbd"] = "keyword", + ["pmovzxbq"] = "keyword", + ["pmovzxbw"] = "keyword", + ["pmovzxdq"] = "keyword", + ["pmovzxwd"] = "keyword", + ["pmovzxwq"] = "keyword", + ["pmuldq"] = "keyword", + ["pmulhriw"] = "keyword", + ["pmulhrsw"] = "keyword", + ["pmulhrw"] = "keyword", + ["pmulhrwa"] = "keyword", + ["pmulhrwc"] = "keyword", + ["pmulhuw"] = "keyword", + ["pmulhw"] = "keyword", + ["pmulld"] = "keyword", + ["pmullw"] = "keyword", + ["pmuludq"] = "keyword", + ["pmvgezb"] = "keyword", + ["pmvlzb"] = "keyword", + ["pmvnzb"] = "keyword", + ["pmvzb"] = "keyword", + ["pop"] = "keyword", + ["popa"] = "keyword", + ["popad"] = "keyword", + ["popaw"] = "keyword", + ["popcnt"] = "keyword", + ["popf"] = "keyword", + ["popfd"] = "keyword", + ["popfq"] = "keyword", + ["popfw"] = "keyword", + ["por"] = "keyword", + ["prefetch"] = "keyword", + ["prefetchnta"] = "keyword", + ["prefetcht0"] = "keyword", + ["prefetcht1"] = "keyword", + ["prefetcht2"] = "keyword", + ["prefetchw"] = "keyword", + ["prefetchwt1"] = "keyword", + ["psadbw"] = "keyword", + ["pshufb"] = "keyword", + ["pshufd"] = "keyword", + ["pshufhw"] = "keyword", + ["pshuflw"] = "keyword", + ["pshufw"] = "keyword", + ["psignb"] = "keyword", + ["psignd"] = "keyword", + ["psignw"] = "keyword", + ["pslld"] = "keyword", + ["pslldq"] = "keyword", + ["psllq"] = "keyword", + ["psllw"] = "keyword", + ["psrad"] = "keyword", + ["psraw"] = "keyword", + ["psrld"] = "keyword", + ["psrldq"] = "keyword", + ["psrlq"] = "keyword", + ["psrlw"] = "keyword", + ["psubb"] = "keyword", + ["psubd"] = "keyword", + ["psubq"] = "keyword", + ["psubsb"] = "keyword", + ["psubsiw"] = "keyword", + ["psubsw"] = "keyword", + ["psubusb"] = "keyword", + ["psubusw"] = "keyword", + ["psubw"] = "keyword", + ["pswapd"] = "keyword", + ["ptest"] = "keyword", + ["punpckhbw"] = "keyword", + ["punpckhdq"] = "keyword", + ["punpckhqdq"] = "keyword", + ["punpckhwd"] = "keyword", + ["punpcklbw"] = "keyword", + ["punpckldq"] = "keyword", + ["punpcklqdq"] = "keyword", + ["punpcklwd"] = "keyword", + ["push"] = "keyword", + ["pusha"] = "keyword", + ["pushad"] = "keyword", + ["pushaw"] = "keyword", + ["pushf"] = "keyword", + ["pushfd"] = "keyword", + ["pushfq"] = "keyword", + ["pushfw"] = "keyword", + ["pxor"] = "keyword", + ["rcl"] = "keyword", + ["rcpps"] = "keyword", + ["rcpss"] = "keyword", + ["rcr"] = "keyword", + ["rdfsbase"] = "keyword", + ["rdgsbase"] = "keyword", + ["rdm"] = "keyword", + ["rdmsr"] = "keyword", + ["rdpid"] = "keyword", + ["rdpkru"] = "keyword", + ["rdpmc"] = "keyword", + ["rdrand"] = "keyword", + ["rdseed"] = "keyword", + ["rdshr"] = "keyword", + ["rdtsc"] = "keyword", + ["rdtscp"] = "keyword", + ["rep"] = "keyword", + ["repe"] = "keyword", + ["repne"] = "keyword", + ["repnz"] = "keyword", + ["repz"] = "keyword", + ["ret"] = "keyword", + ["retf"] = "keyword", + ["retn"] = "keyword", + ["rol"] = "keyword", + ["ror"] = "keyword", + ["rorx"] = "keyword", + ["roundpd"] = "keyword", + ["roundps"] = "keyword", + ["roundsd"] = "keyword", + ["roundss"] = "keyword", + ["roxr"] = "keyword", + ["rsdc"] = "keyword", + ["rsldt"] = "keyword", + ["rsm"] = "keyword", + ["rsqrtps"] = "keyword", + ["rsqrtss"] = "keyword", + ["rsts"] = "keyword", + ["sahf"] = "keyword", + ["sal"] = "keyword", + ["salc"] = "keyword", + ["sar"] = "keyword", + ["sarx"] = "keyword", + ["sbb"] = "keyword", + ["scas"] = "keyword", + ["scasb"] = "keyword", + ["scasd"] = "keyword", + ["scasq"] = "keyword", + ["scasw"] = "keyword", + ["seta"] = "keyword", + ["setae"] = "keyword", + ["setb"] = "keyword", + ["setbe"] = "keyword", + ["setc"] = "keyword", + ["sete"] = "keyword", + ["setg"] = "keyword", + ["setge"] = "keyword", + ["setl"] = "keyword", + ["setle"] = "keyword", + ["setna"] = "keyword", + ["setnae"] = "keyword", + ["setnb"] = "keyword", + ["setnbe"] = "keyword", + ["setnc"] = "keyword", + ["setne"] = "keyword", + ["setng"] = "keyword", + ["setnge"] = "keyword", + ["setnl"] = "keyword", + ["setnle"] = "keyword", + ["setno"] = "keyword", + ["setnp"] = "keyword", + ["setns"] = "keyword", + ["setnz"] = "keyword", + ["seto"] = "keyword", + ["setp"] = "keyword", + ["setpe"] = "keyword", + ["setpo"] = "keyword", + ["sets"] = "keyword", + ["setz"] = "keyword", + ["sfence"] = "keyword", + ["sgdt"] = "keyword", + ["shl"] = "keyword", + ["shld"] = "keyword", + ["shlx"] = "keyword", + ["shr"] = "keyword", + ["shrd"] = "keyword", + ["shrx"] = "keyword", + ["shufpd"] = "keyword", + ["shufps"] = "keyword", + ["sidt"] = "keyword", + ["skinit"] = "keyword", + ["sldt"] = "keyword", + ["slwpcb"] = "keyword", + ["smi"] = "keyword", + ["smint"] = "keyword", + ["smintold"] = "keyword", + ["smsw"] = "keyword", + ["sqrtpd"] = "keyword", + ["sqrtps"] = "keyword", + ["sqrtsd"] = "keyword", + ["sqrtss"] = "keyword", + ["stac"] = "keyword", + ["stc"] = "keyword", + ["std"] = "keyword", + ["stgi"] = "keyword", + ["sti"] = "keyword", + ["stmxcsr"] = "keyword", + ["stos"] = "keyword", + ["stosb"] = "keyword", + ["stosd"] = "keyword", + ["stosq"] = "keyword", + ["stosw"] = "keyword", + ["str"] = "keyword", + ["sub"] = "keyword", + ["subpd"] = "keyword", + ["subps"] = "keyword", + ["subsd"] = "keyword", + ["subss"] = "keyword", + ["svdc"] = "keyword", + ["svldt"] = "keyword", + ["svts"] = "keyword", + ["swapgs"] = "keyword", + ["syscall"] = "keyword", + ["sysenter"] = "keyword", + ["sysexit"] = "keyword", + ["sysret"] = "keyword", + ["t1mskc"] = "keyword", + ["test"] = "keyword", + ["tzcnt"] = "keyword", + ["tzmsk"] = "keyword", + ["ucomisd"] = "keyword", + ["ucomiss"] = "keyword", + ["ud0"] = "keyword", + ["ud1"] = "keyword", + ["ud2"] = "keyword", + ["ud2a"] = "keyword", + ["ud2b"] = "keyword", + ["umov"] = "keyword", + ["unpckhpd"] = "keyword", + ["unpckhps"] = "keyword", + ["unpcklpd"] = "keyword", + ["unpcklps"] = "keyword", + ["vaddpd"] = "keyword", + ["vaddps"] = "keyword", + ["vaddsd"] = "keyword", + ["vaddss"] = "keyword", + ["vaddsubpd"] = "keyword", + ["vaddsubps"] = "keyword", + ["vaesdec"] = "keyword", + ["vaesdeclast"] = "keyword", + ["vaesenc"] = "keyword", + ["vaesenclast"] = "keyword", + ["vaesimc"] = "keyword", + ["vaeskeygenassist"] = "keyword", + ["valignd"] = "keyword", + ["valignq"] = "keyword", + ["vandnpd"] = "keyword", + ["vandnps"] = "keyword", + ["vandpd"] = "keyword", + ["vandps"] = "keyword", + ["vblendmpd"] = "keyword", + ["vblendmps"] = "keyword", + ["vblendpd"] = "keyword", + ["vblendps"] = "keyword", + ["vblendvpd"] = "keyword", + ["vblendvps"] = "keyword", + ["vbroadcastb"] = "keyword", + ["vbroadcastd"] = "keyword", + ["vbroadcastf128"] = "keyword", + ["vbroadcastf32x2"] = "keyword", + ["vbroadcastf32x4"] = "keyword", + ["vbroadcastf32x8"] = "keyword", + ["vbroadcastf64x2"] = "keyword", + ["vbroadcastf64x4"] = "keyword", + ["vbroadcasti128"] = "keyword", + ["vbroadcasti32x2"] = "keyword", + ["vbroadcasti32x4"] = "keyword", + ["vbroadcasti32x8"] = "keyword", + ["vbroadcasti64x2"] = "keyword", + ["vbroadcasti64x4"] = "keyword", + ["vbroadcastq"] = "keyword", + ["vbroadcastsd"] = "keyword", + ["vbroadcastss"] = "keyword", + ["vbroadcastw"] = "keyword", + ["vcmpeq_ospd"] = "keyword", + ["vcmpeq_osps"] = "keyword", + ["vcmpeq_ossd"] = "keyword", + ["vcmpeq_osss"] = "keyword", + ["vcmpeq_uqpd"] = "keyword", + ["vcmpeq_uqps"] = "keyword", + ["vcmpeq_uqsd"] = "keyword", + ["vcmpeq_uqss"] = "keyword", + ["vcmpeq_uspd"] = "keyword", + ["vcmpeq_usps"] = "keyword", + ["vcmpeq_ussd"] = "keyword", + ["vcmpeq_usss"] = "keyword", + ["vcmpeqpd"] = "keyword", + ["vcmpeqps"] = "keyword", + ["vcmpeqsd"] = "keyword", + ["vcmpeqss"] = "keyword", + ["vcmpfalse_oqpd"] = "keyword", + ["vcmpfalse_oqps"] = "keyword", + ["vcmpfalse_oqsd"] = "keyword", + ["vcmpfalse_oqss"] = "keyword", + ["vcmpfalse_ospd"] = "keyword", + ["vcmpfalse_osps"] = "keyword", + ["vcmpfalse_ossd"] = "keyword", + ["vcmpfalse_osss"] = "keyword", + ["vcmpfalsepd"] = "keyword", + ["vcmpfalseps"] = "keyword", + ["vcmpfalsesd"] = "keyword", + ["vcmpfalsess"] = "keyword", + ["vcmpge_oqpd"] = "keyword", + ["vcmpge_oqps"] = "keyword", + ["vcmpge_oqsd"] = "keyword", + ["vcmpge_oqss"] = "keyword", + ["vcmpge_ospd"] = "keyword", + ["vcmpge_osps"] = "keyword", + ["vcmpge_ossd"] = "keyword", + ["vcmpge_osss"] = "keyword", + ["vcmpgepd"] = "keyword", + ["vcmpgeps"] = "keyword", + ["vcmpgesd"] = "keyword", + ["vcmpgess"] = "keyword", + ["vcmpgt_oqpd"] = "keyword", + ["vcmpgt_oqps"] = "keyword", + ["vcmpgt_oqsd"] = "keyword", + ["vcmpgt_oqss"] = "keyword", + ["vcmpgt_ospd"] = "keyword", + ["vcmpgt_osps"] = "keyword", + ["vcmpgt_ossd"] = "keyword", + ["vcmpgt_osss"] = "keyword", + ["vcmpgtpd"] = "keyword", + ["vcmpgtps"] = "keyword", + ["vcmpgtsd"] = "keyword", + ["vcmpgtss"] = "keyword", + ["vcmple_oqpd"] = "keyword", + ["vcmple_oqps"] = "keyword", + ["vcmple_oqsd"] = "keyword", + ["vcmple_oqss"] = "keyword", + ["vcmple_ospd"] = "keyword", + ["vcmple_osps"] = "keyword", + ["vcmple_ossd"] = "keyword", + ["vcmple_osss"] = "keyword", + ["vcmplepd"] = "keyword", + ["vcmpleps"] = "keyword", + ["vcmplesd"] = "keyword", + ["vcmpless"] = "keyword", + ["vcmplt_oqpd"] = "keyword", + ["vcmplt_oqps"] = "keyword", + ["vcmplt_oqsd"] = "keyword", + ["vcmplt_oqss"] = "keyword", + ["vcmplt_ospd"] = "keyword", + ["vcmplt_osps"] = "keyword", + ["vcmplt_ossd"] = "keyword", + ["vcmplt_osss"] = "keyword", + ["vcmpltpd"] = "keyword", + ["vcmpltps"] = "keyword", + ["vcmpltsd"] = "keyword", + ["vcmpltss"] = "keyword", + ["vcmpneq_oqpd"] = "keyword", + ["vcmpneq_oqps"] = "keyword", + ["vcmpneq_oqsd"] = "keyword", + ["vcmpneq_oqss"] = "keyword", + ["vcmpneq_ospd"] = "keyword", + ["vcmpneq_osps"] = "keyword", + ["vcmpneq_ossd"] = "keyword", + ["vcmpneq_osss"] = "keyword", + ["vcmpneq_uqpd"] = "keyword", + ["vcmpneq_uqps"] = "keyword", + ["vcmpneq_uqsd"] = "keyword", + ["vcmpneq_uqss"] = "keyword", + ["vcmpneq_uspd"] = "keyword", + ["vcmpneq_usps"] = "keyword", + ["vcmpneq_ussd"] = "keyword", + ["vcmpneq_usss"] = "keyword", + ["vcmpneqpd"] = "keyword", + ["vcmpneqps"] = "keyword", + ["vcmpneqsd"] = "keyword", + ["vcmpneqss"] = "keyword", + ["vcmpnge_uqpd"] = "keyword", + ["vcmpnge_uqps"] = "keyword", + ["vcmpnge_uqsd"] = "keyword", + ["vcmpnge_uqss"] = "keyword", + ["vcmpnge_uspd"] = "keyword", + ["vcmpnge_usps"] = "keyword", + ["vcmpnge_ussd"] = "keyword", + ["vcmpnge_usss"] = "keyword", + ["vcmpngepd"] = "keyword", + ["vcmpngeps"] = "keyword", + ["vcmpngesd"] = "keyword", + ["vcmpngess"] = "keyword", + ["vcmpngt_uqpd"] = "keyword", + ["vcmpngt_uqps"] = "keyword", + ["vcmpngt_uqsd"] = "keyword", + ["vcmpngt_uqss"] = "keyword", + ["vcmpngt_uspd"] = "keyword", + ["vcmpngt_usps"] = "keyword", + ["vcmpngt_ussd"] = "keyword", + ["vcmpngt_usss"] = "keyword", + ["vcmpngtpd"] = "keyword", + ["vcmpngtps"] = "keyword", + ["vcmpngtsd"] = "keyword", + ["vcmpngtss"] = "keyword", + ["vcmpnle_uqpd"] = "keyword", + ["vcmpnle_uqps"] = "keyword", + ["vcmpnle_uqsd"] = "keyword", + ["vcmpnle_uqss"] = "keyword", + ["vcmpnle_uspd"] = "keyword", + ["vcmpnle_usps"] = "keyword", + ["vcmpnle_ussd"] = "keyword", + ["vcmpnle_usss"] = "keyword", + ["vcmpnlepd"] = "keyword", + ["vcmpnleps"] = "keyword", + ["vcmpnlesd"] = "keyword", + ["vcmpnless"] = "keyword", + ["vcmpnlt_uqpd"] = "keyword", + ["vcmpnlt_uqps"] = "keyword", + ["vcmpnlt_uqsd"] = "keyword", + ["vcmpnlt_uqss"] = "keyword", + ["vcmpnlt_uspd"] = "keyword", + ["vcmpnlt_usps"] = "keyword", + ["vcmpnlt_ussd"] = "keyword", + ["vcmpnlt_usss"] = "keyword", + ["vcmpnltpd"] = "keyword", + ["vcmpnltps"] = "keyword", + ["vcmpnltsd"] = "keyword", + ["vcmpnltss"] = "keyword", + ["vcmpord_qpd"] = "keyword", + ["vcmpord_qps"] = "keyword", + ["vcmpord_qsd"] = "keyword", + ["vcmpord_qss"] = "keyword", + ["vcmpord_spd"] = "keyword", + ["vcmpord_sps"] = "keyword", + ["vcmpord_ssd"] = "keyword", + ["vcmpord_sss"] = "keyword", + ["vcmpordpd"] = "keyword", + ["vcmpordps"] = "keyword", + ["vcmpordsd"] = "keyword", + ["vcmpordss"] = "keyword", + ["vcmppd"] = "keyword", + ["vcmpps"] = "keyword", + ["vcmpsd"] = "keyword", + ["vcmpss"] = "keyword", + ["vcmptrue_uqpd"] = "keyword", + ["vcmptrue_uqps"] = "keyword", + ["vcmptrue_uqsd"] = "keyword", + ["vcmptrue_uqss"] = "keyword", + ["vcmptrue_uspd"] = "keyword", + ["vcmptrue_usps"] = "keyword", + ["vcmptrue_ussd"] = "keyword", + ["vcmptrue_usss"] = "keyword", + ["vcmptruepd"] = "keyword", + ["vcmptrueps"] = "keyword", + ["vcmptruesd"] = "keyword", + ["vcmptruess"] = "keyword", + ["vcmpunord_qpd"] = "keyword", + ["vcmpunord_qps"] = "keyword", + ["vcmpunord_qsd"] = "keyword", + ["vcmpunord_qss"] = "keyword", + ["vcmpunord_spd"] = "keyword", + ["vcmpunord_sps"] = "keyword", + ["vcmpunord_ssd"] = "keyword", + ["vcmpunord_sss"] = "keyword", + ["vcmpunordpd"] = "keyword", + ["vcmpunordps"] = "keyword", + ["vcmpunordsd"] = "keyword", + ["vcmpunordss"] = "keyword", + ["vcomisd"] = "keyword", + ["vcomiss"] = "keyword", + ["vcompresspd"] = "keyword", + ["vcompressps"] = "keyword", + ["vcvtdq2pd"] = "keyword", + ["vcvtdq2ps"] = "keyword", + ["vcvtpd2dq"] = "keyword", + ["vcvtpd2ps"] = "keyword", + ["vcvtpd2qq"] = "keyword", + ["vcvtpd2udq"] = "keyword", + ["vcvtpd2uqq"] = "keyword", + ["vcvtph2ps"] = "keyword", + ["vcvtps2dq"] = "keyword", + ["vcvtps2pd"] = "keyword", + ["vcvtps2ph"] = "keyword", + ["vcvtps2qq"] = "keyword", + ["vcvtps2udq"] = "keyword", + ["vcvtps2uqq"] = "keyword", + ["vcvtqq2pd"] = "keyword", + ["vcvtqq2ps"] = "keyword", + ["vcvtsd2si"] = "keyword", + ["vcvtsd2ss"] = "keyword", + ["vcvtsd2usi"] = "keyword", + ["vcvtsi2sd"] = "keyword", + ["vcvtsi2ss"] = "keyword", + ["vcvtss2sd"] = "keyword", + ["vcvtss2si"] = "keyword", + ["vcvtss2usi"] = "keyword", + ["vcvttpd2dq"] = "keyword", + ["vcvttpd2qq"] = "keyword", + ["vcvttpd2udq"] = "keyword", + ["vcvttpd2uqq"] = "keyword", + ["vcvttps2dq"] = "keyword", + ["vcvttps2qq"] = "keyword", + ["vcvttps2udq"] = "keyword", + ["vcvttps2uqq"] = "keyword", + ["vcvttsd2si"] = "keyword", + ["vcvttsd2usi"] = "keyword", + ["vcvttss2si"] = "keyword", + ["vcvttss2usi"] = "keyword", + ["vcvtudq2pd"] = "keyword", + ["vcvtudq2ps"] = "keyword", + ["vcvtuqq2pd"] = "keyword", + ["vcvtuqq2ps"] = "keyword", + ["vcvtusi2sd"] = "keyword", + ["vcvtusi2ss"] = "keyword", + ["vdbpsadbw"] = "keyword", + ["vdivpd"] = "keyword", + ["vdivps"] = "keyword", + ["vdivsd"] = "keyword", + ["vdivss"] = "keyword", + ["vdppd"] = "keyword", + ["vdpps"] = "keyword", + ["verr"] = "keyword", + ["verw"] = "keyword", + ["vexp2pd"] = "keyword", + ["vexp2ps"] = "keyword", + ["vexpandpd"] = "keyword", + ["vexpandps"] = "keyword", + ["vextractf128"] = "keyword", + ["vextractf32x4"] = "keyword", + ["vextractf32x8"] = "keyword", + ["vextractf64x2"] = "keyword", + ["vextractf64x4"] = "keyword", + ["vextracti128"] = "keyword", + ["vextracti32x4"] = "keyword", + ["vextracti32x8"] = "keyword", + ["vextracti64x2"] = "keyword", + ["vextracti64x4"] = "keyword", + ["vextractps"] = "keyword", + ["vfixupimmpd"] = "keyword", + ["vfixupimmps"] = "keyword", + ["vfixupimmsd"] = "keyword", + ["vfixupimmss"] = "keyword", + ["vfmadd123pd"] = "keyword", + ["vfmadd123ps"] = "keyword", + ["vfmadd123sd"] = "keyword", + ["vfmadd123ss"] = "keyword", + ["vfmadd132pd"] = "keyword", + ["vfmadd132ps"] = "keyword", + ["vfmadd132sd"] = "keyword", + ["vfmadd132ss"] = "keyword", + ["vfmadd213pd"] = "keyword", + ["vfmadd213ps"] = "keyword", + ["vfmadd213sd"] = "keyword", + ["vfmadd213ss"] = "keyword", + ["vfmadd231pd"] = "keyword", + ["vfmadd231ps"] = "keyword", + ["vfmadd231sd"] = "keyword", + ["vfmadd231ss"] = "keyword", + ["vfmadd312pd"] = "keyword", + ["vfmadd312ps"] = "keyword", + ["vfmadd312sd"] = "keyword", + ["vfmadd312ss"] = "keyword", + ["vfmadd321pd"] = "keyword", + ["vfmadd321ps"] = "keyword", + ["vfmadd321sd"] = "keyword", + ["vfmadd321ss"] = "keyword", + ["vfmaddpd"] = "keyword", + ["vfmaddps"] = "keyword", + ["vfmaddsd"] = "keyword", + ["vfmaddss"] = "keyword", + ["vfmaddsub123pd"] = "keyword", + ["vfmaddsub123ps"] = "keyword", + ["vfmaddsub132pd"] = "keyword", + ["vfmaddsub132ps"] = "keyword", + ["vfmaddsub213pd"] = "keyword", + ["vfmaddsub213ps"] = "keyword", + ["vfmaddsub231pd"] = "keyword", + ["vfmaddsub231ps"] = "keyword", + ["vfmaddsub312pd"] = "keyword", + ["vfmaddsub312ps"] = "keyword", + ["vfmaddsub321pd"] = "keyword", + ["vfmaddsub321ps"] = "keyword", + ["vfmaddsubpd"] = "keyword", + ["vfmaddsubps"] = "keyword", + ["vfmsub123pd"] = "keyword", + ["vfmsub123ps"] = "keyword", + ["vfmsub123sd"] = "keyword", + ["vfmsub123ss"] = "keyword", + ["vfmsub132pd"] = "keyword", + ["vfmsub132ps"] = "keyword", + ["vfmsub132sd"] = "keyword", + ["vfmsub132ss"] = "keyword", + ["vfmsub213pd"] = "keyword", + ["vfmsub213ps"] = "keyword", + ["vfmsub213sd"] = "keyword", + ["vfmsub213ss"] = "keyword", + ["vfmsub231pd"] = "keyword", + ["vfmsub231ps"] = "keyword", + ["vfmsub231sd"] = "keyword", + ["vfmsub231ss"] = "keyword", + ["vfmsub312pd"] = "keyword", + ["vfmsub312ps"] = "keyword", + ["vfmsub312sd"] = "keyword", + ["vfmsub312ss"] = "keyword", + ["vfmsub321pd"] = "keyword", + ["vfmsub321ps"] = "keyword", + ["vfmsub321sd"] = "keyword", + ["vfmsub321ss"] = "keyword", + ["vfmsubadd123pd"] = "keyword", + ["vfmsubadd123ps"] = "keyword", + ["vfmsubadd132pd"] = "keyword", + ["vfmsubadd132ps"] = "keyword", + ["vfmsubadd213pd"] = "keyword", + ["vfmsubadd213ps"] = "keyword", + ["vfmsubadd231pd"] = "keyword", + ["vfmsubadd231ps"] = "keyword", + ["vfmsubadd312pd"] = "keyword", + ["vfmsubadd312ps"] = "keyword", + ["vfmsubadd321pd"] = "keyword", + ["vfmsubadd321ps"] = "keyword", + ["vfmsubaddpd"] = "keyword", + ["vfmsubaddps"] = "keyword", + ["vfmsubpd"] = "keyword", + ["vfmsubps"] = "keyword", + ["vfmsubsd"] = "keyword", + ["vfmsubss"] = "keyword", + ["vfnmadd123pd"] = "keyword", + ["vfnmadd123ps"] = "keyword", + ["vfnmadd123sd"] = "keyword", + ["vfnmadd123ss"] = "keyword", + ["vfnmadd132pd"] = "keyword", + ["vfnmadd132ps"] = "keyword", + ["vfnmadd132sd"] = "keyword", + ["vfnmadd132ss"] = "keyword", + ["vfnmadd213pd"] = "keyword", + ["vfnmadd213ps"] = "keyword", + ["vfnmadd213sd"] = "keyword", + ["vfnmadd213ss"] = "keyword", + ["vfnmadd231pd"] = "keyword", + ["vfnmadd231ps"] = "keyword", + ["vfnmadd231sd"] = "keyword", + ["vfnmadd231ss"] = "keyword", + ["vfnmadd312pd"] = "keyword", + ["vfnmadd312ps"] = "keyword", + ["vfnmadd312sd"] = "keyword", + ["vfnmadd312ss"] = "keyword", + ["vfnmadd321pd"] = "keyword", + ["vfnmadd321ps"] = "keyword", + ["vfnmadd321sd"] = "keyword", + ["vfnmadd321ss"] = "keyword", + ["vfnmaddpd"] = "keyword", + ["vfnmaddps"] = "keyword", + ["vfnmaddsd"] = "keyword", + ["vfnmaddss"] = "keyword", + ["vfnmsub123pd"] = "keyword", + ["vfnmsub123ps"] = "keyword", + ["vfnmsub123sd"] = "keyword", + ["vfnmsub123ss"] = "keyword", + ["vfnmsub132pd"] = "keyword", + ["vfnmsub132ps"] = "keyword", + ["vfnmsub132sd"] = "keyword", + ["vfnmsub132ss"] = "keyword", + ["vfnmsub213pd"] = "keyword", + ["vfnmsub213ps"] = "keyword", + ["vfnmsub213sd"] = "keyword", + ["vfnmsub213ss"] = "keyword", + ["vfnmsub231pd"] = "keyword", + ["vfnmsub231ps"] = "keyword", + ["vfnmsub231sd"] = "keyword", + ["vfnmsub231ss"] = "keyword", + ["vfnmsub312pd"] = "keyword", + ["vfnmsub312ps"] = "keyword", + ["vfnmsub312sd"] = "keyword", + ["vfnmsub312ss"] = "keyword", + ["vfnmsub321pd"] = "keyword", + ["vfnmsub321ps"] = "keyword", + ["vfnmsub321sd"] = "keyword", + ["vfnmsub321ss"] = "keyword", + ["vfnmsubpd"] = "keyword", + ["vfnmsubps"] = "keyword", + ["vfnmsubsd"] = "keyword", + ["vfnmsubss"] = "keyword", + ["vfpclasspd"] = "keyword", + ["vfpclassps"] = "keyword", + ["vfpclasssd"] = "keyword", + ["vfpclassss"] = "keyword", + ["vfrczpd"] = "keyword", + ["vfrczps"] = "keyword", + ["vfrczsd"] = "keyword", + ["vfrczss"] = "keyword", + ["vgatherdd"] = "keyword", + ["vgatherdpd"] = "keyword", + ["vgatherdps"] = "keyword", + ["vgatherdq"] = "keyword", + ["vgatherpf0dpd"] = "keyword", + ["vgatherpf0dps"] = "keyword", + ["vgatherpf0qpd"] = "keyword", + ["vgatherpf0qps"] = "keyword", + ["vgatherpf1dpd"] = "keyword", + ["vgatherpf1dps"] = "keyword", + ["vgatherpf1qpd"] = "keyword", + ["vgatherpf1qps"] = "keyword", + ["vgatherqd"] = "keyword", + ["vgatherqpd"] = "keyword", + ["vgatherqps"] = "keyword", + ["vgatherqq"] = "keyword", + ["vgetexppd"] = "keyword", + ["vgetexpps"] = "keyword", + ["vgetexpsd"] = "keyword", + ["vgetexpss"] = "keyword", + ["vgetmantpd"] = "keyword", + ["vgetmantps"] = "keyword", + ["vgetmantsd"] = "keyword", + ["vgetmantss"] = "keyword", + ["vhaddpd"] = "keyword", + ["vhaddps"] = "keyword", + ["vhsubpd"] = "keyword", + ["vhsubps"] = "keyword", + ["vinsertf128"] = "keyword", + ["vinsertf32x4"] = "keyword", + ["vinsertf32x8"] = "keyword", + ["vinsertf64x2"] = "keyword", + ["vinsertf64x4"] = "keyword", + ["vinserti128"] = "keyword", + ["vinserti32x4"] = "keyword", + ["vinserti32x8"] = "keyword", + ["vinserti64x2"] = "keyword", + ["vinserti64x4"] = "keyword", + ["vinsertps"] = "keyword", + ["vlddqu"] = "keyword", + ["vldmxcsr"] = "keyword", + ["vldqqu"] = "keyword", + ["vmaskmovd"] = "keyword", + ["vmaskmovdqu"] = "keyword", + ["vmaskmovpd"] = "keyword", + ["vmaskmovps"] = "keyword", + ["vmaskmovq"] = "keyword", + ["vmaxpd"] = "keyword", + ["vmaxps"] = "keyword", + ["vmaxsd"] = "keyword", + ["vmaxss"] = "keyword", + ["vmcall"] = "keyword", + ["vmclear"] = "keyword", + ["vmfunc"] = "keyword", + ["vminpd"] = "keyword", + ["vminps"] = "keyword", + ["vminsd"] = "keyword", + ["vminss"] = "keyword", + ["vmlaunch"] = "keyword", + ["vmload"] = "keyword", + ["vmmcall"] = "keyword", + ["vmovapd"] = "keyword", + ["vmovaps"] = "keyword", + ["vmovd"] = "keyword", + ["vmovddup"] = "keyword", + ["vmovdqa"] = "keyword", + ["vmovdqa32"] = "keyword", + ["vmovdqa64"] = "keyword", + ["vmovdqu"] = "keyword", + ["vmovdqu16"] = "keyword", + ["vmovdqu32"] = "keyword", + ["vmovdqu64"] = "keyword", + ["vmovdqu8"] = "keyword", + ["vmovhlps"] = "keyword", + ["vmovhpd"] = "keyword", + ["vmovhps"] = "keyword", + ["vmovlhps"] = "keyword", + ["vmovlpd"] = "keyword", + ["vmovlps"] = "keyword", + ["vmovmskpd"] = "keyword", + ["vmovmskps"] = "keyword", + ["vmovntdq"] = "keyword", + ["vmovntdqa"] = "keyword", + ["vmovntpd"] = "keyword", + ["vmovntps"] = "keyword", + ["vmovntqq"] = "keyword", + ["vmovq"] = "keyword", + ["vmovqqa"] = "keyword", + ["vmovqqu"] = "keyword", + ["vmovsd"] = "keyword", + ["vmovshdup"] = "keyword", + ["vmovsldup"] = "keyword", + ["vmovss"] = "keyword", + ["vmovupd"] = "keyword", + ["vmovups"] = "keyword", + ["vmpsadbw"] = "keyword", + ["vmptrld"] = "keyword", + ["vmptrst"] = "keyword", + ["vmread"] = "keyword", + ["vmresume"] = "keyword", + ["vmrun"] = "keyword", + ["vmsave"] = "keyword", + ["vmulpd"] = "keyword", + ["vmulps"] = "keyword", + ["vmulsd"] = "keyword", + ["vmulss"] = "keyword", + ["vmwrite"] = "keyword", + ["vmxoff"] = "keyword", + ["vmxon"] = "keyword", + ["vorpd"] = "keyword", + ["vorps"] = "keyword", + ["vpabsb"] = "keyword", + ["vpabsd"] = "keyword", + ["vpabsq"] = "keyword", + ["vpabsw"] = "keyword", + ["vpackssdw"] = "keyword", + ["vpacksswb"] = "keyword", + ["vpackusdw"] = "keyword", + ["vpackuswb"] = "keyword", + ["vpaddb"] = "keyword", + ["vpaddd"] = "keyword", + ["vpaddq"] = "keyword", + ["vpaddsb"] = "keyword", + ["vpaddsw"] = "keyword", + ["vpaddusb"] = "keyword", + ["vpaddusw"] = "keyword", + ["vpaddw"] = "keyword", + ["vpalignr"] = "keyword", + ["vpand"] = "keyword", + ["vpandd"] = "keyword", + ["vpandn"] = "keyword", + ["vpandnd"] = "keyword", + ["vpandnq"] = "keyword", + ["vpandq"] = "keyword", + ["vpavgb"] = "keyword", + ["vpavgw"] = "keyword", + ["vpblendd"] = "keyword", + ["vpblendmb"] = "keyword", + ["vpblendmd"] = "keyword", + ["vpblendmq"] = "keyword", + ["vpblendmw"] = "keyword", + ["vpblendvb"] = "keyword", + ["vpblendw"] = "keyword", + ["vpbroadcastb"] = "keyword", + ["vpbroadcastd"] = "keyword", + ["vpbroadcastmb2q"] = "keyword", + ["vpbroadcastmw2d"] = "keyword", + ["vpbroadcastq"] = "keyword", + ["vpbroadcastw"] = "keyword", + ["vpclmulhqhqdq"] = "keyword", + ["vpclmulhqlqdq"] = "keyword", + ["vpclmullqhqdq"] = "keyword", + ["vpclmullqlqdq"] = "keyword", + ["vpclmulqdq"] = "keyword", + ["vpcmov"] = "keyword", + ["vpcmpb"] = "keyword", + ["vpcmpd"] = "keyword", + ["vpcmpeqb"] = "keyword", + ["vpcmpeqd"] = "keyword", + ["vpcmpeqq"] = "keyword", + ["vpcmpeqw"] = "keyword", + ["vpcmpestri"] = "keyword", + ["vpcmpestrm"] = "keyword", + ["vpcmpgtb"] = "keyword", + ["vpcmpgtd"] = "keyword", + ["vpcmpgtq"] = "keyword", + ["vpcmpgtw"] = "keyword", + ["vpcmpistri"] = "keyword", + ["vpcmpistrm"] = "keyword", + ["vpcmpq"] = "keyword", + ["vpcmpub"] = "keyword", + ["vpcmpud"] = "keyword", + ["vpcmpuq"] = "keyword", + ["vpcmpuw"] = "keyword", + ["vpcmpw"] = "keyword", + ["vpcomb"] = "keyword", + ["vpcomd"] = "keyword", + ["vpcompressd"] = "keyword", + ["vpcompressq"] = "keyword", + ["vpcomq"] = "keyword", + ["vpcomub"] = "keyword", + ["vpcomud"] = "keyword", + ["vpcomuq"] = "keyword", + ["vpcomuw"] = "keyword", + ["vpcomw"] = "keyword", + ["vpconflictd"] = "keyword", + ["vpconflictq"] = "keyword", + ["vperm2f128"] = "keyword", + ["vperm2i128"] = "keyword", + ["vpermb"] = "keyword", + ["vpermd"] = "keyword", + ["vpermi2b"] = "keyword", + ["vpermi2d"] = "keyword", + ["vpermi2pd"] = "keyword", + ["vpermi2ps"] = "keyword", + ["vpermi2q"] = "keyword", + ["vpermi2w"] = "keyword", + ["vpermilpd"] = "keyword", + ["vpermilps"] = "keyword", + ["vpermpd"] = "keyword", + ["vpermps"] = "keyword", + ["vpermq"] = "keyword", + ["vpermt2b"] = "keyword", + ["vpermt2d"] = "keyword", + ["vpermt2pd"] = "keyword", + ["vpermt2ps"] = "keyword", + ["vpermt2q"] = "keyword", + ["vpermt2w"] = "keyword", + ["vpermw"] = "keyword", + ["vpexpandd"] = "keyword", + ["vpexpandq"] = "keyword", + ["vpextrb"] = "keyword", + ["vpextrd"] = "keyword", + ["vpextrq"] = "keyword", + ["vpextrw"] = "keyword", + ["vpgatherdd"] = "keyword", + ["vpgatherdq"] = "keyword", + ["vpgatherqd"] = "keyword", + ["vpgatherqq"] = "keyword", + ["vphaddbd"] = "keyword", + ["vphaddbq"] = "keyword", + ["vphaddbw"] = "keyword", + ["vphaddd"] = "keyword", + ["vphadddq"] = "keyword", + ["vphaddsw"] = "keyword", + ["vphaddubd"] = "keyword", + ["vphaddubq"] = "keyword", + ["vphaddubw"] = "keyword", + ["vphaddudq"] = "keyword", + ["vphadduwd"] = "keyword", + ["vphadduwq"] = "keyword", + ["vphaddw"] = "keyword", + ["vphaddwd"] = "keyword", + ["vphaddwq"] = "keyword", + ["vphminposuw"] = "keyword", + ["vphsubbw"] = "keyword", + ["vphsubd"] = "keyword", + ["vphsubdq"] = "keyword", + ["vphsubsw"] = "keyword", + ["vphsubw"] = "keyword", + ["vphsubwd"] = "keyword", + ["vpinsrb"] = "keyword", + ["vpinsrd"] = "keyword", + ["vpinsrq"] = "keyword", + ["vpinsrw"] = "keyword", + ["vplzcntd"] = "keyword", + ["vplzcntq"] = "keyword", + ["vpmacsdd"] = "keyword", + ["vpmacsdqh"] = "keyword", + ["vpmacsdql"] = "keyword", + ["vpmacssdd"] = "keyword", + ["vpmacssdqh"] = "keyword", + ["vpmacssdql"] = "keyword", + ["vpmacsswd"] = "keyword", + ["vpmacssww"] = "keyword", + ["vpmacswd"] = "keyword", + ["vpmacsww"] = "keyword", + ["vpmadcsswd"] = "keyword", + ["vpmadcswd"] = "keyword", + ["vpmadd52huq"] = "keyword", + ["vpmadd52luq"] = "keyword", + ["vpmaddubsw"] = "keyword", + ["vpmaddwd"] = "keyword", + ["vpmaskmovd"] = "keyword", + ["vpmaskmovq"] = "keyword", + ["vpmaxsb"] = "keyword", + ["vpmaxsd"] = "keyword", + ["vpmaxsq"] = "keyword", + ["vpmaxsw"] = "keyword", + ["vpmaxub"] = "keyword", + ["vpmaxud"] = "keyword", + ["vpmaxuq"] = "keyword", + ["vpmaxuw"] = "keyword", + ["vpminsb"] = "keyword", + ["vpminsd"] = "keyword", + ["vpminsq"] = "keyword", + ["vpminsw"] = "keyword", + ["vpminub"] = "keyword", + ["vpminud"] = "keyword", + ["vpminuq"] = "keyword", + ["vpminuw"] = "keyword", + ["vpmovb2m"] = "keyword", + ["vpmovd2m"] = "keyword", + ["vpmovdb"] = "keyword", + ["vpmovdw"] = "keyword", + ["vpmovm2b"] = "keyword", + ["vpmovm2d"] = "keyword", + ["vpmovm2q"] = "keyword", + ["vpmovm2w"] = "keyword", + ["vpmovmskb"] = "keyword", + ["vpmovq2m"] = "keyword", + ["vpmovqb"] = "keyword", + ["vpmovqd"] = "keyword", + ["vpmovqw"] = "keyword", + ["vpmovsdb"] = "keyword", + ["vpmovsdw"] = "keyword", + ["vpmovsqb"] = "keyword", + ["vpmovsqd"] = "keyword", + ["vpmovsqw"] = "keyword", + ["vpmovswb"] = "keyword", + ["vpmovsxbd"] = "keyword", + ["vpmovsxbq"] = "keyword", + ["vpmovsxbw"] = "keyword", + ["vpmovsxdq"] = "keyword", + ["vpmovsxwd"] = "keyword", + ["vpmovsxwq"] = "keyword", + ["vpmovusdb"] = "keyword", + ["vpmovusdw"] = "keyword", + ["vpmovusqb"] = "keyword", + ["vpmovusqd"] = "keyword", + ["vpmovusqw"] = "keyword", + ["vpmovuswb"] = "keyword", + ["vpmovw2m"] = "keyword", + ["vpmovwb"] = "keyword", + ["vpmovzxbd"] = "keyword", + ["vpmovzxbq"] = "keyword", + ["vpmovzxbw"] = "keyword", + ["vpmovzxdq"] = "keyword", + ["vpmovzxwd"] = "keyword", + ["vpmovzxwq"] = "keyword", + ["vpmuldq"] = "keyword", + ["vpmulhrsw"] = "keyword", + ["vpmulhuw"] = "keyword", + ["vpmulhw"] = "keyword", + ["vpmulld"] = "keyword", + ["vpmullq"] = "keyword", + ["vpmullw"] = "keyword", + ["vpmultishiftqb"] = "keyword", + ["vpmuludq"] = "keyword", + ["vpor"] = "keyword", + ["vpord"] = "keyword", + ["vporq"] = "keyword", + ["vpperm"] = "keyword", + ["vprold"] = "keyword", + ["vprolq"] = "keyword", + ["vprolvd"] = "keyword", + ["vprolvq"] = "keyword", + ["vprord"] = "keyword", + ["vprorq"] = "keyword", + ["vprorvd"] = "keyword", + ["vprorvq"] = "keyword", + ["vprotb"] = "keyword", + ["vprotd"] = "keyword", + ["vprotq"] = "keyword", + ["vprotw"] = "keyword", + ["vpsadbw"] = "keyword", + ["vpscatterdd"] = "keyword", + ["vpscatterdq"] = "keyword", + ["vpscatterqd"] = "keyword", + ["vpscatterqq"] = "keyword", + ["vpshab"] = "keyword", + ["vpshad"] = "keyword", + ["vpshaq"] = "keyword", + ["vpshaw"] = "keyword", + ["vpshlb"] = "keyword", + ["vpshld"] = "keyword", + ["vpshlq"] = "keyword", + ["vpshlw"] = "keyword", + ["vpshufb"] = "keyword", + ["vpshufd"] = "keyword", + ["vpshufhw"] = "keyword", + ["vpshuflw"] = "keyword", + ["vpsignb"] = "keyword", + ["vpsignd"] = "keyword", + ["vpsignw"] = "keyword", + ["vpslld"] = "keyword", + ["vpslldq"] = "keyword", + ["vpsllq"] = "keyword", + ["vpsllvd"] = "keyword", + ["vpsllvq"] = "keyword", + ["vpsllvw"] = "keyword", + ["vpsllw"] = "keyword", + ["vpsrad"] = "keyword", + ["vpsraq"] = "keyword", + ["vpsravd"] = "keyword", + ["vpsravq"] = "keyword", + ["vpsravw"] = "keyword", + ["vpsraw"] = "keyword", + ["vpsrld"] = "keyword", + ["vpsrldq"] = "keyword", + ["vpsrlq"] = "keyword", + ["vpsrlvd"] = "keyword", + ["vpsrlvq"] = "keyword", + ["vpsrlvw"] = "keyword", + ["vpsrlw"] = "keyword", + ["vpsubb"] = "keyword", + ["vpsubd"] = "keyword", + ["vpsubq"] = "keyword", + ["vpsubsb"] = "keyword", + ["vpsubsw"] = "keyword", + ["vpsubusb"] = "keyword", + ["vpsubusw"] = "keyword", + ["vpsubw"] = "keyword", + ["vpternlogd"] = "keyword", + ["vpternlogq"] = "keyword", + ["vptest"] = "keyword", + ["vptestmb"] = "keyword", + ["vptestmd"] = "keyword", + ["vptestmq"] = "keyword", + ["vptestmw"] = "keyword", + ["vptestnmb"] = "keyword", + ["vptestnmd"] = "keyword", + ["vptestnmq"] = "keyword", + ["vptestnmw"] = "keyword", + ["vpunpckhbw"] = "keyword", + ["vpunpckhdq"] = "keyword", + ["vpunpckhqdq"] = "keyword", + ["vpunpckhwd"] = "keyword", + ["vpunpcklbw"] = "keyword", + ["vpunpckldq"] = "keyword", + ["vpunpcklqdq"] = "keyword", + ["vpunpcklwd"] = "keyword", + ["vpxor"] = "keyword", + ["vpxord"] = "keyword", + ["vpxorq"] = "keyword", + ["vrangepd"] = "keyword", + ["vrangeps"] = "keyword", + ["vrangesd"] = "keyword", + ["vrangess"] = "keyword", + ["vrcp14pd"] = "keyword", + ["vrcp14ps"] = "keyword", + ["vrcp14sd"] = "keyword", + ["vrcp14ss"] = "keyword", + ["vrcp28pd"] = "keyword", + ["vrcp28ps"] = "keyword", + ["vrcp28sd"] = "keyword", + ["vrcp28ss"] = "keyword", + ["vrcpps"] = "keyword", + ["vrcpss"] = "keyword", + ["vreducepd"] = "keyword", + ["vreduceps"] = "keyword", + ["vreducesd"] = "keyword", + ["vreducess"] = "keyword", + ["vrndscalepd"] = "keyword", + ["vrndscaleps"] = "keyword", + ["vrndscalesd"] = "keyword", + ["vrndscaless"] = "keyword", + ["vroundpd"] = "keyword", + ["vroundps"] = "keyword", + ["vroundsd"] = "keyword", + ["vroundss"] = "keyword", + ["vrsqrt14pd"] = "keyword", + ["vrsqrt14ps"] = "keyword", + ["vrsqrt14sd"] = "keyword", + ["vrsqrt14ss"] = "keyword", + ["vrsqrt28pd"] = "keyword", + ["vrsqrt28ps"] = "keyword", + ["vrsqrt28sd"] = "keyword", + ["vrsqrt28ss"] = "keyword", + ["vrsqrtps"] = "keyword", + ["vrsqrtss"] = "keyword", + ["vscalefpd"] = "keyword", + ["vscalefps"] = "keyword", + ["vscalefsd"] = "keyword", + ["vscalefss"] = "keyword", + ["vscatterdpd"] = "keyword", + ["vscatterdps"] = "keyword", + ["vscatterpf0dpd"] = "keyword", + ["vscatterpf0dps"] = "keyword", + ["vscatterpf0qpd"] = "keyword", + ["vscatterpf0qps"] = "keyword", + ["vscatterpf1dpd"] = "keyword", + ["vscatterpf1dps"] = "keyword", + ["vscatterpf1qpd"] = "keyword", + ["vscatterpf1qps"] = "keyword", + ["vscatterqpd"] = "keyword", + ["vscatterqps"] = "keyword", + ["vshuff32x4"] = "keyword", + ["vshuff64x2"] = "keyword", + ["vshufi32x4"] = "keyword", + ["vshufi64x2"] = "keyword", + ["vshufpd"] = "keyword", + ["vshufps"] = "keyword", + ["vsqrtpd"] = "keyword", + ["vsqrtps"] = "keyword", + ["vsqrtsd"] = "keyword", + ["vsqrtss"] = "keyword", + ["vstmxcsr"] = "keyword", + ["vsubpd"] = "keyword", + ["vsubps"] = "keyword", + ["vsubsd"] = "keyword", + ["vsubss"] = "keyword", + ["vtestpd"] = "keyword", + ["vtestps"] = "keyword", + ["vucomisd"] = "keyword", + ["vucomiss"] = "keyword", + ["vunpckhpd"] = "keyword", + ["vunpckhps"] = "keyword", + ["vunpcklpd"] = "keyword", + ["vunpcklps"] = "keyword", + ["vxorpd"] = "keyword", + ["vxorps"] = "keyword", + ["vzeroall"] = "keyword", + ["vzeroupper"] = "keyword", + ["wait"] = "keyword", + ["wbinvd"] = "keyword", + ["wrfsbase"] = "keyword", + ["wrgsbase"] = "keyword", + ["wrmsr"] = "keyword", + ["wrpkru"] = "keyword", + ["wrshr"] = "keyword", + ["xabort"] = "keyword", + ["xadd"] = "keyword", + ["xbegin"] = "keyword", + ["xbts"] = "keyword", + ["xchg"] = "keyword", + ["xcryptcbc"] = "keyword", + ["xcryptcfb"] = "keyword", + ["xcryptctr"] = "keyword", + ["xcryptecb"] = "keyword", + ["xcryptofb"] = "keyword", + ["xend"] = "keyword", + ["xgetbv"] = "keyword", + ["xlat"] = "keyword", + ["xlatb"] = "keyword", + ["xor"] = "keyword", + ["xorpd"] = "keyword", + ["xorps"] = "keyword", + ["xrstor"] = "keyword", + ["xrstor64"] = "keyword", + ["xrstors"] = "keyword", + ["xrstors64"] = "keyword", + ["xsave"] = "keyword", + ["xsave64"] = "keyword", + ["xsavec"] = "keyword", + ["xsavec64"] = "keyword", + ["xsaveopt"] = "keyword", + ["xsaveopt64"] = "keyword", + ["xsaves"] = "keyword", + ["xsaves64"] = "keyword", + ["xsetbv"] = "keyword", + ["xsha1"] = "keyword", + ["xsha256"] = "keyword", + ["xstore"] = "keyword", + ["xtest"] = "keyword", + + -- Data + ["times"] = "keyword2", + ["equ"] = "keyword2", + ["db"] = "keyword2", + ["dw"] = "keyword2", + ["dd"] = "keyword2", + ["dq"] = "keyword2", + ["dt"] = "keyword2", + ["do"] = "keyword2", + ["dy"] = "keyword2", + ["dz"] = "keyword2", + ["resb"] = "keyword2", + ["resw"] = "keyword2", + ["resd"] = "keyword2", + ["resq"] = "keyword2", + ["rest"] = "keyword2", + ["reso"] = "keyword2", + ["resy"] = "keyword2", + ["resz"] = "keyword2", + ["incbin"] = "keyword2", + ["byte"] = "keyword2", + ["word"] = "keyword2", + ["dword"] = "keyword2", + ["qword"] = "keyword2", + ["short"] = "keyword2", + ["ptr"] = "keyword2", + ["tword"] = "keyword2", + ["yword"] = "keyword2", + ["zword"] = "keyword2", + ["oword"] = "keyword2", + + -- NASM directives + ["absolute"] = "keyword2", ["ABSOLUTE"] = "keyword2", + ["bits"] = "keyword2", ["BITS"] = "keyword2", + ["common"] = "keyword2", ["COMMON"] = "keyword2", + ["extern"] = "keyword2", ["EXTERN"] = "keyword2", + ["global"] = "keyword2", ["GLOBAL"] = "keyword2", + ["org"] = "keyword2", ["ORG"] = "keyword2", + ["section"] = "keyword2", ["SECTION"] = "keyword2", + ["seg"] = "keyword2", ["SEG"] = "keyword2", + ["segment"] = "keyword2", ["SEGMENT"] = "keyword2", + ["strict"] = "keyword2", ["STRICT"] = "keyword2", + ["use16"] = "keyword2", ["USE16"] = "keyword2", + ["use32"] = "keyword2", ["USE32"] = "keyword2", + ["use64"] = "keyword2", ["USE64"] = "keyword2", + ["..got"] = "keyword2", + ["..plt"] = "keyword2", + ["..sym"] = "keyword2", + ["wrt"] = "keyword2", + ["struc"] = "keyword2", + ["endstruc"] = "keyword2", + ["istruc"] = "keyword2", + ["at"] = "keyword2", ["AT"] = "keyword2", + ["iend"] = "keyword2", ["IEND"] = "keyword2", + ["align"] = "keyword2", ["ALIGN"] = "keyword2", + ["alignb"] = "keyword2", ["ALIGNB"] = "keyword2", + ["__SECT__"] = "keyword2", + ["__NASM_MAJOR__"] = "keyword2", + ["__NASM_MINOR__"] = "keyword2", + ["__NASM_SUBMINOR__"] = "keyword2", + ["___NASM_PATCHLEVEL__"] = "keyword2", + ["__NASM_VERSION_ID__"] = "keyword2", + ["__NASM_VER__"] = "keyword2", + ["__FILE__"] = "keyword2", + ["__LINE__"] = "keyword2", + ["__BITS__"] = "keyword2", + ["default"] = "keyword2", ["DEFAULT"] = "keyword2", + }, +} diff --git a/debian/extra/plugins/language_autohotkey_v1.lua b/debian/extra/plugins/language_autohotkey_v1.lua new file mode 100644 index 0000000..eb41ddc --- /dev/null +++ b/debian/extra/plugins/language_autohotkey_v1.lua @@ -0,0 +1,155 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +-- AHK has case insensitive grammer +local variables = { + "A_AhkPath", "A_AhkVersion", "A_AppData", "A_AppDataCommon", "A_AutoTrim", + "A_BatchLines", "A_CaretX", "A_CaretY", "A_Computername", "A_ControlDelay", + "A_Cursor", "A_DD", "A_DDD", "A_DDDD", "A_DefaultMouseSpeed", + "A_Desktop", "A_Desktopcommon", "A_Detecthiddentext", "A_Detecthiddenwindows", "A_Endchar", + "A_EventInfo", "A_ExitReason", "A_FileEncoding", "A_FormatFloat", "A_FormatInteger", + "A_Gui", "A_GuiControl", "A_GuiControlEvent", "A_GuiEvent", "A_GuiHeight", + "A_GuiWidth", "A_GuiX", "A_GuiY", "A_Hour", "A_IconFile", + "A_IconHidden", "A_IconNumber", "A_IconTip", "A_Index", "A_IpAddress1", + "A_IpAddress2", "A_IpAddress3", "A_IpAddress4", "A_Is64bitOS", "A_IsAdmin", + "A_IsCompiled", "A_IsCritical", "A_IsPaused", "A_IsSuspended", "A_IsUnicode", + "A_KeyDelay", "A_Language", "A_LastError", "A_LineFile", "A_LineNumber", + "A_LoopField", "A_LoopFileAttrib", "A_LoopFileDir", "A_LoopFileExt", "A_LoopFileFullPath", + "A_LoopFileLongPath", "A_LoopFileName", "A_LoopFileShortName", "A_LoopFileShortPath", "A_LoopFileSize", + "A_LoopFileSizeKB", "A_LoopFileSizeMB", "A_LoopFileTimeAccessed", "A_LoopFileTimeCreated", "A_LoopFileTimeModified", + "A_LoopReadLine", "A_LoopRegKey", "A_LoopRegName", "A_LoopRegSubKey", "A_LoopRegTimeModified", + "A_LoopRegType", "A_MDay", "A_Min", "A_MM", "A_MMM", + "A_MMMM", "A_Mon", "A_MouseDelay", "A_MSec", "A_MyDocuments", + "A_Now", "A_NowUTC", "A_NumBatchLines", "A_OSType", "A_OSVersion", + "A_PriorHotkey", "A_PriorKey", "A_ProgramFiles", "A_Programs", "A_ProgramsCommon", + "A_PtrSize", "A_RegView", "A_ScreenDpi", "A_ScreenHeight", "A_ScreenWidth", + "A_ScriptDir", "A_ScriptFullPath", "A_ScriptHwnd", "A_ScriptName", "A_Sec", + "A_Space", "A_StartMenu", "A_StartMenuCommon", "A_StartUp", "A_StartUpCommon", + "A_StringCaseSense", "A_Tab", "A_Temp", "A_ThisFunc", "A_ThisHotkey", + "A_ThisLabel", "A_ThisMenu", "A_ThisMenuItem", "A_ThisMenuItemPos", "A_TickCount", + "A_TimeIdle", "A_TimeIdlePhysical", "A_TimeSincePriorHotkey", "A_TimeSinceThisHotkey", "A_TitleMatchMode", + "A_TitleMatchModeSpeed", "A_UserName", "A_WDay", "A_WinDelay", "A_WinDir", + "A_WorkingDir", "A_YDay", "A_Year", "A_YWeek", "A_YYYY", + "CipboardAll", "Clipboard", "ComSpec", "ErrorLevel", "False", + "ProgramFiles", "True", +} + +local keywords = { + "Break", "ByRef", "Case", "Catch", "Class", + "Continue", "Else", "Else", "Exit", "ExitApp", + "Finally", "For", "Global", "Gosub", "Goto", + "If", "Local", "Loop", "OnExit", "Pause", + "Return", "Sleep", "static", "suspend", "Switch", + "Throw", "Try", "Until", "While", +} + +local functions = { + "_NewEnum", "Abs", "ACos", "Array", "Asc", + "ASin", "ATan", "Ceil", "Chr", "ComObjActive", + "ComObjArray", "ComObjConnect", "ComObjCreate", "ComObject", "ComObjError", + "ComObjFlags", "ComObjGet", "ComObjQuery", "ComObjType", "ComObjValue", + "Cos", "DllCall", "Exception", "Exp", "FileExist", + "FileOpen", "Floor", "Format", "Func", "GetKeyName", + "GetKeySC", "GetKeyState", "GetKeyVK", "IL_Add", "IL_Create", + "IL_Destroy", "InStr", "IsByRef", "IsFunc", "IsLabel", + "IsObject", "Ln", "Log", "LTrim", "LV_Add", + "LV_Delete", "LV_DeleteCol", "LV_GetCount", "LV_GetNext", "LV_GetText", + "LV_Insert", "LV_InsertCol", "LV_Modify", "LV_ModifyCol", "LV_SetImageList", + "Mod", "NumGet", "NumPut", "ObjAddRef", "ObjClone", + "Object", "ObjGetAddress", "ObjGetCapacity", "ObjHasKey", "ObjInsert", + "ObjMaxIndex", "ObjMinIndex", "ObjNewEnum", "ObjRelease", "ObjRemove", + "ObjSetCapacity", "OnMessage", "RegExMatch", "RegExReplace", "RegisterCallback", + "Round", "RTrim", "SB_SetIcon", "SB_SetParts", "SB_SetText", + "Sin", "Sqrt", "StrGet", "StrLen", "StrPut", + "StrReplace", "StrSplit", "SubStr", "Tan", "Trim", + "TV_Add", "TV_Delete", "TV_Get", "TV_GetChild", "TV_GetCount", + "TV_GetNext", "TV_GetParent", "TV_GetPrev", "TV_GetSelection", "TV_GetText", + "TV_Modify", "TV_SetImageList", "VarSetCapacity", "WinActive", "WinExist", +} + +local commands = { + "AutoTrim", "BlockInput", "Click", "ClipWait", "Control", + "ControlClick", "ControlFocus", "ControlGet", "ControlGetFocus", "ControlGetPos", + "ControlGetText", "ControlMove", "ControlSend", "ControlSendRaw", "ControlSetText", + "CoordMode", "Critical", "DetectHiddenText", "DetectHiddenWindows", "Drive", + "DriveGet", "DriveSpaceFree", "Edit", "EnvAdd", "EnvGet", + "EnvSet", "EnvSub", "EnvUpdate", "FileAppend", "FileCopy", + "FileCopyDir", "FileCreateDir", "FileCreateShortcut", "FileDelete", "FileEncoding", + "FileGetAttrib", "FileGetShortcut", "FileGetSize", "FileGetTime", "FileGetVersion", + "FileInstall", "FileMove", "FileMoveDir", "FileRead", "FileReadLine", + "FileRecycle", "FileRecycleEmpty", "FileRemoveDir", "FileSelectFile", "FileSelectFolder", + "FileSetAttrib", "FileSetTime", "FormatTime", "GroupActivate", "GroupAdd", + "GroupClose", "GroupDeactivate", "Gui", "GuiControl", "GuiControlGet", + "Hotkey", "ImageSearch", "IniDelete", "IniRead", "IniWrite", + "Input", "InputBox", "KeyHistory", "KeyWait", "ListHotkeys", + "ListLines", "ListVars", "Menu", "MouseClick", "MouseClickDrag", + "MouseGetPos", "MouseMove", "MsgBox", "OutputDebug", "PixelGetColor", + "PixelSearch", "PostMessage", "Process", "Random", "RegDelete", + "RegRead", "RegWrite", "Reload", "Run", "RunAs", + "RunWait", "Send", "SendEvent", "SendInput", "SendLevel", + "SendMessage", "SendMode", "SendPlay", "SendRaw", "SetBatchLines", + "SetCapsLockState", "SetControlDelay", "SetDefaultMouseSpeed", "SetEnv", "SetKeyDelay", + "SetMouseDelay", "SetNumLockState", "SetRegView", "SetScrollLockState", "SetStoreCapsLockMode", + "SetTimer", "SetTitleMatchMode", "SetWinDelay", "SetWorkingDir", "Shutdown", + "Sort", "SoundBeep", "SoundGet", "SoundGetWaveVolume", "SoundPlay", + "SoundSet", "SoundSetWaveVolume", "Splitpath", "StatusBarGetText", "StatusBarWait", + "StringCaseSense", "StringLower", "StringUpper", "SysGet", "Thread", + "ToolTip", "Transform", "TrayTip", "UrlDownloadToFile", "WinActivate", + "WinActivateBottom", "WinClose", "WinGet", "WinGetActiveStats", "WinGetActiveTitle", + "WinGetClass", "WinGetPos", "WinGetText", "WinGetTitle", "WinHide", + "WinKill", "WinMaximize", "WinMenuSelectItem", "WinMinimize", "WinMinimizeAll", + "WinMinimizeAllUndo", "WinMove", "WinRestore", "WinSet", "WinSetTitle", + "WinShow", "WinWait", "WinWaitActive", "WinWaitClose", "WinWaitNotActive", +} + +local symbols = {} +for _, elementVar in ipairs(variables) do + symbols[string.lower(elementVar)] = "operator" --a_year + symbols[string.upper(elementVar)] = "operator" --A_YEAR + symbols[string.format("%s%s", string.sub(elementVar, 1, 1), string.lower(string.sub(elementVar, 2)))] = "operator" --A_year + symbols[elementVar] = "operator" --A_Year +end + +for _, elementKeyword in ipairs(keywords) do + symbols[string.lower(elementKeyword)] = "function" --byref + symbols[string.upper(elementKeyword)] = "function" --BYREF + symbols[string.format("%s%s", string.sub(elementKeyword, 1, 1), string.lower(string.sub(elementKeyword, 2)))] = "function" --Byref + symbols[elementKeyword] = "function" --ByRef +end + +for _, elementFunction in ipairs(functions) do + symbols[string.lower(elementFunction)] = "keyword2" --lv_modifycol() + symbols[string.upper(elementFunction)] = "keyword2" --LV_MODIFYCOL() + symbols[string.format("%s%s", string.sub(elementFunction, 1, 1), string.lower(string.sub(elementFunction, 2)))] = "keyword2" --Lv_modifycol() + symbols[elementFunction] = "keyword2" --LV_ModifyCol() +end + +for _, elementCommands in ipairs(commands) do + symbols[string.lower(elementCommands)] = "keyword" --fileencoding + symbols[string.upper(elementCommands)] = "keyword" --FILEENCODING + symbols[string.format("%s%s", string.sub(elementCommands, 1, 1), string.lower(string.sub(elementCommands, 2)))] = "keyword" --Fileencoding + symbols[elementCommands] = "keyword" --FileEncoding +end + +syntax.add { + name = "AutoHotkey", + files = { "%.ahk$"}, + comment = ";", + patterns = { + { pattern = { ";", "\n" }, type = "comment" }, + { pattern = { "/%*", "*%/" }, type = "comment" }, + { pattern = { "[ruU]?%%", "[%% ]", '\\' }, type = "operator" }, + { pattern = { "[ruU]?%%", "[ ,]", '\\' }, type = "normal" }, + { pattern = { '[ruU]?"""', '"""'; '\\' }, type = "string" }, + { pattern = { '[ruU]?"', '"', '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%+%-=/%*%^<>!~|&]", type = "operator" }, + { pattern = ":=", type = "operator" }, + { pattern = ".=", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = symbols, +} diff --git a/debian/extra/plugins/language_awk.lua b/debian/extra/plugins/language_awk.lua new file mode 100644 index 0000000..cc56335 --- /dev/null +++ b/debian/extra/plugins/language_awk.lua @@ -0,0 +1,110 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Awk script", + files = "%.awk$", + headers = "^#!.*bin.*awk", + comment = "#", + patterns = { + -- $# is a awk special variable and the '#' shouldn't be interpreted + -- as a comment. + { pattern = "%$[%a_@*#][%w_]*", type = "keyword2" }, + -- Comments + { pattern = "#.*", type = "comment" }, + -- Strings + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { '`', '`', '\\' }, type = "string" }, + -- Ignore numbers that start with dots or slashes + { pattern = "%f[%w_%.%/]%d[%d%.]*%f[^%w_%.]", type = "number" }, + -- Operators + { pattern = "[!<>|&%[%]:=*]", type = "operator" }, + -- Match parameters + { pattern = "%f[%S][%+%-][%w%-_:]+", type = "function" }, + { pattern = "%f[%S][%+%-][%w%-_]+%f[=]", type = "function" }, + -- Prevent parameters with assignments from been matched as variables + { + pattern = "%s%-%a[%w_%-]*()%s+()%d[%d%.]+", + type = { "function", "normal", "number" } + }, + { + pattern = "%s%-%a[%w_%-]*()%s+()%a[%a%-_:=]+", + type = { "function", "normal", "symbol" } + }, + -- Match variable assignments + { pattern = "[_%a][%w_]+%f[%+=]", type = "keyword2" }, + -- Match variable expansions + { pattern = "%${.-}", type = "keyword2" }, + { pattern = "%$[%d%$%a_@*][%w_]*", type = "keyword2" }, + -- Functions + { pattern = "[%a_%-][%w_%-]*()%s*%f[(]", type = { "function", "normal" } }, + -- Everything else + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["break"] = "keyword", + ["continue"] = "keyword", + ["do"] = "keyword", + ["delete"] = "keyword", + ["else"] = "keyword", + ["exit"] = "keyword", + ["for"] = "keyword", + ["function"] = "keyword", + ["getline"] = "keyword", + ["if"] = "keyword", + ["next"] = "keyword", + ["nextfile"] = "keyword", + ["print"] = "keyword", + ["printf"] = "keyword", + ["return"] = "keyword", + ["while"] = "keyword", + ["gsub"] = "keyword", + ["index"] = "keyword", + ["length"] = "keyword", + ["match"] = "keyword", + ["split"] = "keyword", + ["sprintf"] = "keyword", + ["sub"] = "keyword", + ["substr"] = "keyword", + ["tolower"] = "keyword", + ["toupper"] = "keyword", + ["atan2"] = "keyword", + ["cos"] = "keyword", + ["exp"] = "keyword", + ["int"] = "keyword", + ["log"] = "keyword", + ["rand"] = "keyword", + ["sin"] = "keyword", + ["sqrt"] = "keyword", + ["srand"] = "keyword", + ["BEGIN"] = "keyword", + ["END"] = "keyword", + ["ARGC"] = "keyword", + ["ARGV"] = "keyword", + ["FILENAME"] = "keyword", + ["FNR"] = "keyword", + ["FS"] = "keyword", + ["NF"] = "keyword", + ["NR"] = "keyword", + ["OFMT"] = "keyword", + ["OFS"] = "keyword", + ["ORS"] = "keyword", + ["RLENGTH"] = "keyword", + ["RS"] = "keyword", + ["RSTART"] = "keyword", + ["SUBSEP"] = "keyword", + ["ARGIND"] = "keyword", + ["BINMODE"] = "keyword", + ["CONVFMT"] = "keyword", + ["ENVIRON"] = "keyword", + ["ERRNO"] = "keyword", + ["FIELDWIDTHS"] = "keyword", + ["IGNORECASE"] = "keyword", + ["LINT"] = "keyword", + ["PROCINFO"] = "keyword", + ["RT"] = "keyword", + ["RLENGTH"] = "keyword", + ["TEXTDOMAIN"] = "keyword" + } +} diff --git a/debian/extra/plugins/language_batch.lua b/debian/extra/plugins/language_batch.lua new file mode 100644 index 0000000..32510c8 --- /dev/null +++ b/debian/extra/plugins/language_batch.lua @@ -0,0 +1,63 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +-- batch syntax for lite + +-- windows batch files use caseless matching for symbols +local symtable = { + ["keyword"] = { + "if", "else", "not", "for", "do", "in", + "equ", "neq", "lss", "leq", "gtr", "geq", -- == != < <= > >= + "nul", "con", "prn", "prn", "lpt1", "com1", "com2", "com3", "com4", + "exist", "defined", + "errorlevel", "cmdextversion", + "goto", "call", "verify", + }, + ["function"] = { + "set", "setlocal", "endlocal", "enabledelayedexpansion", + "echo", "type", + "cd", "chdir", + "md", "mkdir", + "pause", "choice", "exit", + "del", "rd", "rmdir", + "copy", "xcopy", + "move", "ren", + "find", "findstr", + "sort", "shift", "attrib", + "cmd", "command", + "forfiles", + }, +} +-- prepare a mixed symbol list +local function prepare_symbols(symtable) + local symbols = { } + for symtype, symlist in pairs(symtable) do + for _, symname in ipairs(symlist) do + symbols[symname:lower()] = symtype + symbols[symname:upper()] = symtype + end + end + return symbols +end + +syntax.add { + name = "Batch", + files = { "%.bat$", "%.cmd$" }, + comment = "rem", + patterns = { + { pattern = "@echo off\n", type = "keyword" }, + { pattern = "@echo on\n", type = "keyword" }, + { pattern = "rem.-\n", type = "comment" }, -- rem comment line, rem, rem. + { pattern = "REM.-\n", type = "comment" }, + { pattern = "%s*:[%w%-]+", type = "symbol" }, -- :labels + { pattern = "%:%:.-\n", type = "comment" }, -- :: comment line + { pattern = "%%%w+%%", type = "symbol" }, -- %variable% + { pattern = "%%%%?~?[%w:]+", type = "symbol" }, -- %1, %~dpn1, %~1:2, %%i, %%~i + { pattern = "[!=()%>&%^/\\@]", type = "operator" }, -- operators + { pattern = "-?%.?%d+f?", type = "number" }, -- integer numbers + { pattern = { '"', '"', '\\' }, type = "string" }, -- "strings" + { pattern = "[%a_][%w_]*", type = "normal" }, + { pattern = ":eof", type = "keyword" }, -- not quite as intended, but ok for now + }, + symbols = prepare_symbols(symtable), +} diff --git a/debian/extra/plugins/language_bend.lua b/debian/extra/plugins/language_bend.lua new file mode 100644 index 0000000..5792084 --- /dev/null +++ b/debian/extra/plugins/language_bend.lua @@ -0,0 +1,65 @@ +-- Author: Rohan Vashisht https://github.com/RohanVashisht1234 + +-- mod-version:3 + +local syntax = require "core.syntax" + +syntax.add { + name = "Bend", + files = { "%.bend$" }, + comment = "#", + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = { '"', '"' }, type = "string" }, + { pattern = { "'", "'" }, type = "string" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "[%+%-=/%*%^%%<>!|&]", type = "operator" }, + { pattern = "def()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "data()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "let()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "Some()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "bend()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "object()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "fold()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "open()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "do()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "identity()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "lambda()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + }, + symbols = { + ["def"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["return"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["when"] = "keyword", + ["match"] = "keyword", + ["λ"] = "keyword", + ["Some"] = "keyword", + ["data"] = "keyword", + ["let"] = "keyword", + ["use"] = "keyword", + ["object"] = "keyword", + ["fold"] = "keyword", + ["open"] = "keyword", + ["do"] = "keyword", + ["bind"] = "keyword", + ["Name"] = "keyword", + ["identity"] = "keyword", + ["Bool"] = "keyword", + ["ask"] = "keyword", + ["with"] = "keyword", + ["bend"] = "keyword2", + ["None"] = "keyword2", + ["Nil"] = "keyword2", + ["Result"] = "keyword2", + ["type"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + } +} diff --git a/debian/extra/plugins/language_bib.lua b/debian/extra/plugins/language_bib.lua new file mode 100644 index 0000000..1850ec6 --- /dev/null +++ b/debian/extra/plugins/language_bib.lua @@ -0,0 +1,23 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "BibTeX", + files = { "%.bib$" }, + comment = "%%", + patterns = { + { pattern = {"%%", "\n"}, type = "comment" }, + { pattern = "@%a+", type = "keyword" }, + { pattern = "%a+%s=", type = "keyword2" }, + }, + symbols = { + ["author"] = "keyword", + ["doi"] = "keyword", + ["issue"] = "keyword", + ["journal"] = "keyword", + ["month"] = "keyword", + ["numpages"] = "keyword", + ["pages"] = "keyword", + ["publisher"] = "keyword", + } +} diff --git a/debian/extra/plugins/language_blade.lua b/debian/extra/plugins/language_blade.lua new file mode 100644 index 0000000..0b82387 --- /dev/null +++ b/debian/extra/plugins/language_blade.lua @@ -0,0 +1,57 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Blade", + files = { "%.b$" }, + comment = "#", + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "%d+%.%d+", type = "number" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "0c[0-8]+", type = "number" }, + { pattern = "0c[01]+", type = "number" }, + { pattern = "%d+", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "%a[%w_]+", type = "symbol" }, + }, + -- https://bladelang.com/tutorial/reserved.html#reserved-words + symbols = { + ["and"] = "keyword", + ["continue"] = "keyword", + ["else"] = "keyword", + ["in"] = "keyword", + ["self"] = "keyword2", + ["when"] = "keyword", + ["as"] = "keyword", + ["def"] = "keyword", + ["iter"] = "keyword", + ["static"] = "keyword", + ["while"] = "keyword", + ["assert"] = "keyword", + ["default"] = "keyword", + ["finally"] = "keyword", + ["break"] = "keyword", + ["die"] = "keyword", + ["for"] = "keyword", + ["or"] = "keyword", + ["try"] = "keyword", + ["catch"] = "keyword", + ["do"] = "keyword", + ["if"] = "keyword", + ["parent"] = "keyword", + ["using"] = "keyword", + ["class"] = "keyword", + ["echo"] = "function", + ["import"] = "keyword", + ["return"] = "keyword", + ["var"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_blueprint.lua b/debian/extra/plugins/language_blueprint.lua new file mode 100644 index 0000000..98d6b06 --- /dev/null +++ b/debian/extra/plugins/language_blueprint.lua @@ -0,0 +1,90 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Blueprint", + files = { "%.blp$", }, + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + + -- Comments + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + + -- Strings + { pattern = { "'", "'", "\\"}, type = "string" }, + { pattern = { '"', '"', "\\" }, type = "string" }, + + -- Numbers + { pattern = "%.?%d+", type = "number" }, + + -- Child type + { pattern = "%[.*%]", type = "literal" }, + + -- Operators + { pattern = "%$", type = "operator" }, + { pattern = "=>%s*%$().*()%(%)", type = { "operator", "function", "normal" } }, + + -- Properties + { pattern = "[%w-_]+()%s*:", type = { "keyword", "normal" } }, + + -- Classes + { pattern = "[%w_-%.]+%s*(){", type = { "keyword2", "normal"} }, + { pattern = "[%w_-%.]+%s*()[%w_-]+%s*{", type = { "keyword2", "normal"} }, + + -- Symbols + { pattern = "[%w-_]+", type = "symbol" }, + + }, + symbols = { + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + + -- Import statements + ["using"] = "keyword", + + -- Keywords + ["after"] = "keyword", + ["bidirectional"] = "keyword", + ["bind-property"] = "keyword", + ["bind"] = "keyword", + ["default"] = "keyword", + ["destructive"] = "keyword", + ["disabled"] = "keyword", + ["inverted"] = "keyword", + ["no-sync-create"] = "keyword", + ["suggested"] = "keyword", + ["swapped"] = "keyword", + ["sync-create"] = "keyword", + ["template"] = "keyword", + + -- Menus + ["menu"] = "keyword", + ["submenu"] = "keyword", + ["section"] = "keyword", + + -- Nested blocks + ["responses"] = "keyword2", + ["items"] = "keyword2", + ["mime-types"] = "keyword2", + ["patterns"] = "keyword2", + ["suffixes"] = "keyword2", + ["marks"] = "keyword2", + ["widgets"] = "keyword2", + ["strings"] = "keyword2", + ["styles"] = "keyword2", + ["accessibility"] = "keyword2", + ["setters"] = "keyword2", + ["layout"] = "keyword2", + ["item"] = "keyword2", + ["condition"] = "keyword2", + ["mark"] = "keyword2", + + -- Translated strings + ["_"] = "operator", + ["C_"] = "operator", + } +} + diff --git a/debian/extra/plugins/language_brainfuck.lua b/debian/extra/plugins/language_brainfuck.lua new file mode 100644 index 0000000..31f2427 --- /dev/null +++ b/debian/extra/plugins/language_brainfuck.lua @@ -0,0 +1,23 @@ +-- Author: Rohan Vashisht: https://github.com/RohanVashisht1234/ + +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Brainfuck", -- tested ok + files = { + "%.bf$", -- tested ok + }, + patterns = { + { pattern = '%[', type = 'operator' }, -- tested ok + { pattern = '%]', type = 'operator' }, -- tested ok + { pattern = '%-', type = 'keyword' }, -- tested ok + { pattern = '<', type = 'keyword2' }, -- tested ok + { pattern = '>', type = 'keyword2' }, -- tested ok + { pattern = '+', type = 'string' }, -- tested ok + { pattern = ',', type = 'literal' }, -- tested ok + { pattern = '%.', type = 'string' }, -- tested ok + { pattern = '[^%-%.<>%+,%[%]]+', type = 'comment' }, -- tested ok + }, + symbols = {}, +} diff --git a/debian/extra/plugins/language_buzz.lua b/debian/extra/plugins/language_buzz.lua new file mode 100644 index 0000000..c00bf1a --- /dev/null +++ b/debian/extra/plugins/language_buzz.lua @@ -0,0 +1,76 @@ +-- Author: Rohan Vashisht: https://github.com/rohanvashisht1234/ + + +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Buzz", -- tested ok + files = { "%.buzz$" }, -- tested ok + comment = "|", -- tested ok + patterns = { + { pattern = { '"', '"', '\\' }, type = "string" }, -- tested ok + { pattern = "|.*", type = "comment" }, -- tested ok + { pattern = "[!%-/*?:=><]", type = "operator" }, -- tested ok + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- tested ok + { pattern = "const()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "object()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "var()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "-?%d+[%d%.eE_]*", type = "number" }, -- tested ok + { pattern = "-?%.?%d+", type = "number" }, -- tested ok + { pattern = "[%a_][%w_]*", type = "normal" }, -- tested ok + }, + symbols = { + ["bool"] = "keyword", -- tested ok + ["ud"] = "keyword", -- tested ok + ["float"] = "keyword", -- tested ok + ["zdef"] = "keyword", -- tested ok + ["resolve"] = "keyword", -- tested ok + ["yield"] = "keyword", -- tested ok + ["resume"] = "keyword", -- tested ok + ["export"] = "keyword", -- tested ok + ["void"] = "keyword", -- tested ok + ["protocol"] = "keyword", -- tested ok + ["do"] = "keyword", -- tested ok + ["enum"] = "keyword", -- tested ok + ["test"] = "keyword", -- tested ok + ["extern"] = "keyword", -- tested ok + ["object"] = "keyword", -- tested ok + ["foreach"] = "keyword", -- tested ok + ["is"] = "keyword", -- tested ok + ["return"] = "keyword", -- tested ok + ["continue"] = "keyword", -- tested ok + ["for"] = "keyword", -- tested ok + ["lambda"] = "keyword", -- tested ok + ["try"] = "keyword", -- tested ok + ["fun"] = "keyword", -- tested ok + ["type"] = "keyword", -- tested ok + ["while"] = "keyword", -- tested ok + ["and"] = "keyword", -- tested ok + ["global"] = "keyword", -- tested ok + ["not"] = "keyword2", -- tested ok + ["any"] = "keyword", -- tested ok + ["as"] = "keyword", -- tested ok + ["if"] = "keyword", -- tested ok + ["or"] = "keyword", -- tested ok + ["else"] = "keyword", -- tested ok + ["match"] = "keyword", -- tested ok + ["pat"] = "keyword", -- tested ok + ["import"] = "keyword", -- tested ok + ["str"] = "keyword", -- tested ok + ["var"] = "keyword", -- tested ok + ["catch"] = "keyword", -- tested ok + ["typeof"] = "keyword", -- tested ok + ["int"] = "keyword", -- tested ok + ["const"] = "keyword", -- tested ok + ["namespace"] = "keyword", -- tested ok + ["this"] = "keyword2", -- tested ok + ["null"] = "literal", -- tested ok + ["true"] = "literal", -- tested ok + ["false"] = "literal", -- tested ok + ["in"] = "literal", -- tested ok + ["static"] = "keyword2", -- tested ok + ["std"] = "keyword2", -- tested ok + ["io"] = "keyword2", -- tested ok + } +} diff --git a/debian/extra/plugins/language_c7.lua b/debian/extra/plugins/language_c7.lua new file mode 100644 index 0000000..2c3e2fc --- /dev/null +++ b/debian/extra/plugins/language_c7.lua @@ -0,0 +1,80 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "cel7", + files = "%.c7$", + comment = ";", + patterns = { + { pattern = ";.*", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "0x4000", type = "literal" }, + { pattern = "0x4040", type = "literal" }, + { pattern = "0x52a0", type = "literal" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "'", type = "symbol" }, + { pattern = "=", type = "symbol" }, + { pattern = "<=?", type = "symbol" }, + { pattern = "[%+-%*/]", type = "symbol" }, + { pattern = "//", type = "keyword2" }, + { pattern = "%%", type = "keyword2" }, + { pattern = "%f[^(][^()'%s\"]+", type = "function" }, + { pattern = "[^()'%s\"]+", type = "symbol" }, + }, + symbols = { + ["let"] = "keyword", + ["="] = "operator", + ["if"] = "keyword", + ["fn"] = "keyword", + ["mac"] = "keyword", + ["while"] = "keyword", + ["quote"] = "keyword", + ["'"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["do"] = "keyword", + ["cons"] = "keyword", + ["car"] = "keyword", + ["cdr"] = "keyword", + ["setcar"] = "keyword", + ["setcdr"] = "keyword", + ["list"] = "keyword", + ["not"] = "keyword", + ["is"] = "keyword", + ["atom"] = "keyword", + ["print"] = "keyword", + ["<"] = "operator", + ["<="] = "operator", + ["="] = "operator", + ["+"] = "operator", + ["-"] = "operator", + ["*"] = "operator", + ["/"] = "operator", + ["nil"] = "literal", + ["t"] = "literal", + + -- reserved variables (config) + ["title"] = "keyword2", + ["width"] = "keyword2", + ["height"] = "keyword2", + ["debug"] = "keyword2", + + -- callbacks + ["init"] = "keyword2", + ["step"] = "keyword2", + ["keydown"] = "keyword2", + ["keyup"] = "keyword2", + + -- built-in functions + ["quit"] = "keyword2", + ["rand"] = "keyword2", + ["poke"] = "keyword2", + ["peek"] = "keyword2", + ["color"] = "keyword2", + ["put"] = "keyword2", + ["get"] = "keyword2", + ["fill"] = "keyword2", + } +} diff --git a/debian/extra/plugins/language_caddyfile.lua b/debian/extra/plugins/language_caddyfile.lua new file mode 100644 index 0000000..d600aa0 --- /dev/null +++ b/debian/extra/plugins/language_caddyfile.lua @@ -0,0 +1,104 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + files = { PATHSEP .. "Caddyfile$" }, + comment = "#", + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + -- Matcher definition + { pattern = "@[%w_]+", type = "operator" }, + -- Snippet + { pattern = "%(%g+%)", type = "operator" }, + -- Properties + { pattern = "^[%a_][%w_]*()%s+%f[%g]", + type = { "function", "normal" } + }, + { pattern = "^[%a_][%w_]*()%s+$", + type = { "function", "normal" } + }, + { pattern = "^%s*()[%a_][%w_]*()%s+$", + type = { "normal", "function", "normal" } + }, + { pattern = "^%s*()[%a_][%w_]*()%s+%f[%g]", + type = { "normal", "function", "normal" } + }, + -- Environment variables + { pattern = "{()%$[%w_]+():()[%w_]+()}", + type = { "operator", "keyword2", "operator", "keyword2", "operator" } + }, + { pattern = "{()%$[%w_]+()}", + type = { "operator", "keyword2", "operator" } + }, + -- Place holder + { pattern = "{%g-}", type = "keyword2" }, + -- Operators + { pattern = "[+%-,:]", type = "operator" }, + -- IP Address + { pattern = "%d+%.%d+%.%d+%.%d+", type = "literal" }, + -- Path /path/subpath + { pattern = "/[%w%./]+", type = "literal" }, + -- Wildcard domain *.levels + { pattern = "%*()[%w.]+", + type = { "operator", "literal" } + }, + -- Match Operator + { pattern = "%*+", type = "operator" }, + -- Domain leve1.level2 + { pattern = "https?://[%w%./%*]+", type = "literal" }, + -- Domain leve1.level2 + { pattern = "%w+%.[%w%.]+", type = "literal" }, + -- Number + { pattern = "%d+[mhskbi]*", type = "number" }, + -- Everything else for symbols to work + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["true"] = "literal", + ["false"] = "literal", + ["localhost"] = "literal", + + -- built-in directives + ["abort"] = "keyword", + ["acme_server"] = "keyword", + ["basicauth"] = "keyword", + ["bind"] = "keyword", + ["encode"] = "keyword", + ["error"] = "keyword", + ["file_server"] = "keyword", + ["forward_auth"] = "keyword", + ["handle"] = "keyword", + ["handle_errors"] = "keyword", + ["handle_path"] = "keyword", + ["header"] = "keyword", + ["import"] = "keyword", + ["log"] = "keyword", + ["method"] = "keyword", + ["map"] = "keyword", + ["metrics"] = "keyword", + ["php_fastcgi"] = "keyword", + ["push"] = "keyword", + ["redir"] = "keyword", + ["request_body"] = "keyword", + ["request_header"] = "keyword", + ["respond"] = "keyword", + ["reverse_proxy"] = "keyword", + ["rewrite"] = "keyword", + ["root"] = "keyword", + ["route"] = "keyword", + ["templates"] = "keyword", + ["tls"] = "keyword", + ["tracing"] = "keyword", + ["try_files"] = "keyword", + ["uri"] = "keyword", + ["vars"] = "keyword", + + -- Module directives + ["cgi"] = "keyword", + ["ssh"] = "keyword", + ["exec"] = "keyword", + ["supervisor"] = "keyword", + ["layer4"] = "keyword", + }, +} diff --git a/debian/extra/plugins/language_carbon.lua b/debian/extra/plugins/language_carbon.lua new file mode 100644 index 0000000..ea8c621 --- /dev/null +++ b/debian/extra/plugins/language_carbon.lua @@ -0,0 +1,83 @@ +-- Author: Rohan Vashisht: https://github.com/rohanvashisht1234/ + +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Carbon", -- tested ok + files = { + "%.carbon$" -- tested ok + }, + comment = "//", -- tested ok + patterns = { + { pattern = { '"', '"', '\\' }, type = "string" }, -- tested ok + { pattern = { '"""', '"""', '\\' }, type = "string" }, -- tested ok + { pattern = { "'''", "'''", '\\' }, type = "string" }, -- tested ok + { pattern = "//.*", type = "comment" }, -- tested ok + { pattern = "[!%-/*?:=><+]", type = "operator" }, -- tested ok + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- tested ok + { pattern = "packages()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "let()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "import()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "impl()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "class()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "var()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "package()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "-?%d+[%d%.eE_]*", type = "number" }, -- tested ok + { pattern = "-?%.?%d+", type = "number" }, -- tested ok + { pattern = "[%a_][%w_]*", type = "normal" }, -- tested ok + }, + symbols = { + ["package"] = "keyword", -- tested ok + ["import"] = "keyword", -- tested ok + ["fn"] = "keyword", -- tested ok + ["var"] = "keyword", -- tested ok + ["for"] = "keyword", -- tested ok + ["return"] = "keyword", -- tested ok + ["class"] = "keyword", -- tested ok + ["api"] = "keyword", -- tested ok + ["i8"] = "keyword", -- tested ok + ["i16"] = "keyword", -- tested ok + ["i32"] = "keyword", -- tested ok + ["i64"] = "keyword", -- tested ok + ["i128"] = "keyword", -- tested ok + ["i256"] = "keyword", -- tested ok + ["u8"] = "keyword", -- tested ok + ["u16"] = "keyword", -- tested ok + ["u32"] = "keyword", -- tested ok + ["u64"] = "keyword", -- tested ok + ["u128"] = "keyword", -- tested ok + ["u256"] = "keyword", -- tested ok + ["f8"] = "keyword", -- tested ok + ["f16"] = "keyword", -- tested ok + ["f32"] = "keyword", -- tested ok + ["f64"] = "keyword", -- tested ok + ["f128"] = "keyword", -- tested ok + ["if"] = "keyword", -- tested ok + ["else"] = "keyword", -- tested ok + ["auto"] = "keyword", -- tested ok + ["let"] = "keyword", -- tested ok + ["File"] = "keyword", -- tested ok + ["while"] = "keyword", -- tested ok + ["match"] = "keyword", -- tested ok + ["case"] = "keyword", -- tested ok + ["default"] = "keyword", -- tested ok + ["returned"] = "keyword", -- tested ok + ["base"] = "keyword", -- tested ok + ["bool"] = "keyword", -- tested ok + ["virtual"] = "keyword", -- tested ok + ["abstract"] = "keyword", -- tested ok + ["String"] = "keyword", -- tested ok + + ["impl"] = "keyword2", -- tested ok + ["extend"] = "keyword", -- tested ok + ["partial"] = "keyword2", -- tested ok + ["Self"] = "keyword", -- tested ok + ["Int"] = "keyword", -- tested ok + ["UInt"] = "keyword", -- tested ok + ["Base"] = "keyword", -- tested ok + ["template"] = "keyword2", -- tested ok + ["true"] = "keyword2", -- tested ok + ["false"] = "keyword2", -- tested ok + } +} diff --git a/debian/extra/plugins/language_clojure.lua b/debian/extra/plugins/language_clojure.lua new file mode 100644 index 0000000..1344718 --- /dev/null +++ b/debian/extra/plugins/language_clojure.lua @@ -0,0 +1,56 @@ +-- Author: Rohan Vashisht: https://github.com/RohanVashisht1234/ + +-- mod-version:3 +local syntax = require "core.syntax" +syntax.add { + name = "Clojure", + comment = ";;", + files = { + "%.clj$", + "%.cljs$", + "%.clc$", + "%.edn$", + }, + patterns = { + { pattern = ';;.*', type = 'comment' }, -- Single-line Comment + { pattern = ';.*', type = 'comment' }, -- Single-line Comment + { pattern = { '#"', '"', '\\' }, type = 'string' }, -- Multiline String + { pattern = { '"', '"', '\\' }, type = 'string' }, -- Multiline String + { pattern = { '"""', '"""', '\\' }, type = 'string' }, -- Multiline String + { pattern = ':[%a_][%w_/%-]*', type = 'keyword2' }, -- word after ':' a.k.a (Var metadata) + { pattern = '[%a_][%w_]*()%.()[%a_][%w_/%-]*', type = { 'keyword', 'operator', 'keyword2' } }, -- Things like something.something + { pattern = "%(()def()%s+()[%a_][%w_%-]*", type = { "normal", "keyword", "literal", 'literal' } }, -- function definition + { pattern = "%(()def[%a_][%w_]*()%s+()[%a_][%w_%-]*", type = { "normal", "keyword", "literal", 'literal' } }, -- function definition but with something along with def like: defn, defmacro etc. + { pattern = '%(()require()%s+()[%a_][%w_]*', type = { 'normal', 'keyword', 'literal', 'literal' } }, -- highlight the word after require keyword + { pattern = '%(()[%a_][%w_/]*', type = { 'normal', 'literal' } }, -- patterns that are like this: (my_function/subdir_1) + { pattern = '-?0x%x+', type = 'number' }, -- Hexadecimal + { pattern = '-?%d+[%d%.eE]*f?', type = 'number' }, -- Floating-point numbers + { pattern = '-?%.?%d+f?', type = 'number' }, -- Floating-point numbers + { pattern = '[!%#%$%%&*+./%<=>%?@\\%^|%-~:]', type = 'operator' }, -- Character classes + { pattern = "[%a_'][%w_']*", type = 'normal' }, -- Normal + }, + symbols = { + ['def'] = 'keyword', -- tested ok + ['defn'] = 'keyword', -- tested ok + ['str'] = 'keyword', -- tested ok + ['fn'] = 'keyword', -- tested ok + ['println'] = 'keyword', -- tested ok + ['if'] = 'keyword', -- tested ok + ['cond'] = 'keyword', -- tested ok + ['vector'] = 'keyword', -- tested ok + ['apply'] = 'keyword', -- tested ok + ['String'] = 'keyword', -- tested ok + ['ns'] = 'keyword', -- tested ok + ['try'] = 'keyword', -- tested ok + ['let'] = 'keyword', -- tested ok + ['get'] = 'keyword', -- tested ok + ['catch'] = 'keyword', -- tested ok + ['Retention'] = 'keyword', -- tested ok + ['Deprecated'] = 'keyword', -- tested ok + ['require'] = 'keyword2', -- tested ok + ['true'] = 'keyword2', -- tested ok + ['false'] = 'keyword2', -- tested ok + ['nil'] = 'literal', -- tested ok + ['int'] = 'literal', -- tested ok + }, +} diff --git a/debian/extra/plugins/language_cmake.lua b/debian/extra/plugins/language_cmake.lua new file mode 100644 index 0000000..05c45a3 --- /dev/null +++ b/debian/extra/plugins/language_cmake.lua @@ -0,0 +1,19 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "CMake", + files = { "%.cmake$", PATHSEP .. "CMakeLists%.txt$" }, + comment = "#", + block_comment = { "#[[", "]]" }, + patterns = { + { pattern = { '#%[=*%[', '%]=*%]' }, type = "comment" }, + { pattern = "#.*", type = "comment" }, + { pattern = { '%[=*%[', '%]=*%]' }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "normal" }, + { pattern = "%${[%a_][%w_]*%}", type = "operator" }, + }, + symbols = {}, +} diff --git a/debian/extra/plugins/language_csharp.lua b/debian/extra/plugins/language_csharp.lua new file mode 100644 index 0000000..c137b63 --- /dev/null +++ b/debian/extra/plugins/language_csharp.lua @@ -0,0 +1,122 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "C#", + files = "%.cs$", + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "[%$%@]?\"", '"', '\\' }, type = "string" }, -- string interpolation and verbatim + { pattern = "'\\x%x?%x?%x?%x'", type = "string" }, -- character hexadecimal escape sequence + { pattern = "'\\u%x%x%x%x'", type = "string" }, -- character unicode escape sequence + { pattern = "'\\?.'", type = "string" }, -- character literal + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "%?%?", type = "operator" }, -- ?? null-coalescing + { pattern = "%?%.", type = "operator" }, -- ?. null-conditional + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- keywords and contextual keywords + ["abstract"] = "keyword", + ["as"] = "keyword", + ["add"] = "keyword", + ["await"] = "keyword", + ["base"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["checked"] = "keyword", + ["class"] = "keyword", + ["record"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["default"] = "keyword", + ["delegate"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["enum"] = "keyword", + ["event"] = "keyword", + ["explicit"] = "keyword", + ["extern"] = "keyword", + ["finally"] = "keyword", + ["fixed"] = "keyword", + ["for"] = "keyword", + ["foreach"] = "keyword", + ["get"] = "keyword", + ["goto"] = "keyword", + ["if"] = "keyword", + ["implicit"] = "keyword", + ["in"] = "keyword", + ["interface"] = "keyword", + ["internal"] = "keyword", + ["is"] = "keyword", + ["lock"] = "keyword", + ["namespace"] = "keyword", + ["new"] = "keyword", + ["operator"] = "keyword", + ["out"] = "keyword", + ["override"] = "keyword", + ["remove"] = "keyword", + ["params"] = "keyword", + ["partial"] = "keyword", + ["private"] = "keyword", + ["protected"] = "keyword", + ["dynamic"] = "keyword", + ["public"] = "keyword", + ["readonly"] = "keyword", + ["ref"] = "keyword", + ["return"] = "keyword", + ["sealed"] = "keyword", + ["set"] = "keyword", + ["sizeof"] = "keyword", + ["stackalloc"] = "keyword", + ["static"] = "keyword", + ["struct"] = "keyword", + ["switch"] = "keyword", + ["this"] = "keyword", + ["throw"] = "keyword", + ["try"] = "keyword", + ["typeof"] = "keyword", + ["unchecked"] = "keyword", + ["unsafe"] = "keyword", + ["using"] = "keyword", + ["var"] = "keyword", + ["value"] = "keyword", + ["global"] = "keyword", + ["virtual"] = "keyword", + ["void"] = "keyword", + ["volatile"] = "keyword", + ["where"] = "keyword", + ["when"] = "keyword", + ["while"] = "keyword", + ["yield"] = "keyword", + -- types + ["bool"] = "keyword2", + ["byte"] = "keyword2", + ["char"] = "keyword2", + ["decimal"] = "keyword2", + ["double"] = "keyword2", + ["float"] = "keyword2", + ["int"] = "keyword2", + ["long"] = "keyword2", + ["object"] = "keyword2", + ["sbyte"] = "keyword2", + ["short"] = "keyword2", + ["string"] = "keyword2", + ["uint"] = "keyword2", + ["ulong"] = "keyword2", + ["ushort"] = "keyword2", + -- literals + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_cue.lua b/debian/extra/plugins/language_cue.lua new file mode 100644 index 0000000..50f01f3 --- /dev/null +++ b/debian/extra/plugins/language_cue.lua @@ -0,0 +1,41 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "CUE", + files = "%.cue$", + comment = "//", + patterns = { + { pattern = "//.*", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "`", "`", '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0[oO_][0-7]+i?", type = "number" }, + { pattern = "-?0x[%x_]+i?", type = "number" }, + { pattern = "-?%d+_%di?", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?i?", type = "number" }, + { pattern = "-?%.?%d+f?i?", type = "number" }, + { pattern = "[%a_][%w_]*%.", type = "literal" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "#[%a][%w_]*", type = "keyword2" }, + -- operators + { pattern = "[%+%-=/%*%^%%<>!~|&%?:%.]", type = "operator" }, + }, + symbols = { + ["package"] = "keyword", + ["import"] = "keyword", + ["let"] = "keyword", + ["for"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["string"] = "keyword2", + ["bool"] = "keyword2", + ["number"] = "keyword2", + ["uint32"] = "keyword2", + ["int32"] = "keyword2", + ["uint16"] = "keyword2", + ["int16"] = "keyword2", + ["uint8"] = "keyword2", + ["float"] = "keyword2", + } +} diff --git a/debian/extra/plugins/language_d.lua b/debian/extra/plugins/language_d.lua new file mode 100644 index 0000000..282c026 --- /dev/null +++ b/debian/extra/plugins/language_d.lua @@ -0,0 +1,135 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "D", + files = { "%.d$", "%.di$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { "/%+", "%+/" }, type = "comment" }, + { pattern = { '`', '`', '\\' }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x[%x_]+", type = "number" }, + { pattern = "-?[%d_]+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&%$]+", type = "operator" }, + { pattern = "[%a_][%w_]*!?()[%(.]", type = {"function", "normal"} }, -- highlight templates + { pattern = "@safe", type = "keyword" }, + { pattern = "@trusted", type = "keyword" }, + { pattern = "@nogc", type = "keyword" }, + }, + symbols = { + ["abstract"] = "keyword", + ["alias"] = "keyword", + ["align"] = "keyword", + ["asm"] = "keyword", + ["assert"] = "keyword", + ["auto"] = "keyword", + ["body"] = "keyword", + ["bool"] = "keyword2", + ["break"] = "keyword", + ["byte"] = "keyword2", + ["case"] = "keyword", + ["cast"] = "keyword", + ["catch"] = "keyword", + ["cdouble"] = "keyword2", + ["cent"] = "keyword2", + ["cfloat"] = "keyword2", + ["char"] = "keyword2", + ["class"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["creal"] = "keyword2", + ["dchar"] = "keyword2", + ["debug"] = "keyword", + ["default"] = "keyword", + ["delegate"] = "keyword", + ["deprecated"] = "keyword", + ["do"] = "keyword", + ["double"] = "keyword2", + ["else"] = "keyword", + ["enum"] = "keyword", + ["export"] = "keyword", + ["extern"] = "keyword", + ["false"] = "literal", + ["final"] = "keyword", + ["finally"] = "keyword", + ["float"] = "keyword2", + ["for"] = "keyword", + ["foreach"] = "keyword", + ["foreach_reverse"] = "keyword", + ["function"] = "keyword", + ["goto"] = "keyword", + ["idouble"] = "keyword2", + ["if"] = "keyword", + ["ifloat"] = "keyword2", + ["immutable"] = "keyword", + ["import"] = "keyword", + ["in"] = "keyword", + ["inout"] = "keyword", + ["int"] = "keyword2", + ["interface"] = "keyword", + ["invariant"] = "keyword", + ["ireal"] = "keyword2", + ["is"] = "keyword", + ["lazy"] = "keyword", + ["long"] = "keyword2", + ["macro"] = "keyword", + ["mixin"] = "keyword", + ["module"] = "keyword", + ["new"] = "keyword", + ["nothrow"] = "keyword", + ["null"] = "literal", + ["out"] = "keyword", + ["override"] = "keyword", + ["package"] = "keyword", + ["pragma"] = "keyword", + ["private"] = "keyword", + ["protected"] = "keyword", + ["public"] = "keyword", + ["pure"] = "keyword", + ["real"] = "keyword2", + ["ref"] = "keyword", + ["return"] = "keyword", + ["scope"] = "keyword", + ["shared"] = "keyword", + ["short"] = "keyword2", + ["static"] = "keyword", + ["struct"] = "keyword", + ["super"] = "keyword", + ["switch"] = "keyword", + ["synchronized"] = "keyword", + ["template"] = "keyword", + ["this"] = "keyword", + ["throw"] = "keyword", + ["true"] = "literal", + ["try"] = "keyword", + ["typeid"] = "keyword", + ["typeof"] = "keyword", + ["ubyte"] = "keyword2", + ["ucent"] = "keyword2", + ["uint"] = "keyword2", + ["ulong"] = "keyword2", + ["union"] = "keyword", + ["unittest"] = "keyword", + ["ushort"] = "keyword2", + ["version"] = "keyword", + ["void"] = "keyword", + ["wchar"] = "keyword2", + ["while"] = "keyword", + ["with"] = "keyword", + ["__FILE__"] = "keyword", + ["__FILE_FULL_PATH__"] = "keyword", + ["__MODULE__"] = "keyword", + ["__LINE__"] = "keyword", + ["__FUNCTION__"] = "keyword", + ["__PRETTY_FUNCTION__"] = "keyword", + ["__gshared"] = "keyword", + ["__traits"] = "keyword", + ["__vector"] = "keyword", + ["__parameters"] = "keyword", + }, +} diff --git a/debian/extra/plugins/language_dart.lua b/debian/extra/plugins/language_dart.lua new file mode 100644 index 0000000..03274b2 --- /dev/null +++ b/debian/extra/plugins/language_dart.lua @@ -0,0 +1,64 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Dart", + files = { "%.dart$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = "///.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "%?%?", type = "operator" }, + { pattern = "%?%.", type = "operator" }, + { pattern = { "[%$%@]?\"", '"', '\\' }, type = "string" }, + { pattern = "'\\x%x?%x?%x?%x'", type = "string" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["await"] = "keyword", + ["bool"] = "keyword2", + ["break"] = "keyword", + ["case"] = "keyword", + ["class"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["default"] = "keyword", + ["do"] = "keyword", + ["double"] = "keyword2", + ["dynamic"] = "keyword2", + ["else"] = "keyword", + ["enum"] = "keyword", + ["false"] = "literal", + ["final"] = "keyword", + ["finally"] = "keyword", + ["for"] = "keyword", + ["Function"] = "keyword2", + ["if"] = "keyword", + ["in"] = "keyword", + ["int"] = "keyword2", + ["List"] = "keyword2", + ["Map"] = "keyword2", + ["new"] = "keyword", + ["null"] = "literal", + ["part of"] = "keyword", + ["print"] = "keyword", + ["return"] = "keyword", + ["static"] = "keyword", + ["String"] = "keyword2", + ["switch"] = "keyword", + ["then"] = "keyword", + ["this"] = "keyword2", + ["true"] = "literal", + ["void"] = "keyword", + ["while"] = "keyword", + }, +} + diff --git a/debian/extra/plugins/language_diff.lua b/debian/extra/plugins/language_diff.lua new file mode 100644 index 0000000..c4c5a90 --- /dev/null +++ b/debian/extra/plugins/language_diff.lua @@ -0,0 +1,70 @@ +-- mod-version:3 +local syntax = require "core.syntax" +local style = require "core.style" +local common = require "core.common" + +-- we need these symbol types to have uniform colors +style.syntax["diff_add"] = { common.color "#72b886" } +style.syntax["diff_del"] = { common.color "#F36161" } + +syntax.add { + name = "Diff", + files = { "%.diff$", "%.patch$", "%.rej$" }, + headers = "^diff %-", + patterns = { + -- Method the patch was generated with and source/target files + { regex = "^diff .+", type = "function" }, + -- Seen for changing the file permissions + { regex = "^new .+", type = "comment" }, + -- Usually holds starting and ending commit + { regex = "^index .+", type = "comment" }, + -- Position to patch + { + pattern = "@@.-@@ ().+", --with heading + type = { "number", "string" } + }, + { + regex = "^@@ [\\d,\\-\\+ ]+ @@\n", --wihtout heading + type = "number" + }, + -- Other position to patch formats + { + regex = "^-{3} [\\d]+,[\\d]+ \\-{4}\n", + type = "number" + }, + { + regex = "^\\*{3} [\\d]+,[\\d]+ \\*{4}\n", + type = "number" + }, + -- Source and target file + { regex = "^-{3} .+", type = "keyword" }, + { regex = "^\\+{3} .+", type = "keyword" }, + -- Rarely used source file indicator + { regex = "^\\*{3} .+", type = "keyword" }, + -- git patches seem to add 3 dashes to separate message from changed files + { regex = "^-{3}\n", type = "normal" }, + -- Addition and deletion of lines + { regex = "^-.*", type = "diff_del" }, + { regex = "^\\+.*", type = "diff_add" }, + { regex = "^<.*", type = "diff_del" }, + { regex = "^>.*", type = "diff_add" }, + -- Change between two lines + { regex = "^!.*", type = "number" }, + -- Stuff usually found on a authored patch heading + { + pattern = "From ()[a-fA-F0-9]+ ().+", + type = { "keyword", "number", "string" } + }, + { regex = "^[a-zA-Z\\-]+: ", type = "keyword" }, + -- Diff stats + { regex = "^ [\\d]+ files? changed", type = "function" }, + { regex = "[\\d]+ insertions?\\(\\+\\)", type = "diff_add" }, + { regex = "[\\d]+ deletions?\\(\\-\\)", type = "diff_del" }, + -- Match e-mail + { + pattern = ".*()<[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+%.[a-zA-Z0-9-.]+>", + type = {"string", "keyword2"} + }, + }, + symbols = {} +} diff --git a/debian/extra/plugins/language_edp.lua b/debian/extra/plugins/language_edp.lua new file mode 100644 index 0000000..0454288 --- /dev/null +++ b/debian/extra/plugins/language_edp.lua @@ -0,0 +1,645 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "FreeFEM++", + files = { + "%.edp$", "%.ffp$" + }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "0x%x+[%x']*", type = "number" }, + { pattern = "%d+[%d%.'eE]*f?", type = "number" }, + { pattern = "%.?%d+[%d']*f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|:&]", type = "operator" }, + { pattern = "##", type = "operator" }, + { pattern = "struct%s()[%a_][%w_]*", type = { "keyword", "keyword2" } }, + { pattern = "class%s()[%a_][%w_]*", type = { "keyword", "keyword2" } }, + { pattern = "union%s()[%a_][%w_]*", type = { "keyword", "keyword2" } }, + { pattern = "namespace%s()[%a_][%w_]*", type = { "keyword", "keyword2" } }, + -- static declarations + { + pattern = "static()%s+()inline", + type = { "keyword", "normal", "keyword" } + }, + { + pattern = "static()%s+()const", + type = { "keyword", "normal", "keyword" } + }, + { + pattern = "static()%s+()[%a_][%w_]*", + type = { "keyword", "normal", "literal" } + }, + -- match method type declarations + { + pattern = "[%a_][%w_]*()%s*()%**()%s*()[%a_][%w_]*()%s*()::", + type = { + "literal", "normal", "operator", "normal", + "literal", "normal", "operator" + } + }, + -- match function type declarations + { + pattern = "[%a_][%w_]*()%*+()%s+()[%a_][%w_]*%f[%(]", + type = { "literal", "operator", "normal", "function" } + }, + { + pattern = "[%a_][%w_]*()%s+()%*+()[%a_][%w_]*%f[%(]", + type = { "literal", "normal", "operator", "function" } + }, + { + pattern = "[%a_][%w_]*()%s+()[%a_][%w_]*%f[%(]", + type = { "literal", "normal", "function" } + }, + -- match variable type declarations + { + pattern = "[%a_][%w_]*()%*+()%s+()[%a_][%w_]*", + type = { "literal", "operator", "normal", "normal" } + }, + { + pattern = "[%a_][%w_]*()%s+()%*+()[%a_][%w_]*", + type = { "literal", "normal", "operator", "normal" } + }, + { + pattern = "[%a_][%w_]*()%s+()[%a_][%w_]*()%s*()[;,%[%)]", + type = { "literal", "normal", "normal", "normal", "normal" } + }, + { + pattern = "[%a_][%w_]*()%s+()[%a_][%w_]*()%s*()=", + type = { "literal", "normal", "normal", "normal", "operator" } + }, + { + pattern = "[%a_][%w_]*()&()%s+()[%a_][%w_]*", + type = { "literal", "operator", "normal", "normal" } + }, + { + pattern = "[%a_][%w_]*()%s+()&()[%a_][%w_]*", + type = { "literal", "normal", "operator", "normal" } + }, + -- Match scope operator element access + { + pattern = "[%a_][%w_]*()%s*()::", + type = { "literal", "normal", "operator" } + }, + -- Uppercase constants of at least 2 chars in len + { + pattern = "_?%u[%u_][%u%d_]*%f[%s%+%*%-%.%)%]}%?%^%%=/<>~|&;:,!]", + type = "number" + }, + -- Magic constants + { pattern = "__[%u%l]+__", type = "number" }, + -- all other functions + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + -- Macros + { + pattern = "^%s*#%s*define%s+()[%a_][%a%d_]*", + type = { "keyword", "symbol" } + }, + { + pattern = "#%s*include%s+()<.->", + type = { "keyword", "string" } + }, + { pattern = "%f[#]#%s*[%a_][%w_]*", type = "keyword" }, + -- Everything else to make the tokenizer work properly + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["alignof"] = "keyword", + ["alignas"] = "keyword", + ["and"] = "keyword", + ["and_eq"] = "keyword", + ["not"] = "keyword", + ["not_eq"] = "keyword", + ["or"] = "keyword", + ["or_eq"] = "keyword", + ["xor"] = "keyword", + ["xor_eq"] = "keyword", + ["private"] = "keyword", + ["protected"] = "keyword", + ["public"] = "keyword", + ["register"] = "keyword", + ["nullptr"] = "keyword", + ["operator"] = "keyword", + ["asm"] = "keyword", + ["bitand"] = "keyword", + ["bitor"] = "keyword", + ["catch"] = "keyword", + ["throw"] = "keyword", + ["try"] = "keyword", + ["class"] = "keyword", + ["compl"] = "keyword", + ["explicit"] = "keyword", + ["export"] = "keyword", + ["concept"] = "keyword", + ["consteval"] = "keyword", + ["constexpr"] = "keyword", + ["constinit"] = "keyword", + ["const_cast"] = "keyword", + ["dynamic_cast"] = "keyword", + ["reinterpret_cast"] = "keyword", + ["static_cast"] = "keyword", + ["static_assert"] = "keyword", + ["template"] = "keyword", + ["this"] = "keyword", + ["thread_local"] = "keyword", + ["requires"] = "keyword", + ["co_wait"] = "keyword", + ["co_return"] = "keyword", + ["co_yield"] = "keyword", + ["decltype"] = "keyword", + ["delete"] = "keyword", + ["friend"] = "keyword", + ["typeid"] = "keyword", + ["typename"] = "keyword", + ["mutable"] = "keyword", + ["override"] = "keyword", + ["virtual"] = "keyword", + ["using"] = "keyword", + ["namespace"] = "keyword", + ["new"] = "keyword", + ["noexcept"] = "keyword", + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["do"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["goto"] = "keyword", + ["struct"] = "keyword", + ["union"] = "keyword", + ["typedef"] = "keyword", + ["enum"] = "keyword", + ["extern"] = "keyword", + ["static"] = "keyword", + ["volatile"] = "keyword", + ["const"] = "keyword", + ["inline"] = "keyword", + ["case"] = "keyword", + ["default"] = "keyword", + ["auto"] = "keyword", + ["void"] = "keyword2", + ["int"] = "keyword2", + ["short"] = "keyword2", + ["long"] = "keyword2", + ["float"] = "keyword2", + ["double"] = "keyword2", + ["char"] = "keyword2", + ["unsigned"] = "keyword2", + ["bool"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["NULL"] = "literal", + ["wchar_t"] = "keyword2", + ["char8_t"] = "keyword2", + ["char16_t"] = "keyword2", + ["char32_t"] = "keyword2", + ["#include"] = "keyword", + ["#if"] = "keyword", + ["#ifdef"] = "keyword", + ["#ifndef"] = "keyword", + ["#elif"] = "keyword", + ["#else"] = "keyword", + ["#elseif"] = "keyword", + ["#endif"] = "keyword", + ["#define"] = "keyword", + ["#warning"] = "keyword", + ["#error"] = "keyword", + ["#pragma"] = "keyword", + ["end"] = "keyword", + ["element"] = "keyword", + ["label"] = "keyword", + ["measure"] = "keyword", + ["mesure"] = "keyword", + ["Element"] = "keyword", + ["whoinElement"] = "keyword", + ["region"] = "keyword", + ["R3"] = "keyword", + ["vertex"] = "keyword", + ["im"] = "keyword", + ["l1"] = "keyword", + ["l2"] = "keyword", + ["linfty"] = "keyword", + ["max"] = "keyword", + ["min"] = "keyword", + ["re"] = "keyword", + ["sum"] = "keyword", + ["quantile"] = "keyword", + ["sort"] = "keyword", + ["x"] = "keyword", + ["y"] = "keyword", + ["z"] = "keyword", + ["length"] = "keyword", + ["area"] = "keyword", + ["coef"] = "keyword", + ["diag"] = "keyword", + ["m"] = "keyword", + ["n"] = "keyword", + ["nbcoef"] = "keyword", + ["nnz"] = "keyword", + ["resize"] = "keyword", + ["size"] = "keyword", + ["imax"] = "keyword", + ["imin"] = "keyword", + ["N"] = "keyword", + ["P"] = "keyword", + ["nuTriangle"] = "keyword", + ["ndof"] = "keyword", + ["ndofK"] = "keyword", + ["nt"] = "keyword", + ["be"] = "keyword", + ["hmax"] = "keyword", + ["hmin"] = "keyword", + ["nbe"] = "keyword", + ["nv"] = "keyword", + ["bordermesure"] = "keyword", + ["eof"] = "keyword", + ["good"] = "keyword", + ["fixed"] = "keyword", + ["flush"] = "keyword", + ["noshowbase"] = "keyword", + ["noshowpos"] = "keyword", + ["precision"] = "keyword", + ["scientific"] = "keyword", + ["seekp"] = "keyword", + ["showbase"] = "keyword", + ["showpos"] = "keyword", + ["tellp"] = "keyword", + ["ARGV"] = "keyword", + ["CG"] = "keyword", + ["CPUTime"] = "keyword", + ["Cholesky"] = "keyword", + ["Cofactor"] = "keyword", + ["Crout"] = "keyword", + ["Edge03d"] = "keyword", + ["GMRES"] = "keyword", + ["HaveUMFPACK"] = "keyword", + ["LU"] = "keyword", + ["NaN"] = "keyword", + ["P0"] = "keyword", + ["P03d"] = "keyword", + ["P0VF"] = "keyword", + ["P0edge"] = "keyword", + ["P1"] = "keyword", + ["P13d"] = "keyword", + ["P1b"] = "keyword", + ["P1b3d"] = "keyword", + ["P1dc"] = "keyword", + ["P1nc"] = "keyword", + ["P2"] = "keyword", + ["P23d"] = "keyword", + ["P2b"] = "keyword", + ["P2dc"] = "keyword", + ["P2h"] = "keyword", + ["RT0"] = "keyword", + ["RT03d"] = "keyword", + ["RT0Ortho"] = "keyword", + ["RTmodif"] = "keyword", + ["UMFPACK"] = "keyword", + ["append"] = "keyword", + ["binary"] = "keyword", + ["hTriangle"] = "keyword", + ["havesparsesolver"] = "keyword", + ["inside"] = "keyword", + ["lenEdge"] = "keyword", + ["nTonEdge"] = "keyword", + ["nuEdge"] = "keyword", + ["pi"] = "keyword", + ["qf1pE"] = "keyword", + ["qf1pElump"] = "keyword", + ["qf1pT"] = "keyword", + ["qf1pTlump"] = "keyword", + ["qf2pE"] = "keyword", + ["qf2pT"] = "keyword", + ["qf2pT4P1"] = "keyword", + ["qf3pE"] = "keyword", + ["qf4pE"] = "keyword", + ["qf5pE"] = "keyword", + ["qf5pT"] = "keyword", + ["qf7pT"] = "keyword", + ["qf9pT"] = "keyword", + ["qfV1"] = "keyword", + ["qfV1lump"] = "keyword", + ["qfV2"] = "keyword", + ["qfV5"] = "keyword", + ["searchMethod"] = "keyword", + ["sparsesolver"] = "keyword", + ["sparsesolverSym"] = "keyword", + ["storagetotal"] = "keyword", + ["storageused"] = "keyword", + ["verbosity"] = "keyword", + ["version"] = "keyword", + ["volume"] = "keyword", + ["volumelevelset"] = "keyword", + ["wait"] = "keyword", + ["ShowAlloc"] = "keyword", + ["Newton"] = "keyword", + ["NoGraphicWindow"] = "keyword", + ["NoUseOfWait"] = "keyword", + ["SameMesh"] = "keyword", + ["Unique"] = "keyword", + ["arealevelset"] = "keyword", + ["average"] = "keyword", + ["chtmpdir"] = "keyword", + ["time"] = "keyword", + ["fill"] = "keyword", + ["value"] = "keyword", + ["nbiso"] = "keyword", + ["coeff"] = "keyword", + ["dataname"] = "keyword", + ["order"] = "keyword", + ["mpirank"] = "keyword", + ["mpiCommWorld"] = "keyword", + ["mpiGroup"] = "keyword", + ["mpiRequest"] = "keyword", + ["sparams"] = "keyword", + ["mpisize"] = "keyword", + ["mpiUndefined"] = "keyword", + ["mpiAnySource"] = "keyword", + ["communicator"] = "keyword", + ["worker"] = "keyword", + ["dim"] = "keyword", + ["cmm"] = "keyword", + ["solver"] = "keyword", + ["aniso"] = "keyword", + ["nbvx"] = "keyword", + ["abserror"] = "keyword", + ["anisomax"] = "keyword", + ["cutoff"] = "keyword", + ["err"] = "keyword", + ["errg"] = "keyword", + ["inquire"] = "keyword", + ["IsMetric"] = "keyword", + ["iso"] = "keyword", + ["keepbackvertices"] = "keyword", + ["maxsubdiv"] = "keyword", + ["metric"] = "keyword", + ["nbjacoby"] = "keyword", + ["nbsmooth"] = "keyword", + ["nomeshgeneration"] = "keyword", + ["omega"] = "keyword", + ["periodic"] = "keyword", + ["powerin"] = "keyword", + ["ratio"] = "keyword", + ["rescaling"] = "keyword", + ["splitin2"] = "keyword", + ["splitpbedge"] = "keyword", + ["thetamax"] = "keyword", + ["uniform"] = "keyword", + ["fixedborder"] = "keyword", + ["flags"] = "keyword", + ["ivalue"] = "keyword", + ["maxit"] = "keyword", + ["mode"] = "keyword", + ["ncv"] = "keyword", + ["nev"] = "keyword", + ["rawvector"] = "keyword", + ["sigma"] = "keyword", + ["sym"] = "keyword", + ["tol"] = "keyword", + ["vector"] = "keyword", + ["which"] = "keyword", + ["op"] = "keyword", + ["t"] = "keyword", + ["eps"] = "keyword", + ["nbiter"] = "keyword", + ["precon"] = "keyword", + ["veps"] = "keyword", + ["tgv"] = "keyword", + ["tolpivot"] = "keyword", + ["meditff"] = "keyword", + ["save"] = "keyword", + ["orientation"] = "keyword", + ["ptmerge"] = "keyword", + ["transfo"] = "keyword", + ["optimize"] = "keyword", + ["aspectratio"] = "keyword", + ["bb"] = "keyword", + ["boundary"] = "keyword", + ["bw"] = "keyword", + ["cut"] = "keyword", + ["grey"] = "keyword", + ["hsv"] = "keyword", + ["nbarrow"] = "keyword", + ["ps"] = "keyword", + ["varrow"] = "keyword", + ["viso"] = "keyword", + ["init"] = "keyword", + ["strategy"] = "keyword", + ["tolpivotsym"] = "keyword", + ["facetcl"] = "keyword", + ["holelist"] = "keyword", + ["nboffacetcl"] = "keyword", + ["nbofregions"] = "keyword", + ["regionlist"] = "keyword", + ["switch"] = "keyword", + ["refface"] = "keyword", + ["split"] = "keyword", + ["zbound"] = "keyword", + ["labeldown"] = "keyword", + ["labelmid"] = "keyword", + ["labelup"] = "keyword", + ["opt"] = "keyword", + ["mpiMAX"] = "keyword", + ["mpiMIN"] = "keyword", + ["mpiSUM"] = "keyword", + ["mpiPROD"] = "keyword", + ["mpiLAND"] = "keyword", + ["mpiLOR"] = "keyword", + ["mpiLXOR"] = "keyword", + ["mpiBAND"] = "keyword", + ["mpiBXOR"] = "keyword", + ["border"] = "keyword2", + ["Cmapmatrix"] = "keyword2", + ["Cmatrix"] = "keyword2", + ["complex"] = "keyword2", + ["fespace"] = "keyword2", + ["func"] = "keyword2", + ["ifstream"] = "keyword2", + ["mapmatrix"] = "keyword2", + ["matrix"] = "keyword2", + ["mesh"] = "keyword2", + ["mesh3"] = "keyword2", + ["ofstream"] = "keyword2", + ["problem"] = "keyword2", + ["real"] = "keyword2", + ["solve"] = "keyword2", + ["string"] = "keyword2", + ["varf"] = "keyword2", + ["macro"] = "keyword2", + ["dmatrix"] = "keyword2", + ["adj"] = "function", + ["find"] = "function", + ["rfind"] = "function", + ["seekg"] = "function", + ["tellg"] = "function", + ["AddLayers"] = "function", + ["AffineCG"] = "function", + ["AffineGMRES"] = "function", + ["BFGS"] = "function", + ["EigenValue"] = "function", + ["LinearCG"] = "function", + ["LinearGMRES"] = "function", + ["NLCG"] = "function", + ["abs"] = "function", + ["acos"] = "function", + ["acosh"] = "function", + ["adaptmesh"] = "function", + ["arg"] = "function", + ["asin"] = "function", + ["asinh"] = "function", + ["assert"] = "function", + ["atan"] = "function", + ["atan2"] = "function", + ["atanh"] = "function", + ["atof"] = "function", + ["atoi"] = "function", + ["boundingbox"] = "function", + ["buildmesh"] = "function", + ["buildmeshborder"] = "function", + ["ceil"] = "function", + ["change"] = "function", + ["checkmovemesh"] = "function", + ["clock"] = "function", + ["complexEigenValue"] = "function", + ["conj"] = "function", + ["convect"] = "function", + ["cos"] = "function", + ["cosh"] = "function", + ["defaultoUMFPACK"] = "function", + ["defaultsolver"] = "function", + ["defaulttoCG"] = "function", + ["defaulttoGMRES"] = "function", + ["defaulttoUMFPACK"] = "function", + ["det"] = "function", + ["dumptable"] = "function", + ["dx"] = "function", + ["dxx"] = "function", + ["dxy"] = "function", + ["dxz"] = "function", + ["dy"] = "function", + ["dyx"] = "function", + ["dyy"] = "function", + ["dyz"] = "function", + ["dz"] = "function", + ["dzx"] = "function", + ["dzy"] = "function", + ["dzz"] = "function", + ["emptymesh"] = "function", + ["erf"] = "function", + ["erfc"] = "function", + ["exec"] = "function", + ["exit"] = "function", + ["exp"] = "function", + ["floor"] = "function", + ["getline"] = "function", + ["hypot"] = "function", + ["imag"] = "function", + ["int1d"] = "function", + ["int2d"] = "function", + ["int3d"] = "function", + ["intallVFedges"] = "function", + ["intalledges"] = "function", + ["intallfaces"] = "function", + ["interplotematrix"] = "function", + ["interpolate"] = "function", + ["isInf"] = "function", + ["isNaN"] = "function", + ["isNormal"] = "function", + ["j0"] = "function", + ["j1"] = "function", + ["jn"] = "function", + ["jump"] = "function", + ["lgamma"] = "function", + ["log"] = "function", + ["log10"] = "function", + ["lrint"] = "function", + ["lround"] = "function", + ["ltime"] = "function", + ["mean"] = "function", + ["movemesh"] = "function", + ["newconvect"] = "function", + ["norm"] = "function", + ["on"] = "function", + ["otherside"] = "function", + ["plot"] = "function", + ["polar"] = "function", + ["pow"] = "function", + ["randinit"] = "function", + ["randint31"] = "function", + ["randint32"] = "function", + ["randreal1"] = "function", + ["randreal2"] = "function", + ["randreal3"] = "function", + ["randres53"] = "function", + ["readmesh"] = "function", + ["readmesh3"] = "function", + ["renumbering"] = "function", + ["restrict"] = "function", + ["rint"] = "function", + ["round"] = "function", + ["savemesh"] = "function", + ["savesurfacemesh"] = "function", + ["set"] = "function", + ["setw"] = "function", + ["showCPU"] = "function", + ["sin"] = "function", + ["sinh"] = "function", + ["splitmesh"] = "function", + ["sqr"] = "function", + ["sqrt"] = "function", + ["square"] = "function", + ["system"] = "function", + ["tan"] = "function", + ["tanh"] = "function", + ["tgamma"] = "function", + ["toCarray"] = "function", + ["toRarray"] = "function", + ["toZarray"] = "function", + ["trace"] = "function", + ["triangulate"] = "function", + ["trunc"] = "function", + ["y0"] = "function", + ["y1"] = "function", + ["yn"] = "function", + ["savevtk"] = "function", + ["mshmet"] = "function", + ["savesol"] = "function", + ["gmshload"] = "function", + ["gmshload3"] = "function", + ["mpiBarrier"] = "function", + ["mpiSize"] = "function", + ["Irecv"] = "function", + ["Isend"] = "function", + ["processor"] = "function", + ["mpiWaitAny"] = "function", + ["mpiWait"] = "function", + ["mpiRank"] = "function", + ["metis"] = "function", + ["metisdual"] = "function", + ["broadcast"] = "function", + ["scotch"] = "function", + ["parmetis"] = "function", + ["mpiWtime"] = "function", + ["buildlayers"] = "function", + ["mmg3d"] = "function", + ["processorblock"] = "function", + ["mpiWaitAll"] = "function", + ["mpiWtick"] = "function", + ["Send"] = "function", + ["Recv"] = "function", + ["mpiAlltoall"] = "function", + ["mpiGather"] = "function", + ["mpiScatter"] = "function", + ["mpiReduce"] = "function", + ["mpiAllReduce"] = "function", + ["mpiReduceScatter"] = "function", + }, +} diff --git a/debian/extra/plugins/language_ejs.lua b/debian/extra/plugins/language_ejs.lua new file mode 100644 index 0000000..f303bad --- /dev/null +++ b/debian/extra/plugins/language_ejs.lua @@ -0,0 +1,51 @@ +-- mod-version:3 + +-- Embedded JavaScript templating +-- provides .ejs syntax support (fork of language_html.lua). + +local syntax = require "core.syntax" + +syntax.add { + name = "EJS", + files = { "%.ejs$" }, + block_comment = { "" }, + patterns = { + { + pattern = { + "<%%", + "%%>" + }, + syntax = '.js', + type = "function" + }, + { + pattern = { + "<%s*[sS][cC][rR][iI][pP][tT]%f[%s>].->", + "<%s*/%s*[sS][cC][rR][iI][pP][tT]%s*>" + }, + syntax = ".js", + type = "function" + }, + { + pattern = { + "<%s*[sS][tT][yY][lL][eE]%f[%s>].->", + "<%s*/%s*[sS][tT][yY][lL][eE]%s*>" + }, + syntax = ".css", + type = "function" + }, + { pattern = { "" }, type = "comment" }, + { pattern = { '%f[^>][^<]', '%f[<]' }, type = "normal" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "%f[^<]![%a_][%w_]*", type = "keyword2" }, + { pattern = "%f[^<][%a_][%w_]*", type = "function" }, + { pattern = "%f[^<]/[%a_][%w_]*", type = "function" }, + { pattern = "[%a_][%w_]*", type = "keyword" }, + { pattern = "[/<>=]", type = "operator" }, + }, + symbols = {}, +} diff --git a/debian/extra/plugins/language_elixir.lua b/debian/extra/plugins/language_elixir.lua new file mode 100644 index 0000000..49da053 --- /dev/null +++ b/debian/extra/plugins/language_elixir.lua @@ -0,0 +1,95 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Elixir", + files = { "%.ex$", "%.exs$"}, + comment = "#", + patterns = { + { pattern = "#.*\n", type = "comment" }, + { pattern = { ':"', '"', '\\' }, type = "number" }, + { pattern = { '"""', '"""', '\\' }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { '~%a"""', '"""' }, type = "string" }, + { pattern = { '~%a[/"|\'%(%[%{<]', '[/"|\'%)%]%}>]', '\\' }, type = "string"}, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = ':"?[%a_][%w_]*"?', type = "number" }, + { pattern = "[%a][%w_!?]*%f[(]", type = "function" }, + { pattern = "%u%w+", type = "normal" }, + { pattern = "@[%a_][%w_]*", type = "keyword2" }, + { pattern = "_%a[%w_]*", type = "keyword2" }, + { pattern = "[%+%-=/%*<>!|&]", type = "operator" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["def"] = "keyword", + ["defp"] = "keyword", + ["defguard"] = "keyword", + ["defguardp"] = "keyword", + ["defmodule"] = "keyword", + ["defprotocol"] = "keyword", + ["defimpl"] = "keyword", + ["defrecord"] = "keyword", + ["defrecordp"] = "keyword", + ["defmacro"] = "keyword", + ["defmacrop"] = "keyword", + ["defdelegate"] = "keyword", + ["defoverridable"] = "keyword", + ["defexception"] = "keyword", + ["defcallback"] = "keyword", + ["defstruct"] = "keyword", + ["for"] = "keyword", + ["case"] = "keyword", + ["when"] = "keyword", + ["with"] = "keyword", + ["cond"] = "keyword", + ["if"] = "keyword", + ["unless"] = "keyword", + ["try"] = "keyword", + ["receive"] = "keyword", + ["after"] = "keyword", + ["raise"] = "keyword", + ["rescue"] = "keyword", + ["catch"] = "keyword", + ["else"] = "keyword", + ["quote"] = "keyword", + ["unquote"] = "keyword", + ["super"] = "keyword", + ["unquote_splicing"] = "keyword", + ["do"] = "keyword", + ["end"] = "keyword", + ["fn"] = "keyword", + ["import"] = "keyword2", + ["alias"] = "keyword2", + ["use"] = "keyword2", + ["require"] = "keyword2", + ["and"] = "operator", + ["or"] = "operator", + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + }, +} + +syntax.add { + files = { "%.l?eex$", "%.h?eex$" }, + patterns = { + { pattern = { "" }, type = "comment" }, + { pattern = { '%f[^>][^<]', '%f[<]' }, type = "normal" }, + { pattern = { '<%%=?', '%%>' }, type = "normal" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "%f[^<]![%a_][%w_]*", type = "keyword2" }, + { pattern = "%f[^<][%a_][%w_]*", type = "function" }, + { pattern = "%f[^<]/[%a_][%w_]*", type = "function" }, + { pattern = "[%a_][%w_]*", type = "keyword" }, + { pattern = "[/<>=]", type = "operator" }, + }, + symbols = {}, +} diff --git a/debian/extra/plugins/language_elm.lua b/debian/extra/plugins/language_elm.lua new file mode 100644 index 0000000..2d33813 --- /dev/null +++ b/debian/extra/plugins/language_elm.lua @@ -0,0 +1,49 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Elm", + files = { "%.elm$" }, + comment = "%-%-", + patterns = { + { pattern = {"%-%-", "\n"}, type = "comment" }, + { pattern = { "{%-", "%-}" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { '"""', '"""', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "%.%.", type = "operator" }, + { pattern = "[=:|&<>%+%-%*\\/%^%%]", type = "operator" }, + { pattern = "[%a_'][%w_']*", type = "symbol" }, + }, + symbols = { + ["as"] = "keyword", + ["case"] = "keyword", + ["of"] = "keyword", + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["import"] = "keyword", + ["module"] = "keyword", + ["exposing"] = "keyword", + ["let"] = "keyword", + ["in"] = "keyword", + ["type"] = "keyword", + ["alias"] = "keyword", + ["port"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["xor"] = "keyword", + ["not"] = "keyword", + ["number"] = "keyword2", + ["Bool"] = "keyword2", + ["Char"] = "keyword2", + ["Float"] = "keyword2", + ["Int"] = "keyword2", + ["String"] = "keyword2", + ["True"] = "literal", + ["False"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_env.lua b/debian/extra/plugins/language_env.lua new file mode 100644 index 0000000..bcdb8f1 --- /dev/null +++ b/debian/extra/plugins/language_env.lua @@ -0,0 +1,68 @@ +-- mod-version:3 + +local syntax = require "core.syntax" + +local key_pattern = '[a-zA-Z_]+[a-zA-Z0-9_]*' +local unicode_sequence = "'?\\u%x%x%x%x'?" +local escaped_literals = "\\[nrtfb\\\"']" +local null_pattern = '%s*[Nn][Uu][Ll][Ll]%s*' +local true_pattern = '%s*[Tt][Rr][Uu][Ee]%s*' +local false_pattern = '%s*[Ff][Aa][Ll][Ss][Ee]%s*' + +local synt_key = { + symbols = {}, + patterns = { + { type = "keyword2", pattern = key_pattern }, + }, +} + +local synt_dqs = { + symbols = {}, + patterns = { + { pattern = { "%${", "}" }, type = "keyword", syntax = synt_key }, + { pattern = "0[bB][%d]+", type = "number" }, + { pattern = "0[xX][%da-fA-F]+", type = "number" }, + { pattern = "[-+]?%.?%d+", type = "number" }, + { pattern = escaped_literals, type = "literal" }, -- escaped chars + { pattern = unicode_sequence, type = "literal" }, -- unicode sequence + { pattern = '[%w%p%s]', type = "string" }, + }, +} + +syntax.add { + name = "language_env", + files = { "%.env$" }, + comment = '#', + symbols = {}, + patterns = { + { pattern = "#.*$", type = "comment" }, + { pattern = "export", type = "function" }, + { pattern = null_pattern, type = "literal" }, + { pattern = true_pattern, type = "literal" }, + { pattern = false_pattern, type = "literal" }, + { pattern = escaped_literals, type = "literal" }, + { pattern = unicode_sequence, type = "literal" }, + -- interpolation + { pattern = { "%${", "}" }, type = "keyword", syntax = synt_key }, + -- numbers + { pattern = "0[bB][%d]+", type = "number" }, + { pattern = "0[xX][%da-fA-F]+", type = "number" }, + { pattern = "[-+]?%.?%d+", type = "number" }, + -- keys + { pattern = '[\'"].*[\'"]%s*=.*', type = "normal" }, + -- { + -- pattern = '[\'"]?'..escaped_literals..'[\'"]?%s*=.*', + -- type = "normal" + -- }, + -- { + -- pattern = '[\'"]?'..null_pattern..'[\'"]?%s*=.*', + -- type = "normal" + -- }, + { pattern = key_pattern..'%s*()=%s*', type = { "keyword2", "operator" }}, + -- quoted strings + { pattern = {'"', '"', '\\'}, type = "string", syntax = synt_dqs}, + { pattern = {"'", "'", '\\'}, type = "string" }, + { pattern = {'"""', '"""', '\\'}, type = "string" }, + { pattern = {"'''", "'''", '\\'}, type = "string" }, + }, +} diff --git a/debian/extra/plugins/language_erb.lua b/debian/extra/plugins/language_erb.lua new file mode 100644 index 0000000..bc52cfd --- /dev/null +++ b/debian/extra/plugins/language_erb.lua @@ -0,0 +1,55 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "html-eruby", + files = { PATHSEP .. "%.html?%.erb$", "%.erb$" }, + block_comment = { "" }, + patterns = { + { + pattern = { + "<%s*[sS][cC][rR][iI][pP][tT]%f[%s>].->", + "<%s*/%s*[sS][cC][rR][iI][pP][tT]%s*>" + }, + syntax = ".js", + type = "function" + }, + { + pattern = { + "<%s*[sS][tT][yY][lL][eE]%f[%s>].->", + "<%s*/%s*[sS][tT][yY][lL][eE]%s*>" + }, + syntax = ".css", + type = "function" + }, + { + pattern = { + "<%%", + "%%>" + }, + syntax = ".rb", + type = "function" + }, + { + pattern = { + "<%%=", + "%%>" + }, + syntax = ".rb", + type = "function" + }, + { pattern = { "" }, type = "comment" }, + { pattern = { '%f[^>][^<]', '%f[<]' }, type = "normal" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "%f[^<]![%a_][%w_]*", type = "keyword2" }, + { pattern = "%f[^<][%a_][%w_]*", type = "function" }, + { pattern = "%f[^<]/[%a_][%w_]*", type = "function" }, + { pattern = "[%a_][%w_]*", type = "keyword" }, + { pattern = "[/<>=]", type = "operator" }, + }, + symbols = {}, +} diff --git a/debian/extra/plugins/language_fe.lua b/debian/extra/plugins/language_fe.lua new file mode 100644 index 0000000..041512f --- /dev/null +++ b/debian/extra/plugins/language_fe.lua @@ -0,0 +1,52 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "fe", + files = "%.fe$", + comment = ";", + patterns = { + { pattern = ";.*", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "'", type = "symbol" }, + { pattern = "=", type = "symbol" }, + { pattern = "<=?", type = "symbol" }, + { pattern = "[%+-%*/]", type = "symbol" }, + { pattern = "%f[^(][^()'%s\"]+", type = "function" }, + { pattern = "[^()'%s\"]+", type = "symbol" }, + }, + symbols = { + ["let"] = "keyword", + ["if"] = "keyword", + ["fn"] = "keyword", + ["mac"] = "keyword", + ["while"] = "keyword", + ["quote"] = "keyword", + ["'"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["do"] = "keyword", + ["cons"] = "keyword", + ["car"] = "keyword", + ["cdr"] = "keyword", + ["setcar"] = "keyword", + ["setcdr"] = "keyword", + ["list"] = "keyword", + ["not"] = "keyword", + ["is"] = "keyword", + ["atom"] = "keyword", + ["print"] = "keyword", + ["<"] = "operator", + ["<="] = "operator", + ["="] = "operator", + ["+"] = "operator", + ["-"] = "operator", + ["*"] = "operator", + ["/"] = "operator", + ["nil"] = "literal", + ["t"] = "literal", + } +} diff --git a/debian/extra/plugins/language_fennel.lua b/debian/extra/plugins/language_fennel.lua new file mode 100644 index 0000000..dcfd245 --- /dev/null +++ b/debian/extra/plugins/language_fennel.lua @@ -0,0 +1,268 @@ +-- mod-version:3 +-- Support for the Fennel programming language: https://fennel-lang.org +-- Covers all the keywords up to Fennel version 1.2.0 + +-- Currently only covers highlighting, not indentation, delimiter +-- matching, or evaluation. + +local syntax = require("core.syntax") + +syntax.add({ + comment = ";", + files = "%.fnl$", + name = "Fennel", + patterns = { + { pattern = ";.-\n", type = "comment" }, + { pattern = { '"', '"', "\\" }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "%f[^(][^()'%s\"]+", type = "function" }, + { pattern = "[^()'%s\"]+", type = "symbol" }, + }, + symbols = { + ["#"] = "keyword", + ["%"] = "keyword", + ["*"] = "keyword", + ["+"] = "keyword", + ["-"] = "keyword", + ["->"] = "keyword", + ["->>"] = "keyword", + ["-?>"] = "keyword", + ["-?>>"] = "keyword", + ["."] = "keyword", + [".."] = "keyword", + ["/"] = "keyword", + ["//"] = "keyword", + [":"] = "keyword", + ["<"] = "keyword", + ["<="] = "keyword", + ["="] = "keyword", + [">"] = "keyword", + [">="] = "keyword", + ["?."] = "keyword", + ["^"] = "keyword", + _G = "keyword", + accumulate = "keyword2", + ["and"] = "keyword2", + arg = "keyword2", + assert = "keyword2", + band = "keyword2", + bit32 = "keyword2", + ["bit32.arshift"] = "keyword2", + ["bit32.band"] = "keyword2", + ["bit32.bnot"] = "keyword2", + ["bit32.bor"] = "keyword2", + ["bit32.btest"] = "keyword2", + ["bit32.bxor"] = "keyword2", + ["bit32.extract"] = "keyword2", + ["bit32.lrotate"] = "keyword2", + ["bit32.lshift"] = "keyword2", + ["bit32.replace"] = "keyword2", + ["bit32.rrotate"] = "keyword2", + ["bit32.rshift"] = "keyword2", + bnot = "keyword2", + bor = "keyword2", + bxor = "keyword2", + collect = "keyword2", + collectgarbage = "keyword2", + comment = "keyword2", + coroutine = "keyword2", + ["coroutine.create"] = "keyword2", + ["coroutine.resume"] = "keyword2", + ["coroutine.running"] = "keyword2", + ["coroutine.status"] = "keyword2", + ["coroutine.wrap"] = "keyword2", + ["coroutine.yield"] = "keyword2", + debug = "keyword2", + ["debug.debug"] = "keyword2", + ["debug.gethook"] = "keyword2", + ["debug.getinfo"] = "keyword2", + ["debug.getlocal"] = "keyword2", + ["debug.getmetatable"] = "keyword2", + ["debug.getregistry"] = "keyword2", + ["debug.getupvalue"] = "keyword2", + ["debug.getuservalue"] = "keyword2", + ["debug.sethook"] = "keyword2", + ["debug.setlocal"] = "keyword2", + ["debug.setmetatable"] = "keyword2", + ["debug.setupvalue"] = "keyword2", + ["debug.setuservalue"] = "keyword2", + ["debug.traceback"] = "keyword2", + ["debug.upvalueid"] = "keyword2", + ["debug.upvaluejoin"] = "keyword2", + ["do"] = "keyword2", + dofile = "keyword2", + doto = "keyword2", + each = "keyword2", + error = "keyword2", + ["eval-compiler"] = "keyword2", + ["false"] = "literal", + fcollect = "keyword2", + fn = "keyword2", + ["for"] = "keyword2", + getmetatable = "keyword2", + global = "keyword2", + hashfn = "keyword2", + icollect = "keyword2", + ["if"] = "keyword2", + ["import-macros"] = "keyword2", + include = "keyword2", + io = "keyword2", + ["io.close"] = "keyword2", + ["io.flush"] = "keyword2", + ["io.input"] = "keyword2", + ["io.lines"] = "keyword2", + ["io.open"] = "keyword2", + ["io.output"] = "keyword2", + ["io.popen"] = "keyword2", + ["io.read"] = "keyword2", + ["io.tmpfile"] = "keyword2", + ["io.type"] = "keyword2", + ["io.write"] = "keyword2", + ipairs = "keyword2", + lambda = "keyword2", + length = "keyword2", + let = "keyword2", + load = "keyword2", + loadfile = "keyword2", + loadstring = "keyword2", + ["local"] = "keyword2", + lshift = "keyword2", + lua = "keyword2", + macro = "keyword2", + macrodebug = "keyword2", + macros = "keyword2", + match = "keyword2", + ["match-try"] = "keyword2", + math = "keyword2", + ["math.abs"] = "keyword2", + ["math.acos"] = "keyword2", + ["math.asin"] = "keyword2", + ["math.atan"] = "keyword2", + ["math.atan2"] = "keyword2", + ["math.ceil"] = "keyword2", + ["math.cos"] = "keyword2", + ["math.cosh"] = "keyword2", + ["math.deg"] = "keyword2", + ["math.exp"] = "keyword2", + ["math.floor"] = "keyword2", + ["math.fmod"] = "keyword2", + ["math.frexp"] = "keyword2", + ["math.ldexp"] = "keyword2", + ["math.log"] = "keyword2", + ["math.log10"] = "keyword2", + ["math.max"] = "keyword2", + ["math.min"] = "keyword2", + ["math.modf"] = "keyword2", + ["math.pow"] = "keyword2", + ["math.rad"] = "keyword2", + ["math.random"] = "keyword2", + ["math.randomseed"] = "keyword2", + ["math.sin"] = "keyword2", + ["math.sinh"] = "keyword2", + ["math.sqrt"] = "keyword2", + ["math.tan"] = "keyword2", + ["math.tanh"] = "keyword2", + module = "keyword2", + next = "keyword2", + ["nil"] = "literal", + ["not"] = "keyword2", + ["not="] = "keyword2", + ["or"] = "keyword2", + os = "keyword2", + ["os.clock"] = "keyword2", + ["os.date"] = "keyword2", + ["os.difftime"] = "keyword2", + ["os.execute"] = "keyword2", + ["os.exit"] = "keyword2", + ["os.getenv"] = "keyword2", + ["os.remove"] = "keyword2", + ["os.rename"] = "keyword2", + ["os.setlocale"] = "keyword2", + ["os.time"] = "keyword2", + ["os.tmpname"] = "keyword2", + package = "keyword2", + ["package.loadlib"] = "keyword2", + ["package.searchpath"] = "keyword2", + ["package.seeall"] = "keyword2", + pairs = "keyword2", + partial = "keyword2", + pcall = "keyword2", + ["pick-args"] = "keyword2", + ["pick-values"] = "keyword2", + print = "keyword2", + quote = "keyword2", + rawequal = "keyword2", + rawget = "keyword2", + rawlen = "keyword2", + rawset = "keyword2", + require = "keyword2", + ["require-macros"] = "keyword2", + rshift = "keyword2", + select = "keyword2", + set = "keyword2", + ["set-forcibly!"] = "keyword2", + setmetatable = "keyword2", + string = "keyword2", + ["string.byte"] = "keyword2", + ["string.char"] = "keyword2", + ["string.dump"] = "keyword2", + ["string.find"] = "keyword2", + ["string.format"] = "keyword2", + ["string.gmatch"] = "keyword2", + ["string.gsub"] = "keyword2", + ["string.len"] = "keyword2", + ["string.lower"] = "keyword2", + ["string.match"] = "keyword2", + ["string.rep"] = "keyword2", + ["string.reverse"] = "keyword2", + ["string.sub"] = "keyword2", + ["string.upper"] = "keyword2", + table = "keyword2", + ["table.concat"] = "keyword2", + ["table.insert"] = "keyword2", + ["table.maxn"] = "keyword2", + ["table.pack"] = "keyword2", + ["table.remove"] = "keyword2", + ["table.sort"] = "keyword2", + ["table.unpack"] = "keyword2", + tonumber = "keyword2", + tostring = "keyword2", + ["true"] = "literal", + tset = "keyword2", + type = "keyword2", + unpack = "keyword2", + values = "keyword2", + var = "keyword2", + when = "keyword2", + ["while"] = "keyword2", + ["with-open"] = "keyword2", + xpcall = "keyword2", + ["~="] = "keyword", + ["λ"] = "keyword", + }, +}) + +-- To regenerate the syntax from the compiler: +-- (macro s [] +-- (let [{: syntax} (require :fennel) +-- symbols {:nil :literal +-- :true :literal +-- :false :literal}] +-- `(syntax.add {:name "Fennel" +-- :files "%.fnl$" +-- :comment ";" +-- :patterns [{:type :comment :pattern ";.-\n"} +-- {:type :string :pattern {1 "\"" 2 "\"" 3 "\\"}} +-- {:type :number :pattern "0x[%da-fA-F]+"} +-- {:type :number :pattern "-?%d+[%d%.]*"} +-- {:type :number :pattern "-?%.?%d+"} +-- {:type :function :pattern "%f[^(][^()'%s\"]+"} +-- {:type :symbol :pattern "[^()'%s\"]+"}] +-- :symbols ,(collect [name (pairs (syntax)) :into symbols] +-- (values name +-- (if (name:find "[a-z]") +-- :keyword2 :keyword)))}))) (s) + +-- and reformat the output, of course diff --git a/debian/extra/plugins/language_fortran.lua b/debian/extra/plugins/language_fortran.lua new file mode 100644 index 0000000..da97a4c --- /dev/null +++ b/debian/extra/plugins/language_fortran.lua @@ -0,0 +1,85 @@ +-- Author: Rohan Vashisht: https://github.com/rohanvashisht1234/ + + +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Fortran", -- tested ok + files = { + "%.f$", -- tested ok + "%.f90$", -- tested ok + "%.f95$" -- tested ok + }, + comment = "!", -- tested ok + patterns = { + { pattern = { "'", "'", '\\' }, type = "string" }, -- tested ok + { pattern = { '"', '"', '\\' }, type = "string" }, -- tested ok + { pattern = "!.*", type = "comment" }, -- tested ok + { pattern = "%.[%a_][%w_]+%.", type = "normal" }, -- tested ok + { pattern = "[!%-/*?:=><+]", type = "operator" }, -- tested ok + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- tested ok + { pattern = "program()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "module()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "use()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "struct()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + + { pattern = "-?%d+[%d%.eE_]*", type = "number" }, -- tested ok + { pattern = "-?%.?%d+", type = "number" }, -- tested ok + { pattern = "[%a_][%w_]*", type = "normal" }, -- tested ok + }, + symbols = { + ["end"] = "keyword", -- tested ok + ["program"] = "keyword", -- tested ok + ["write"] = "keyword", -- tested ok + ["print"] = "keyword", -- tested ok + ["implicit"] = "keyword", -- tested ok + ["integer"] = "keyword", -- tested ok + ["real"] = "keyword", -- tested ok + ["complex"] = "keyword", -- tested ok + ["character"] = "keyword", -- tested ok + ["logical"] = "keyword", -- tested ok + ["allocatable"] = "keyword", -- tested ok + ["subroutine"] = "keyword", -- tested ok + ["do"] = "keyword", -- tested ok + ["call"] = "keyword", -- tested ok + ["extends"] = "keyword", -- tested ok + ["protected"] = "keyword", -- tested ok + ["contains"] = "keyword", -- tested ok + ["else"] = "keyword", -- tested ok + ["then"] = "keyword", -- tested ok + ["if"] = "keyword", -- tested ok + ["cycle"] = "keyword", -- tested ok + ["parameter"] = "keyword", -- tested ok + ["concurrent"] = "keyword", -- tested ok + ["function"] = "keyword", -- tested ok + ["private"] = "keyword", -- tested ok + ["public"] = "keyword", -- tested ok + ["module"] = "keyword", -- tested ok + ["use"] = "keyword", -- tested ok + ["type"] = "keyword", -- tested ok + ["sequence"] = "keyword", -- tested ok + ["struct"] = "keyword", -- tested ok + ["result"] = "keyword", -- tested ok + ["stop"] = "keyword", -- tested ok + ["only"] = "keyword", -- tested ok + + + ["none"] = "keyword2", -- tested ok + ["len"] = "keyword2", -- tested ok + + [".false."] = "keyword2", -- tested ok + [".true."] = "keyword2", -- tested ok + [".eq."] = "keyword2", -- tested ok + [".ne."] = "keyword2", -- tested ok + [".gt."] = "keyword2", -- tested ok + [".lt."] = "keyword2", -- tested ok + [".ge"] = "keyword2", -- tested ok + [".not."] = "keyword2", -- tested ok + [".le."] = "keyword2", -- tested ok + [".or."] = "keyword2", -- tested ok + [".and."] = "keyword2", -- tested ok + [".eqv."] = "keyword2", -- tested ok + [".neqv."] = "keyword2", -- tested ok + } +} diff --git a/debian/extra/plugins/language_fstab.lua b/debian/extra/plugins/language_fstab.lua new file mode 100644 index 0000000..5032cae --- /dev/null +++ b/debian/extra/plugins/language_fstab.lua @@ -0,0 +1,99 @@ +-- mod-version:3 + +local syntax = require "core.syntax" + +syntax.add { + name = "fstab", + files = { PATHSEP .. "fstab$" }, + comment = '#', + patterns = { + -- Only lines that start with a # are comments; you can have #'s in fuse + -- filesystem strings that aren't comments, so shouldn't be highlighted as such. + { regex = "^#.*", type = "comment" }, + { pattern = "[=/:.,]+", type = "operator" }, + { pattern = "/.*/", type = "string" }, + { pattern = "#", type = "operator" }, + -- { + -- pattern = "%g+%s+()%g+%s+()%g+%s+()%g+%s+()[01]%s+()[012]%s*", + -- type = { + -- -- filesystem + -- "keyword", + -- -- mount point + -- "keyword2", + -- -- fs type + -- "symbol", + -- -- options + -- "keyword2", + -- -- dump frequency + -- "keyword", + -- -- pass number + -- "keyword2", + -- } + -- }, + + -- UUID + { pattern = "%w-%-%w-%-%w-%-%w-%-%w- ", type = "string" }, + -- IPv4 Address + { pattern = "%d+%.%d+%.%d+%.%d+", type = "string" }, + + { pattern = " %d+ ", type = "number" }, + { pattern = "[%w_]+", type = "symbol" }, + + }, + symbols = { + ["none"] = "literal", + + ["LABEL"] = "keyword", + ["UUID"] = "keyword", + + -- filesystems + ["aufs"] = "keyword2", + ["autofs"] = "keyword2", + ["bdev"] = "keyword2", + ["binder"] = "keyword2", + ["binfmt_misc"] = "keyword2", + ["bpf"] = "keyword2", + ["btrfs"] = "keyword2", + ["cgroup"] = "keyword2", + ["cgroup2"] = "keyword2", + ["configfs"] = "keyword2", + ["cpuset"] = "keyword2", + ["debugfs"] = "keyword2", + ["devpts"] = "keyword2", + ["devtmpfs"] = "keyword2", + ["ecryptfs"] = "keyword2", + ["ext2"] = "keyword2", + ["ext3"] = "keyword2", + ["ext4"] = "keyword2", + ["fuse"] = "keyword2", + ["fuseblk"] = "keyword2", + ["fusectl"] = "keyword2", + ["hfs"] = "keyword2", + ["hfsplus"] = "keyword2", + ["hugetlbfs"] = "keyword2", + ["jfs"] = "keyword2", + ["minix"] = "keyword2", + ["mqueue"] = "keyword2", + ["msdos"] = "keyword2", + ["nfs"] = "keyword2", + ["nfs4"] = "keyword2", + ["nfsd"] = "keyword2", + ["ntfs"] = "keyword2", + ["pipefs"] = "keyword2", + ["proc"] = "keyword2", + ["pstore"] = "keyword2", + ["qnx4"] = "keyword2", + ["ramfs"] = "keyword2", + ["rpc_pipefs"] = "keyword2", + ["securityfs"] = "keyword2", + ["sockfs"] = "keyword2", + ["squashfs"] = "keyword2", + ["swap"] = "keyword2", + ["sysfs"] = "keyword2", + ["tmpfs"] = "keyword2", + ["tracefs"] = "keyword2", + ["ufs"] = "keyword2", + ["vfat"] = "keyword2", + ["xfs"] = "keyword2", + }, +} diff --git a/debian/extra/plugins/language_gabc.lua b/debian/extra/plugins/language_gabc.lua new file mode 100644 index 0000000..c07307b --- /dev/null +++ b/debian/extra/plugins/language_gabc.lua @@ -0,0 +1,19 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "GABC", + files = { "%.gabc$" }, + comment = "%%", + patterns = { + { pattern = "%%.*", type = "comment" }, + { pattern = "^%w+:", type = "keyword2" }, + { pattern = "[%*{}]", type = "operator" }, + { pattern = "<[^>]*>", type = "function" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = { "|", "%)" }, type = "keyword2" }, + { pattern = "%([^%)|]*%)?", type = "keyword" }, + }, + symbols = {} +} + diff --git a/debian/extra/plugins/language_gdscript.lua b/debian/extra/plugins/language_gdscript.lua new file mode 100644 index 0000000..d03dce8 --- /dev/null +++ b/debian/extra/plugins/language_gdscript.lua @@ -0,0 +1,101 @@ +-- mod-version:3 +-- Support for the GDScript programming language: https://godotengine.org/ +-- Covers the most used keywords up to Godot version 3.2.x + +local syntax = require "core.syntax" + +syntax.add { + name = "GDScript", + files = { "%.gd$" }, + comment = "#", + patterns = { + { pattern = "#.-\n", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x*", type = "number" }, + { pattern = "-?%d+[%d%.e]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%+%:%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- keywords + ["if"] = "keyword", + ["elif"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["while"] = "keyword", + ["match"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["pass"] = "keyword", + ["return"] = "keyword", + ["class"] = "keyword", + ["class_name"] = "keyword", + ["extends"] = "keyword", + ["is"] = "keyword", + ["in"] = "keyword", + ["as"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["not"] = "keyword", + ["self"] = "keyword", + ["tool"] = "keyword", + ["signal"] = "keyword", + ["func"] = "keyword", + ["static"] = "keyword", + ["const"] = "keyword", + ["enum"] = "keyword", + ["var"] = "keyword", + ["onready"] = "keyword", + ["export"] = "keyword", + ["setget"] = "keyword", + ["breakpoint"] = "keyword", + ["preload"] = "keyword", + ["yield"] = "keyword", + ["assert"] = "keyword", + ["remote"] = "keyword", + ["master"] = "keyword", + ["puppet"] = "keyword", + ["remotesync"] = "keyword", + ["mastersync"] = "keyword", + ["puppetsync"] = "keyword", + -- types + ["void"] = "keyword2", + ["int"] = "keyword2", + ["float"] = "keyword2", + ["bool"] = "keyword2", + ["String"] = "keyword2", + ["Vector2"] = "keyword2", + ["Rect2"] = "keyword2", + ["Vector3"] = "keyword2", + ["Transform2D"] = "keyword2", + ["Plane"] = "keyword2", + ["Quat"] = "keyword2", + ["AABB"] = "keyword2", + ["Basis"] = "keyword2", + ["Transform"] = "keyword2", + ["Color"] = "keyword2", + ["NodePath"] = "keyword2", + ["RID"] = "keyword2", + ["Object"] = "keyword2", + ["Array"] = "keyword2", + ["PoolByteArray"] = "keyword2", + ["PoolIntArray"] = "keyword2", + ["PoolRealArray"] = "keyword2", + ["PoolStringArray"] = "keyword2", + ["PoolVector2Array"] = "keyword2", + ["PoolVector3Array"] = "keyword2", + ["PoolColorArray"] = "keyword2", + ["Dictionary"] = "keyword2", + -- literals + ["null"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + ["PI"] = "literal", + ["TAU"] = "literal", + ["INF"] = "literal", + ["NAN"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_glsl.lua b/debian/extra/plugins/language_glsl.lua new file mode 100644 index 0000000..360e11f --- /dev/null +++ b/debian/extra/plugins/language_glsl.lua @@ -0,0 +1,389 @@ +-- mod-version:3 + +local style = require "core.style" +local common = require "core.common" + +local syntax = require "core.syntax" + +syntax.add { + name = "GLSL", + files = { "%.glsl$", "%.frag$", "%.vert$", }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { "#", "[^\\]\n" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + + { pattern = "ivec[2-4]", type = "keyword2" }, + { pattern = "bvec[2-4]", type = "keyword2" }, + { pattern = "uvec[2-4]", type = "keyword2" }, + { pattern = "vec[2-4]", type = "keyword2" }, + { pattern = "dmat[2-4]x[2-4]", type = "keyword2" }, + { pattern = "dmat[2-4]", type = "keyword2" }, + { pattern = "mat[2-4]x[2-4]", type = "keyword2" }, + { pattern = "mat[2-4]", type = "keyword2" }, + + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + --https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.60.pdf + --The symbols are added here in the order they appear in the spec + ["if"] = "keyword", + ["else"] = "keyword", + ["do"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["const"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["default"] = "keyword", + ["const"] = "keyword", + ["void"] = "keyword", + ["bool"] = "keyword2", + ["int"] = "keyword2", + ["uint"] = "keyword2", + ["float"] = "keyword2", + ["double"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["NULL"] = "literal", + + ["attribute"] = "keyword", + ["varying"] = "keyword", + ["uniform"] = "keyword", + ["buffer"] = "keyword", + ["shared"] = "keyword", + ["layout"] = "keyword", + ["centroid"] = "keyword", + ["flat"] = "keyword", + ["smooth"] = "keyword", + ["noperspective"]= "keyword", + ["patch"] = "keyword", + ["sample"] = "keyword", + ["in"] = "keyword", + ["out"] = "keyword", + ["inout"] = "keyword", + ["invariant"] = "keyword", + ["precise"] = "keyword", + ["lowp"] = "keyword", + ["mediump"] = "keyword", + ["highp"] = "keyword", + ["precision"] = "keyword", + ["struct"] = "keyword", + ["subroutine"] = "keyword", + + ["coherent"] = "keyword", + ["volatile"] = "keyword", + ["readonly"] = "keyword", + ["writeonly"] = "keyword", + + ["sampler1D"] = "keyword2", + ["sampler2D"] = "keyword2", + ["sampler3D"] = "keyword2", + ["samplerCube"] = "keyword2", + ["sampler1DShadow"] = "keyword2", + ["sampler2DShadow"] = "keyword2", + ["samplerCubeShadow"] = "keyword2", + ["sampler1DArray"] = "keyword2", + ["sampler2DArray"] = "keyword2", + ["samplerCubeArray"] = "keyword2", + ["sampler1DArrayShadow"] = "keyword2", + ["sampler2DArrayShadow"] = "keyword2", + ["samplerCubeArrayShadow"]= "keyword2", + ["isampler1D"] = "keyword2", + ["isampler2D"] = "keyword2", + ["isampler3D"] = "keyword2", + ["isamplerCube"] = "keyword2", + ["sampler2DMS"] = "keyword2", + ["isampler2DMS"] = "keyword2", + ["usampler2DMS"] = "keyword2", + ["sampler2DMSArray"] = "keyword2", + ["isampler2DMSArray"] = "keyword2", + ["usampler2DMSArray"] = "keyword2", + ["isampler1DArray"] = "keyword2", + ["isampler2DArray"] = "keyword2", + ["usampler1D"] = "keyword2", + ["usampler2D"] = "keyword2", + ["usampler3D"] = "keyword2", + ["usamplerCube"] = "keyword2", + ["usampler1DArray"] = "keyword2", + ["usampler2DArray"] = "keyword2", + ["sampler2DRect"] = "keyword2", + ["sampler2DRectShadow"] = "keyword2", + ["isampler2DRect"] = "keyword2", + ["usampler2DRect"] = "keyword2", + ["samplerBuffer"] = "keyword2", + ["isamplerBuffer"] = "keyword2", + ["usamplerBuffer"] = "keyword2", + + ["image1D"] = "keyword2", + ["iimage1D"] = "keyword2", + ["uimage1D"] = "keyword2", + ["image1DArray"] = "keyword2", + ["iimage1DArray"] = "keyword2", + ["uimage1DArray"] = "keyword2", + ["image2D"] = "keyword2", + ["iimage2D"] = "keyword2", + ["uimage2D"] = "keyword2", + ["image2DArray"] = "keyword2", + ["iimage2DArray"] = "keyword2", + ["uimage2DArray"] = "keyword2", + ["image2DRect"] = "keyword2", + ["iimage2DRect"] = "keyword2", + ["uimage2DRect"] = "keyword2", + ["image2DMS"] = "keyword2", + ["iimage2DMS"] = "keyword2", + ["uimage2DMS"] = "keyword2", + ["image2DMSArray"] = "keyword2", + ["iimage2DMSArray"]= "keyword2", + ["uimage2DMSArray"]= "keyword2", + ["image3D"] = "keyword2", + ["iimage3D"] = "keyword2", + ["uimage3D"] = "keyword2", + ["imageCube"] = "keyword2", + ["iimageCube"] = "keyword2", + ["uimageCube"] = "keyword2", + ["imageCubeArray"] = "keyword2", + ["iimageCubeArray"]= "keyword2", + ["uimageCubeArray"]= "keyword2", + ["imageBuffer"] = "keyword2", + ["iimageBuffer"] = "keyword2", + ["uimageBuffer"] = "keyword2", + + ["atomic_uint"] = "keyword2", + + ["radians"] = "keyword", + ["degrees"] = "keyword", + ["sin"] = "keyword", + ["cos"] = "keyword", + ["tan"] = "keyword", + ["asin"] = "keyword", + ["acos"] = "keyword", + ["atan"] = "keyword", + ["sinh"] = "keyword", + ["cosh"] = "keyword", + ["tanh"] = "keyword", + ["asinh"] = "keyword", + ["acosh"] = "keyword", + ["pow"] = "keyword", + ["exp"] = "keyword", + ["exp2"] = "keyword", + ["log2"] = "keyword", + ["sqrt"] = "keyword", + ["inversesqrt"] = "keyword", + ["abs"] = "keyword", + ["sign"] = "keyword", + ["floor"] = "keyword", + ["trunc"] = "keyword", + ["round"] = "keyword", + ["roundEven"] = "keyword", + ["ceil"] = "keyword", + ["fract"] = "keyword", + ["mod"] = "keyword", + ["modf"] = "keyword", + ["min"] = "keyword", + ["max"] = "keyword", + ["clamp"] = "keyword", + ["mix"] = "keyword", + ["step"] = "keyword", + ["smoothstep"] = "keyword", + ["isnan"] = "keyword", + ["isinf"] = "keyword", + ["floatBitsToInt"] = "keyword", + ["floatBitsToUint"] = "keyword", + ["intBitsToFloat"] = "keyword", + ["uintBitsToFloat"] = "keyword", + ["fma"] = "keyword", + ["frexp"] = "keyword", + ["ldexp"] = "keyword", + ["packUnorm2x16"] = "keyword", + ["packSnorm2x16"] = "keyword", + ["packUnorm4x8"] = "keyword", + ["packSnorm4x8"] = "keyword", + ["unpackUnorm2x16"] = "keyword", + ["unpackSnorm2x16"] = "keyword", + ["unpackUnorm4x8"] = "keyword", + ["unpackSnorm4x8"] = "keyword", + ["packHalf2x16"] = "keyword", + ["unpackHalf2x16"] = "keyword", + ["packDouble2x32"] = "keyword", + ["unpackDouble2x32"] = "keyword", + ["length"] = "keyword", + ["distance"] = "keyword", + ["dot"] = "keyword", + ["cross"] = "keyword", + ["normalize"] = "keyword", + ["ftransform"] = "keyword", + ["faceforward"] = "keyword", + ["reflect"] = "keyword", + ["refract"] = "keyword", + ["matrixCompMult"] = "keyword", + ["outerProduct"] = "keyword", + ["transpose"] = "keyword", + ["determinant"] = "keyword", + ["inverse"] = "keyword", + ["lessThan"] = "keyword", + ["lessThanEqual"] = "keyword", + ["greaterThan"] = "keyword", + ["greaterThanEqual"] = "keyword", + ["equal"] = "keyword", + ["notEqual"] = "keyword", + ["any"] = "keyword", + ["all"] = "keyword", + ["not"] = "keyword", + ["uaddCarry"] = "keyword", + ["usubBorrow"] = "keyword", + ["umulExtended"] = "keyword", + ["imulExtended"] = "keyword", + ["bitfieldExtract"] = "keyword", + ["bitfieldInsert"] = "keyword", + ["bitfieldReverse"] = "keyword", + ["bitCount"] = "keyword", + ["findLSB"] = "keyword", + ["findMSB"] = "keyword", + ["textureSize"] = "keyword", + ["textureQueryLod"] = "keyword", + ["textureQueryLevels"] = "keyword", + ["textureSamples"] = "keyword", + ["texture"] = "keyword", + ["textureProj"] = "keyword", + ["textureLod"] = "keyword", + ["textureOffset"] = "keyword", + ["texelFetch"] = "keyword", + ["texelFetchOffset"] = "keyword", + ["textureProjOffset"] = "keyword", + ["textureLodOffset"] = "keyword", + ["textureProjLod"] = "keyword", + ["textureProjLodOffset"] = "keyword", + ["textureGrad"] = "keyword", + ["textureGradOffset"] = "keyword", + ["textureProjGrad"] = "keyword", + ["textureProjGradOffset"]= "keyword", + ["textureGather"] = "keyword", + ["textureGatherOffset"] = "keyword", + ["textureGatherOffsets"] = "keyword", + + --Atomic Counter Functions + ["atomicCounterIncrement"]= "keyword", + ["atomicCounterDecrement"]= "keyword", + ["atomicCounter"] = "keyword", + ["atomicCounterAdd"] = "keyword", + ["atomicCounterSubtract"] = "keyword", + ["atomicCounterMin"] = "keyword", + ["atomicCounterMax"] = "keyword", + ["atomicCounterAnd"] = "keyword", + ["atomicCounterOr"] = "keyword", + ["atomicCounterXor"] = "keyword", + ["atomicCounterExchange"] = "keyword", + ["atomicCounterCompSwap"] = "keyword", + --Atomic Memory Functions + ["atomicAdd"] = "keyword", + ["atomicMin"] = "keyword", + ["atomicMax"] = "keyword", + ["atomicAnd"] = "keyword", + ["atomicOr"] = "keyword", + ["atomicXor"] = "keyword", + ["atomicExchange"]= "keyword", + ["atomicCompSwap"]= "keyword", + --Image Functions + ["imageSize"] = "keyword", + ["imageSamples"] = "keyword", + ["imageLoad"] = "keyword", + ["imageStore"] = "keyword", + ["imageAtomicAdd"] = "keyword", + ["imageAtomicMin"] = "keyword", + ["imageAtomicMax"] = "keyword", + ["imageAtomicAnd"] = "keyword", + ["imageAtomicOr"] = "keyword", + ["imageAtomicXor"] = "keyword", + ["imageAtomicExchange"]= "keyword", + ["imageAtomicCompSwap"]= "keyword", + --Geometry Shader Functions + ["EmitStreamVertex"] = "keyword", + ["EndStreamPrimitive"] = "keyword", + ["EmitVertex"] = "keyword", + ["EndPrimitive"] = "keyword", + --Fragment Processing Functions + ["dFdx"] = "keyword", + ["dFdy"] = "keyword", + ["dFdxFine"] = "keyword", + ["dFdyFine"] = "keyword", + ["dFdxCoarse"] = "keyword", + ["dFdyCoarse"] = "keyword", + ["fwidth"] = "keyword", + ["fwidthFine"] = "keyword", + ["fwidthCoarse"] = "keyword", + ["interpolateAtCentroid"]= "keyword", + ["interpolateAtSample"] = "keyword", + ["interpolateAtOffset"] = "keyword", + --Shader Invocation Control Functions + ["barrier"] = "keyword", + --Shader Memory Control Functions + ["memoryBarrier"] = "keyword", + ["memoryBarrierAtomicCounter"]= "keyword", + ["memoryBarrierBuffer"] = "keyword", + ["memoryBarrierShared"] = "keyword", + ["memoryBarrierImage"] = "keyword", + ["groupMemoryBarrier"] = "keyword", + --Subpass-Input Functions + ["subpassLoad"] = "keyword", + --Shader Invocation Group Functions + ["anyInvocation"] = "keyword", + ["allInvocations"] = "keyword", + ["allInvocationsEqual"]= "keyword", + + --"In addition, when targeting Vulkan, the following keywords also exist:" + ["texture1D"] = "keyword", + ["texture1DArray"] = "keyword", + ["itexture1D"] = "keyword", + ["itexture1DArray"] = "keyword", + ["utexture1D"] = "keyword", + ["utexture1DArray"] = "keyword", + ["texture2D"] = "keyword", + ["texture2DArray"] = "keyword", + ["itexture2D"] = "keyword", + ["itexture2DArray"] = "keyword", + ["utexture2D"] = "keyword", + ["utexture2DArray"] = "keyword", + ["texture2DRect"] = "keyword", + ["itexture2DRect"] = "keyword", + ["utexture2DRect"] = "keyword", + ["texture2DMS"] = "keyword", + ["itexture2DMS"] = "keyword", + ["utexture2DMS"] = "keyword", + ["texture2DMSArray"] = "keyword", + ["itexture2DMSArray"]= "keyword", + ["utexture2DMSArray"]= "keyword", + ["texture3D"] = "keyword", + ["itexture3D"] = "keyword", + ["utexture3D"] = "keyword", + ["textureCube"] = "keyword", + ["itextureCube"] = "keyword", + ["utextureCube"] = "keyword", + ["textureCubeArray"] = "keyword", + ["itextureCubeArray"]= "keyword", + ["utextureCubeArray"]= "keyword", + ["textureBuffer"] = "keyword", + ["itextureBuffer"] = "keyword", + ["utextureBuffer"] = "keyword", + ["sampler"] = "keyword2", + ["samplerShadow"] = "keyword2", + ["subpassInput"] = "keyword2", + ["isubpassInput"] = "keyword2", + ["usubpassInput"] = "keyword2", + ["subpassInputMS"] = "keyword2", + ["isubpassInputMS"] = "keyword2", + ["usubpassInputMS"] = "keyword2", + }, +} + diff --git a/debian/extra/plugins/language_gmi.lua b/debian/extra/plugins/language_gmi.lua new file mode 100644 index 0000000..c5d819a --- /dev/null +++ b/debian/extra/plugins/language_gmi.lua @@ -0,0 +1,21 @@ +-- mod-version:3 +local syntax = require "core.syntax" + + + +syntax.add { + name = "Gemtext", + files = { "%.gmi$" }, + patterns = { + { pattern = { "```", "```" }, type = "string" }, + { pattern = "#.*", type = "keyword" }, + { pattern = "%*%s", type = "keyword2" }, + { pattern = "=>", type = "function" }, + { pattern = "https?://%S+", type = "literal" }, + { pattern = "gemini?://%S+", type = "literal" }, + { pattern = ">.*", type = "comment" }, + { pattern = ".*[>*#]", type = "normal" }, + { pattern = ".*=>", type = "normal" } + }, + symbols = { }, +} diff --git a/debian/extra/plugins/language_go.lua b/debian/extra/plugins/language_go.lua new file mode 100644 index 0000000..03b93d6 --- /dev/null +++ b/debian/extra/plugins/language_go.lua @@ -0,0 +1,232 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Go", + files = { "%.go$" }, + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "`", "`", '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0[oO_][0-7]+i?", type = "number" }, + { pattern = "-?0x[%x_]+i?", type = "number" }, + { pattern = "-?%d+_%di?", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?i?", type = "number" }, + { pattern = "-?%.?%d+f?i?", type = "number" }, + -- goto label + { pattern = "^%s+()[%a_][%w%_]*()%s*:%s$", -- this is to fix `default:` + type = { "normal", "function", "normal" } + }, + { pattern = "^%s*[%a_][%w%_]*()%s*:%s$", + type = { "function", "normal" } + }, + -- pointer, generic and reference type + { pattern = "[%*~&]()[%a_][%w%_]*", + type = { "operator", "keyword2" } + }, + -- slice type + { pattern = "%[%]()[%a_][%w%_]*", + type = { "operator", "keyword2" } + }, + -- type coerce + { + pattern = "%.%(()[%a_][%w_]*()%)", + type = { "normal", "keyword2", "normal" } + }, + -- struct literal + { pattern = "[%a_][%w%_]*()%s*{%s*", + type = { "keyword2", "normal" } + }, + -- operators + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = ":=", type = "operator" }, + -- function calls + { pattern = "func()%s*[%a_][%w_]*()%f[%[(]", -- function statement + type = {"keyword", "function", "normal"} + }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "%.()[%a_][%w_]*%f[(]", + type = { "normal", "function" } + }, + -- type declaration + { pattern = "type()%s+()[%a_][%w%_]*", + type = { "keyword", "normal", "keyword2" } + }, + -- variable declaration + { pattern = "var()%s+()[%a_][%w%_]*", + type = { "keyword", "normal", "symbol" } + }, + -- goto + { pattern = "goto()%s+()[%a_][%w%_]*", + type = { "keyword", "normal", "function" } + }, + -- if fix + { pattern = "if()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- for fix + { pattern = "for()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- return fix + { pattern = "return()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- range fix + { pattern = "range()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- func fix + { pattern = "func()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- switch fix + { pattern = "switch()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- case fix + { pattern = "case()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- break fix + { pattern = "break()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- continue fix + { pattern = "continue()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- package fix + { pattern = "package()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- go fix + { pattern = "go()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- chan fix + { pattern = "chan()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- defer fix + { pattern = "defer()%s+%f[%a_]", + type = { "keyword", "normal" } + }, + -- field declaration + { pattern = "[%a_][%w%_]*()%s*():%s*%f[%w%p]", + type = { "function", "normal", "operator" } + }, + -- parameters or declarations + { pattern = "[%a_][%w%_]*()%s+()[%*~&]?()[%a_][%w%_]*", + type = { "literal", "normal", "operator", "keyword2" } + }, + { pattern = "[%a_][%w_]*()%s+()%[%]()[%a_][%w%_]*", + type = { "literal", "normal", "normal", "keyword2" } + }, + -- single return type + { + pattern = "%)%s+%(?()[%a_][%w%_]*()%)?%s+%{", + type = { "normal", "keyword2", "normal" } + }, + -- sub fields + { pattern = "%.()[%a_][%w_]*", + type = { "normal", "literal" } + }, + -- every other symbol + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["if"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["for"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["struct"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["default"] = "keyword", + ["const"] = "keyword", + ["package"] = "keyword", + ["import"] = "keyword", + ["func"] = "keyword", + ["var"] = "keyword", + ["type"] = "keyword", + ["interface"] = "keyword", + ["select"] = "keyword", + ["break"] = "keyword", + ["range"] = "keyword", + ["chan"] = "keyword", + ["defer"] = "keyword", + ["go"] = "keyword", + ["fallthrough"] = "keyword", + ["goto"] = "keyword", + ["iota"] = "keyword2", + ["int"] = "keyword2", + ["int64"] = "keyword2", + ["int32"] = "keyword2", + ["int16"] = "keyword2", + ["int8"] = "keyword2", + ["uint"] = "keyword2", + ["uint64"] = "keyword2", + ["uint32"] = "keyword2", + ["uint16"] = "keyword2", + ["uint8"] = "keyword2", + ["uintptr"] = "keyword2", + ["float64"] = "keyword2", + ["float32"] = "keyword2", + ["map"] = "keyword2", + ["string"] = "keyword2", + ["rune"] = "keyword2", + ["bool"] = "keyword2", + ["byte"] = "keyword2", + ["error"] = "keyword2", + ["complex64"] = "keyword2", + ["complex128"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + }, +} + +syntax.add { + name = "Go", + files = { PATHSEP .. "go%.mod" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment"}, + { pattern = "module() %S+()", + type = { "keyword", "string", "normal"} + }, + { pattern = "go() %S+()", + type = { "keyword", "string", "normal" } + }, + { pattern = "%S+() v%S+()", + type = { "string", "keyword", "normal" } + }, + }, + symbols = { + ["require"] = "keyword", + ["module"] = "keyword", + ["go"] = "keyword", + } +} + +syntax.add { + name = "Go", + files = { PATHSEP .. "go%.sum" }, + patterns = { + { pattern = "%S+() v[^/]-() h1:()%S+()=", + type = { "string", "keyword", "normal", "string", "normal" } + }, + { pattern = "%S+() v[^/]-()/%S+() h1:()%S+()=", + type = { "string", "keyword", "string", "normal", "string", "normal" } + }, + }, + symbols = {} +} + diff --git a/debian/extra/plugins/language_graphql.lua b/debian/extra/plugins/language_graphql.lua new file mode 100644 index 0000000..7627ee2 --- /dev/null +++ b/debian/extra/plugins/language_graphql.lua @@ -0,0 +1,42 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "GraphQL", + files = { "%.graphql$", "%.gql$" }, + comment = "#", + block_comment = { '"""', '"""' }, + patterns = { + { pattern = { '"""', '"""' }, type = "comment" }, + { pattern = "#.*", type = "comment" }, + { pattern = { '"', '"', "\\" }, type = "string" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "%s*[@]%s*[%a_][%w_]*", type = "function" }, + { pattern = "!", type = "operator" }, + { pattern = "%s*=%s*", type = "operator" }, + { pattern = "%s*%$[%a_][%w_]*:*", type = "literal" }, + { pattern = "query%s*()[%a_][%w_]*[(]", type = { "keyword", "function" } }, + { pattern = "mutation%s*()[%a_][%w_]*[(]", type = { "keyword", "function" } }, + { pattern = ":%s*%[*()[%a_,%s][%w_,%s]*()%]*()[!]*", type = { "symbol", "literal", "symbol", "operator" } }, + }, + symbols = { + ["query"] = "keyword", + ["mutation"] = "keyword", + ["type"] = "keyword", + ["interface"] = "keyword", + ["input"] = "keyword", + ["fragment"] = "keyword", + ["directive"] = "keyword", + ["extends"] = "keyword", + ["implements"] = "keyword", + ["on"] = "keyword", + ["enum"] = "keyword", + ["scalar"] = "keyword", + ["union"] = "keyword", + ["schema"] = "keyword", + ["extend"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_gravity.lua b/debian/extra/plugins/language_gravity.lua new file mode 100644 index 0000000..d5bd761 --- /dev/null +++ b/debian/extra/plugins/language_gravity.lua @@ -0,0 +1,98 @@ +-- mod-version:3 +local syntax = require 'core.syntax' + +syntax.add { + name = "Gravity", + files = { "%.gravity$" }, + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + { pattern = "#![^\n]+", type = "comment" }, + { pattern = "//[^\n]+", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', "\\" }, type = "string" }, + + { pattern = "[~=!<>]=?", type = "operator" }, + { pattern = "[!=]==", type = "operator" }, + { pattern = "[%+%-%*/%%&|^]", type = "operator" }, + { pattern = "%.%.[%.<]", type = "operator" }, + + { pattern = "0[bB][0-1]+%f[%D]", type = "number" }, + { pattern = "0[oO][0-7]+", type = "number" }, + { pattern = "0[xX]%x+", type = "number" }, + { pattern = "%.?%d+[eE]?%-?%d*", type = "number" }, + + { pattern = "#%s*include%s*%f[\"]", type = "literal"}, + { pattern = "#%s*unittest%s*%f[{]", type = "literal"}, + + --{ pattern = "[%+%-%*/]%s*()%(", type = { "function", "normal" }}, + { pattern = "[%a_][%w_]+%s*%f[%(]", type = "function"}, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["self"] = "keyword2", + + ["Object"] = "literal", + ["Int"] = "literal", + ["Float"] = "literal", + ["String"] = "literal", + ["Bool"] = "literal", + ["Null"] = "literal", + ["Class"] = "literal", + ["Function"] = "literal", + ["Fiber"] = "literal", + ["Instance"] = "literal", + ["List"] = "literal", + ["Map"] = "literal", + ["Range"] = "literal", + + ["System"] = "literal", + ["Math"] = "literal", + ["File"] = "literal", + ["ENV"] = "literal", + + ["if"] = "keyword", + ["in"] = "keyword", + ["or"] = "keyword", + ["is"] = "operator", + ["for"] = "keyword", + ["var"] = "keyword", + ["and"] = "keyword", + ["not"] = "keyword", + ["func"] = "keyword", + ["else"] = "keyword", + ["true"] = "keyword", + ["enum"] = "keyword", + ["case"] = "keyword", + ["null"] = "keyword", + ["file"] = "keyword", + ["lazy"] = "keyword", + ["super"] = "keyword", + ["break"] = "keyword", + ["while"] = "keyword", + ["class"] = "keyword", + ["const"] = "keyword", + ["event"] = "keyword", + ["_func"] = "keyword", + ["_args"] = "keyword", + ["struct"] = "keyword", + ["repeat"] = "keyword", + ["switch"] = "keyword", + ["return"] = "keyword", + ["public"] = "keyword", + ["static"] = "keyword", + ["extern"] = "keyword", + ["import"] = "keyword", + ["module"] = "keyword", + ["default"] = "keyword", + ["private"] = "keyword", + ["continue"] = "keyword", + ["internal"] = "keyword", + ["undefined"] = "keyword", + } +} + + diff --git a/debian/extra/plugins/language_groovy.lua b/debian/extra/plugins/language_groovy.lua new file mode 100644 index 0000000..c9d3a62 --- /dev/null +++ b/debian/extra/plugins/language_groovy.lua @@ -0,0 +1,109 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Groovy", + files = { "%.groovy$", PATHSEP .. "Jenkinsfile$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, -- Single-line comment + { pattern = { "/%*", "%*/" }, type = "comment" }, -- Multi-line comment + { pattern = { '"', '"', '\\' }, type = "string" }, -- String, double quotes + { pattern = { "'", "'", '\\' }, type = "string" }, -- String, apices + { pattern = { "%/", "%/", '\\' }, type = "string" }, -- Slashy string + { pattern = { "%$%/", "%/%$", '\\' }, type = "string" }, -- Dollar slashy string + { pattern = "'\\x%x?%x?%x?%x'", type = "string" }, -- character hexadecimal escape sequence + { pattern = "'\\u%x%x%x%x'", type = "string" }, -- character unicode escape sequence + { pattern = "'\\?.'", type = "string" }, -- character literal + { pattern = "-?0x%x+", type = "number" }, -- ? + { pattern = "-?%d+[%d%.eE]*[a-zA-Z]?", type = "number" }, -- ? + { pattern = "-?%.?%d+", type = "number" }, -- ? + { pattern = "-?[%d_+]+[a-zA-Z]?", type = "number" }, -- ? + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, -- Operators + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- Function/Class/Method/... + { pattern = "[%a_][%w_]*%f[%[]", type = "function" }, -- Custom Type + { regex = "[A-Z]+_?[A-Z]+", type = "keyword2" }, -- Constants + { pattern = "import()%s+()[%w_.]+", type = { "keyword", "normal", "normal" } }, + { pattern = "[%a_][%w_]*", type = "symbol" }, -- ? + { pattern = "[a-zA-Z]+%.+", type = "function" }, -- Lib path + -- TODO: .class. + }, + symbols = { + -- Reserved keywords + ["abstract"] = "keyword", + ["assert"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["class"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["def"] = "keyword", + ["default"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["enum"] = "keyword", + ["extends"] = "keyword", + ["final"] = "keyword", + ["finally"] = "keyword", + ["for"] = "keyword", + ["goto"] = "keyword", + ["if"] = "keyword", + ["implements"] = "keyword", + ["import"] = "keyword", + ["instanceof"] = "keyword", + ["interface"] = "keyword", + ["native"] = "keyword", + ["new"] = "keyword", + ["non-sealed"] = "keyword", + ["package"] = "keyword", + ["public"] = "keyword", + ["protected"] = "keyword", + ["private"] = "keyword", + ["return"] = "keyword", + ["static"] = "keyword", + ["strictfp"] = "keyword", + ["super"] = "keyword", + ["switch"] = "keyword", + ["synchronizedthis"] = "keyword", + ["threadsafe"] = "keyword", + ["throw"] = "keyword", + ["throws"] = "keyword", + ["transient"] = "keyword", + ["try"] = "keyword", + ["while"] = "keyword", + + -- Contextual keywords + ["as"] = "keyword", + ["in"] = "keyword", + ["permitsrecord"] = "keyword", + ["sealed"] = "keyword", + ["trait"] = "keyword", + ["var"] = "keyword", + ["yields"] = "keyword", + + -- ? + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["boolean"] = "literal", + + -- Types + ["char"] = "keyword", + ["byte"] = "keyword", + ["short"] = "keyword", + ["int"] = "keyword", + ["long"] = "keyword", + ["float"] = "keyword", + ["double"] = "keyword", + + ["Integer"] = "keyword", + ["BigInteger"] = "keyword", + ["Long"] = "keyword", + ["Float"] = "keyword", + ["BigDecimal"] = "keyword", + ["Double"] = "keyword", + ["String"] = "keyword", + }, +} diff --git a/debian/extra/plugins/language_hare.lua b/debian/extra/plugins/language_hare.lua new file mode 100644 index 0000000..fba4f44 --- /dev/null +++ b/debian/extra/plugins/language_hare.lua @@ -0,0 +1,91 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Hare", + files = { "%.ha$" }, + comment = "//", + patterns = { + { pattern = "//.*", type = "comment" }, + -- { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "^@", type = "keyword" }, + }, + symbols = { + ["export"] = "keyword", + ["fn"] = "keyword", + ["use"] = "keyword", + ["const"] = "keyword", + ["let"] = "keyword", + ["defer"] = "keyword", + ["static"] = "keyword", + ["yield"] = "keyword", + ["case"] = "keyword", + ["match"] = "keyword", + ["return"] = "keyword", + ["switch"] = "keyword", + ["for"] = "keyword", + ["if"] = "keyword", + ["type"] = "keyword", + ["abort"] = "keyword", + ["align"] = "keyword", + ["alloc"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["def"] = "keyword", + ["delete"] = "keyword", + ["else"] = "keyword", + ["free"] = "keyword", + ["insert"] = "keyword", + ["is"] = "keyword", + ["len"] = "keyword", + ["offset"] = "keyword", + ["vaarg"] = "keyword", + ["vaend"] = "keyword", + ["vastart"] = "keyword", + ["fini"] = "keyword", + ["init"] = "keyword", + ["test"] = "keyword", + + ["nullable"] = "keyword2", + ["str"] = "keyword2", + ["void"] = "keyword2", + ["int"] = "keyword2", + ["uint"] = "keyword2", + ["struct"] = "keyword2", + ["union"] = "keyword2", + ["enum"] = "keyword2", + ["u8"] = "keyword2", + ["u16"] = "keyword2", + ["u32"] = "keyword2", + ["u64"] = "keyword2", + ["i8"] = "keyword2", + ["i16"] = "keyword2", + ["i32"] = "keyword2", + ["i64"] = "keyword2", + ["f32"] = "keyword2", + ["f64"] = "keyword2", + ["size"] = "keyword2", + ["rune"] = "keyword2", + ["bool"] = "keyword2", + ["valist"] = "keyword2", + ["uintptr"] = "keyword2", + ["rconst"] = "keyword2", + ["fconst"] = "keyword2", + ["iconst"] = "keyword2", + + ["fmt"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + ["signed"] = "literal", + ["unsigned"] = "literal", + ["null"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_haxe.lua b/debian/extra/plugins/language_haxe.lua new file mode 100644 index 0000000..0289d8d --- /dev/null +++ b/debian/extra/plugins/language_haxe.lua @@ -0,0 +1,113 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Haxe Compiler Arguments", + files = "%.hxml$", + comment = "#", + patterns = { + { pattern = "#.*", type = "comment"}, + { pattern = "%-[%-%w_]*", type="keyword"}, + { pattern = "%.()%u[%w_]*", type = {"normal", "keyword2"}}, + }, + symbols = {} +} + +syntax.add { + name = "Haxe String Interpolation", + files = "%.hx__string_interp$", + patterns = { + { pattern = {"%${", "}", "\\"}, type="keyword", syntax = ".hx" }, + { pattern = {"%$", "%s", "\\"}, type="keyword", syntax = ".hx" }, + { pattern = "[^ ]", type = "string"} + }, + symbols = {} +} + +syntax.add { + name = "Haxe Regular Expressions", + files = "%.hx__regex$", + patterns = { + { pattern = "[%[%]%(%)]", type = "string" }, + { pattern = "[%.%*%+%?%^%$%|%-]", type = "operator" }, + }, + symbols = {} +} + +syntax.add { + name = "Haxe", + files = "%.hx$", + comment = "//", + patterns = { + { pattern = {"%~%/", "%/[igmsu]*"}, type = "keyword2", syntax = ".hx__regex" }, + { pattern = "%.%.%.", type = "operator" }, + { pattern = "%<()%u[%w_]*()%>*", type = {"operator", "keyword2", "operator"}}, + { pattern = "%#%s*[%a_]*().*\n", type = {"keyword", "normal"} }, + { pattern = "import%s+()%u[%w]*", type = {"keyword", "keyword2"}}, + { pattern = "import%s+()[%w%.]*%.()%u[%w]*", type = {"keyword", "normal", "keyword2"}}, + { pattern = "abstract%s+()%u[%w_]*%s*%(()%s*%u[%w_]*", type = {"keyword2", "normal", "keyword2"} }, + { pattern = "from%s+()%u[%w_]*%s+()to%s+()%u[%w_]*", type = {"keyword", "keyword2", "keyword", "keyword2"}}, + { pattern = "//.*\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", "\\" }, type = "string", syntax = ".hx__string_interp"}, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+%.[%deE]+", type = "number" }, + { pattern = "-?%d+[%deE]+", type = "number" }, + { pattern = "[%+%-%.=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*()%s*%f[(]", type = {"function", "normal"} }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = ":()%u[%a_][%w_]*", type = {"normal", "keyword2"}}, + { pattern = "@:[%a_][%w_]*%f[(]", type = "keyword" }, + { pattern = "%$type", type = "keyword" }, + }, + symbols = { + ["abstract"] = "keyword2", + ["extends"] = "keyword2", + ["typedef"] = "keyword2", + ["implements"] = "keyword2", + ["import"] = "keyword", + ["package"] = "keyword", + ["using"] = "keyword2", + ["macro"] = "keyword2", + ["class"] = "keyword", + ["function"] = "keyword2", + ["var"] = "keyword2", + ["extern"] = "keyword2", + ["in"] = "keyword", + ["cast"] = "keyword", + ["get"] = "keyword", + ["set"] = "keyword", + ["never"] = "keyword", + ["inline"] = "keyword", + ["trace"] = "keyword", + ["final"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["continue"] = "keyword", + ["default"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["enum"] = "keyword", + ["for"] = "keyword", + ["if"] = "keyword", + ["interface"] = "keyword", + ["new"] = "keyword", + ["override"] = "keyword", + ["private"] = "keyword", + ["public"] = "keyword", + ["return"] = "keyword", + ["static"] = "keyword", + ["switch"] = "keyword", + ["this"] = "keyword", + ["throw"] = "keyword", + ["try"] = "keyword", + ["while"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_hlsl.lua b/debian/extra/plugins/language_hlsl.lua new file mode 100644 index 0000000..e1d5570 --- /dev/null +++ b/debian/extra/plugins/language_hlsl.lua @@ -0,0 +1,277 @@ +-- mod-version:3 + +local style = require "core.style" +local common = require "core.common" + +local syntax = require "core.syntax" + +syntax.add { + name = "HLSL", + files = { "%.hlsl$", }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { "#", "[^\\]\n" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + + { pattern = "int[1-9]x[1-9]", type = "keyword2" }, + { pattern = "int1[0-6]x[1-9]", type = "keyword2" }, + { pattern = "int[1-9]x1[0-6]", type = "keyword2" }, + { pattern = "int1[0-6]x1[0-6]", type = "keyword2" }, + { pattern = "int[1-4]", type = "keyword2" }, + + { pattern = "uint[1-9]x[1-9]", type = "keyword2" }, + { pattern = "uint1[0-6]x[1-9]", type = "keyword2" }, + { pattern = "uint[1-9]x1[0-6]", type = "keyword2" }, + { pattern = "uint1[0-6]x1[0-6]", type = "keyword2" }, + { pattern = "uint[1-4]", type = "keyword2" }, + + { pattern = "dword[1-9]x[1-9]", type = "keyword2" }, + { pattern = "dword1[0-6]x[1-9]", type = "keyword2" }, + { pattern = "dword[1-9]x1[0-6]", type = "keyword2" }, + { pattern = "dword1[0-6]x1[0-6]", type = "keyword2" }, + { pattern = "dword[1-4]", type = "keyword2" }, + + { pattern = "half[1-9]x[1-9]", type = "keyword2" }, + { pattern = "half1[0-6]x[1-9]", type = "keyword2" }, + { pattern = "half[1-9]x1[0-6]", type = "keyword2" }, + { pattern = "half1[0-6]x1[0-6]", type = "keyword2" }, + { pattern = "half[1-4]", type = "keyword2" }, + + { pattern = "float[1-9]x[1-9]", type = "keyword2" }, + { pattern = "float1[0-6]x[1-9]", type = "keyword2" }, + { pattern = "float[1-9]x1[0-6]", type = "keyword2" }, + { pattern = "float1[0-6]x1[0-6]", type = "keyword2" }, + { pattern = "float[1-4]", type = "keyword2" }, + + { pattern = "double[1-9]x[1-9]", type = "keyword2" }, + { pattern = "double1[0-6]x[1-9]", type = "keyword2" }, + { pattern = "double[1-9]x1[0-6]", type = "keyword2" }, + { pattern = "double1[0-6]x1[0-6]", type = "keyword2" }, + { pattern = "double[1-4]", type = "keyword2" }, + + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + --https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-keywords + --The symbols are added in the order they appear on this webpage, which is alphabetically + ["AppendStructuredBuffer"]= "keyword", + ["asm"] = "keyword", + ["asm_fragment"] = "keyword", + ["BlendState"] = "keyword2", + ["bool"] = "keyword2", + ["break"] = "keyword", + ["Buffer"] = "keyword2", + ["ByteAddressBuffer"]= "keyword2", + ["case"] = "keyword", + ["cbuffer"] = "keyword2", + ["centroid"] = "keyword2", + ["class"] = "keyword", + ["column_major"] = "keyword", + ["compile"] = "keyword", + ["compile_fragment"] = "keyword", + ["CompileShader"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["ComputeShader"] = "keyword", + ["ConsumeStructuredBuffer"]= "keyword", + ["default"] = "keyword", + ["DepthStencilState"]= "keyword", + ["DepthStencilView"] = "keyword", + ["discard"] = "keyword", + ["do"] = "keyword", + ["double"] = "keyword2", + ["DomainShader"] = "keyword2", + ["dword"] = "keyword2", + ["else"] = "keyword", + ["export"] = "keyword", + ["extern"] = "keyword", + ["false"] = "literal", + ["float"] = "keyword2", + ["for"] = "keyword", + ["fxgroup"] = "keyword2", + ["GeometryShader"] = "keyword2", + ["groupshared"] = "keyword", + ["half"] = "keyword2", + ["HullShader"] = "keyword2", + ["if"] = "keyword", + ["in"] = "keyword", + ["inline"] = "keyword", + ["inout"] = "keyword", + ["InputPatch"] = "keyword2", + ["int"] = "keyword2", + ["interface"] = "keyword", + ["line"] = "keyword2", + ["lineadj"] = "keyword2", + ["linear"] = "keyword", + ["LineStream"] = "keyword2", + ["matrix"] = "keyword2", + ["min16float"] = "keyword2", + ["min10float"] = "keyword2", + ["min16int"] = "keyword2", + ["min12int"] = "keyword2", + ["min16uint"] = "keyword2", + ["namespace"] = "keyword", + ["nointerpolation"] = "keyword", + ["noperspective"] = "keyword", + ["NULL"] = "literal", + ["out"] = "keyword", + ["OutputPatch"] = "keyword2", + ["packoffset"] = "keyword", + ["pass"] = "keyword", + ["pixelfragment"] = "keyword", + ["PixelShader"] = "keyword2", + ["point"] = "keyword2", + ["PointStream"] = "keyword2", + ["precise"] = "keyword", + ["RasterizerState"] = "keyword2", + ["RenderTargetView"] = "keyword2", + ["return"] = "keyword", + ["register"] = "keyword", + ["row_major"] = "keyword", + ["RWBuffer"] = "keyword2", + ["RWByteAddressBuffer"]= "keyword2", + ["RWStructuredBuffer"]= "keyword2", + ["RWTexture1D"] = "keyword2", + ["RWTexture1DArray"] = "keyword2", + ["RWTexture2D"] = "keyword2", + ["RWTexture2DArray"] = "keyword2", + ["RWTexture3D"] = "keyword2", + ["sample"] = "keyword", + ["sampler"] = "keyword2", + ["SamplerState"] = "keyword2", + ["SamplerComparisonState"]= "keyword2", + ["shared"] = "keyword", + ["snorm"] = "keyword", + ["stateblock"] = "keyword", + ["stateblock_state"] = "keyword", + ["static"] = "keyword", + ["string"] = "keyword2", + ["struct"] = "keyword", + ["switch"] = "keyword", + ["StructuredBuffer"] = "keyword2", + ["tbuffer"] = "keyword2", + ["technique"] = "keyword2", + ["technique10"] = "keyword2", + ["technique11"] = "keyword2", + ["texture"] = "keyword2", + ["Texture1D"] = "keyword2", + ["Texture1DArray"] = "keyword2", + ["Texture2D"] = "keyword2", + ["Texture2DArray"] = "keyword2", + ["Texture2DMS"] = "keyword2", + ["Texture2DMSArray"] = "keyword2", + ["Texture3D"] = "keyword2", + ["TextureCube"] = "keyword2", + ["TextureCubeArray"] = "keyword2", + ["true"] = "literal", + ["typedef"] = "keyword", + ["triangle"] = "keyword2", + ["triangleadj"] = "keyword2", + ["TriangleStream"] = "keyword2", + ["uint"] = "keyword2", + ["uniform"] = "keyword", + ["unorm"] = "keyword", + ["unsigned"] = "keyword", + ["vector"] = "keyword2", + ["vertexfragment"] = "keyword2", + ["VertexShader"] = "keyword2", + ["void"] = "keyword", + ["volatile"] = "keyword", + ["while"] = "keyword", + + --https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-intrinsic-functions + --The symbols are added in the order they appear on this webpage, which is alphabetically + ["abort"] = "keyword", + ["abs"] = "keyword", + ["acos"] = "keyword", + ["all"] = "keyword", + ["any"] = "keyword", + ["asdouble"] = "keyword", + ["asfloat"] = "keyword", + ["asin"] = "keyword", + ["asint"] = "keyword", + ["asuint"] = "keyword", + ["atan"] = "keyword", + ["atan2"] = "keyword", + ["ceil"] = "keyword", + ["clamp"] = "keyword", + ["clip"] = "keyword", + ["cos"] = "keyword", + ["cosh"] = "keyword", + ["countbits"] = "keyword", + ["cross"] = "keyword", + ["ddx"] = "keyword", + ["ddx_coarse"] = "keyword", + ["ddx_fine"] = "keyword", + ["ddy"] = "keyword", + ["ddy_coarse"] = "keyword", + ["ddy_fine"] = "keyword", + ["degrees"] = "keyword", + ["determinant"] = "keyword", + ["distance"] = "keyword", + ["dot"] = "keyword", + ["dst"] = "keyword", + ["errorf"] = "keyword", + ["exp"] = "keyword", + ["exp2"] = "keyword", + ["f16tof32"] = "keyword", + ["f32tof16"] = "keyword", + ["faceforward"] = "keyword", + ["firstbithigh"]= "keyword", + ["firstbitlow"] = "keyword", + ["floor"] = "keyword", + ["fma"] = "keyword", + ["fmod"] = "keyword", + ["frac"] = "keyword", + ["frexp"] = "keyword", + ["fwidth"] = "keyword", + ["isfinite"] = "keyword", + ["isinf"] = "keyword", + ["isnan"] = "keyword", + ["ldexp"] = "keyword", + ["length"] = "keyword", + ["lerp"] = "keyword", + ["lit"] = "keyword", + ["log"] = "keyword", + ["log10"] = "keyword", + ["log2"] = "keyword", + ["mad"] = "keyword", + ["max"] = "keyword", + ["min"] = "keyword", + ["modf"] = "keyword", + ["msad4"] = "keyword", + ["mul"] = "keyword", + ["noise"] = "keyword", + ["normalize"] = "keyword", + ["pow"] = "keyword", + ["printf"] = "keyword", + ["radians"] = "keyword", + ["rcp"] = "keyword", + ["reflect"] = "keyword", + ["refract"] = "keyword", + ["reversebits"] = "keyword", + ["round"] = "keyword", + ["rsqrt"] = "keyword", + ["saturate"] = "keyword", + ["sign"] = "keyword", + ["sin"] = "keyword", + ["sincos"] = "keyword", + ["sinh"] = "keyword", + ["smoothstep"] = "keyword", + ["sqrt"] = "keyword", + ["step"] = "keyword", + ["tan"] = "keyword", + ["tanh"] = "keyword", + ["transpose"] = "keyword", + ["trunc"] = "keyword", + }, +} + diff --git a/debian/extra/plugins/language_hs.lua b/debian/extra/plugins/language_hs.lua new file mode 100644 index 0000000..39dbc7a --- /dev/null +++ b/debian/extra/plugins/language_hs.lua @@ -0,0 +1,48 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Haskell", + files = { "%.hs$" }, + comment = "--", + block_comment = {"{-", "-}"}, + patterns = { + { pattern = "%-%-.*", type = "comment" }, + { pattern = { "{%-", "%-}" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[!%#%$%%&*+./%<=>%?@\\%^|%-~:]", type = "operator" }, + { pattern = "[%a_'][%w_']*", type = "symbol" }, + }, + symbols = { + ["as"] = "keyword", + ["case"] = "keyword", + ["of"] = "keyword", + ["class"] = "keyword", + ["data"] = "keyword", + ["default"] = "keyword", + ["deriving"] = "keyword", + ["do"] = "keyword", + ["forall"] = "keyword", + ["foreign"] = "keyword", + ["hiding"] = "keyword", + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["import"] = "keyword", + ["infix"] = "keyword", + ["infixl"] = "keyword", + ["infixr"] = "keyword", + ["let"] = "keyword", + ["in"] = "keyword", + ["mdo"] = "keyword", + ["module"] = "keyword", + ["newtype"] = "keyword", + ["qualified"] = "keyword", + ["type"] = "keyword", + ["where"] = "keyword", + }, +} diff --git a/debian/extra/plugins/language_htaccess.lua b/debian/extra/plugins/language_htaccess.lua new file mode 100644 index 0000000..8c2909e --- /dev/null +++ b/debian/extra/plugins/language_htaccess.lua @@ -0,0 +1,212 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +local keywords = { + "AcceptFilter", "AcceptMutex", "AcceptPathInfo", "AccessFileName", "Action", "AddAlt", + "AddAltByEncoding", "AddAltByType", "AddCharset", "AddDefaultCharset", "AddDescription", + "AddEncoding", "AddHandler", "AddIcon", "AddIconByType", "AddIconByEncoding", "AddIconByEncoding", + "AddIconByType", "AddInputFilter", "AddLanguage", "AddModuleInfo", "AddOutputFilterByType", + "AddOutputFilter", "AddOutputFilterByType", "AddType", "Alias", "ScriptAlias", "ServerAlias", + "AliasMatch", "Allow", "AllowOverride", "AllowEncodedSlashes", "_ROUTING__allow_GET", + "_ROUTING__allow_HEAD", "_ROUTING__allow_POST", "Allow", "AllowOverride", "AllowEncodedSlashes", + "AllowCONNECT", "AllowEncodedSlashes", "AllowMethods", "AllowOverride", "AllowOverrideList", + "Anonymous", "Anonymous_LogEmail", "Anonymous_NoUserID", "Anonymous_Authoritative", + "Anonymous_LogEmail", "Anonymous_MustGiveEmail", "Anonymous_NoUserId", "Anonymous_VerifyEmail", + "AssignUserID", "AsyncRequestWorkerFactor", "AuthAuthoritative", "AuthBasicAuthoritative", + "AuthBasicFake", "AuthBasicProvider", "AuthBasicUseDigestAlgorithm", "AuthDBDUserPWQuery", + "AuthDBDUserRealmQuery", "AuthDBMAuthoritative", "AuthDBMGroupFile", "AuthDBMType", + "AuthDBMUserFile", "AuthDefaultAuthoritative", "AuthDigestAlgorithm", "AuthDigestDomain", + "AuthDigestFile", "AuthDigestGroupFile", "AuthDigestNcCheck", "AuthDigestNonceFormat", + "AuthDigestNonceLifetime", "AuthDigestProvider", "AuthDigestQop", "AuthDigestShmemSize", + "AuthFormAuthoritative", "AuthFormBody", "AuthFormDisableNoStore", "AuthFormFakeBasicAuth", + "AuthFormLocation", "AuthFormLoginRequiredLocation", "AuthFormLoginSuccessLocation", + "AuthFormLogoutLocation", "AuthFormMethod", "AuthFormMimetype", "AuthFormPassword", + "AuthFormProvider", "AuthFormSitePassphrase", "AuthFormSize", "AuthFormUsername", "AuthGroupFile", + "AuthLDAPAuthoritative", "AuthLDAPAuthorizePrefix", "AuthLDAPAuthzEnabled", + "AuthLDAPBindAuthoritative", "AuthLDAPBindDN", "AuthLDAPBindPassword", "AuthLDAPCharsetConfig", + "AuthLDAPCompareAsUser", "AuthLDAPCompareDNOnServer", "AuthLDAPDereferenceAliases", + "AuthLDAPEnabled", "AuthLDAPFrontPageHack", "AuthLDAPGroupAttribute", "AuthLDAPGroupAttributeIsDN", + "AuthLDAPGroupAttributeIsDN", "AuthLDAPInitialBindAsUser", "AuthLDAPInitialBindPattern", + "AuthLDAPMaxSubGroupDepth", "AuthLDAPRemoteUserAttribute", "AuthLDAPRemoteUserIsDN", + "AuthLDAPSearchAsUser", "AuthLDAPSubGroupAttribute", "AuthLDAPSubGroupClass", "AuthLDAPURL", + "AuthMerging", "AuthName", "AuthnCacheContext", "AuthnCacheEnable", "AuthnCacheProvideFor", + "AuthnCacheProvider", "AuthnCacheSOCache", "AuthnCacheTimeout", "AuthnzFcgiCheckAuthnProvider", + "AuthnzFcgiDefineProvider", "AuthType", "AuthUserFile", "AuthzDBDLoginToReferer", "AuthzDBDQuery", + "AuthzDBDRedirectQuery", "AuthzDBMAuthoritative", "AuthzDBMType", "AuthzDefaultAuthoritative", + "AuthzGroupFileAuthoritative", "AuthzLDAPAuthoritative", "AuthzOwnerAuthoritative", + "AuthzSendForbiddenOnFailure", "AuthzUserAuthoritative", "BalancerGrowth", "BalancerInherit", + "BalancerMember", "BalancerNonce", "BalancerPersist", "BrowserMatch", "BrowserMatchNoCase", + "BrowserMatchNoCase", "BS2000Account", "BufferedLogs", "DeflateBufferSize", "BufferSize", + "CacheDefaultExpire", "CacheDetailHeader", "CacheDirLength", "CacheDirLevels", "CacheDisable", + "CacheEnable", "CacheExpiryCheck", "cachefile", "CacheForceCompletion", "CacheGcClean", + "CacheGcDaily", "CacheGcInterval", "CacheGcMemUsage", "CacheGcUnused", "CacheHeader", + "CacheIgnoreCacheControl", "CacheIgnoreHeaders", "CacheIgnoreNoLastMod", "CacheIgnoreQueryString", + "CacheIgnoreURLSessionIdentifiers", "CacheKeyBaseURL", "CacheLastModifiedFactor", "CacheLock", + "CacheLockMaxAge", "CacheLockPath", "CacheMaxExpire", "CacheMaxFileSize", "CacheMinExpire", + "CacheMinFileSize", "CacheNegotiatedDocs", "CacheQuickHandler", "CacheReadSize", "CacheReadTime", + "CacheRoot", "MCacheSize", "CacheSocache", "CacheSocacheMaxSize", "CacheSocacheMaxTime", + "CacheSocacheMinTime", "CacheSocacheReadSize", "CacheSocacheReadTime", "CacheStaleOnError", + "CacheStoreExpired", "CacheStoreNoStore", "CacheStorePrivate", "CacheTimeMargin", "CaseFilter", + "CaseFilterIn", "CGIDScriptTimeout", "CGIMapExtension", "CGIPassAuth", "CGIVar", "CharsetDefault", + "CharsetOptions", "CharsetSourceEnc", "CheckCaseOnly", "CheckSpelling", "ChildperUserID", "ChrootDir", + "ClientRecheckTime", "ContentDigest", "CookieDomain", "CookieExpires", "CookieLog", "CookieName", + "CookieStyle", "CookieTracking", "CoreDumpDirectory", "CustomLog", "DAV", "DAVDepthInfinity", + "DAVGenericLockDB", "DAVLockDB", "DAVMinTimeout", "DBDExptime", "DBDInitSQL", "DBDKeep", "DBDMax", + "DBDMin", "DBDParams", "DBDPersist", "DBDPrepareSQL", "DBDriver", "DefaultIcon", "DefaultLanguage", + "DefaultRuntimeDir", "DefaultType", "Define", "DeflateBufferSize", "DeflateCompressionLevel", + "DeflateFilterNote", "DeflateInflateLimitRequestBody", "DeflateInflateRatioBurst", + "DeflateInflateRatioLimit", "DeflateMemLevel", "DeflateWindowSize", "Deny", "Deny", "DirectoryIndex", + "DirectorySlash", "DirectoryCheckHandler", "DirectoryIndex", "DirectoryIndexRedirect", "DirectoryMatch", + "DirectorySlash", "VirtualDocumentRoot", "DocumentRoot", "DTracePrivileges", "DumpIOInput", + "DumpIOLogLevel", "DumpIOOutput", "EnableExceptionHook", "EnableMMAP", "EnableSendfile", "ErrorDocument", + "ErrorLog", "ErrorLogFormat", "ExpiresActive", "ExpiresByType", "ExpiresDefault", "ExtendedStatus", + "ExtFilterDefine", "ExtFilterOptions", "FallbackResource", "FancyIndexing", "FileETag", "Files", + "FilesMatch", "FilterChain", "FilterDeclare", "FilterProtocol", "FilterProvider", "FilterTrace", + "ForceLanguagePriority", "ForceType", "ForensicLog", "GlobalLog", "GprofDir", "AuthGroupFile", "Group", + "AuthDBMGroupFile", "AuthLDAPGroupAttribute", "AuthLDAPGroupAttributeIsDN", "AuthzGroupFileAuthoritative", + "H2AltSvc", "H2AltSvcMaxAge", "H2Direct", "H2MaxSessionStreams", "H2MaxWorkerIdleSeconds", "H2MaxWorkers", + "H2MinWorkers", "H2ModernTLSOnly", "H2Push", "H2PushDiarySize", "H2PushPriority", "H2SerializeHeaders", + "H2SessionExtraFiles", "H2StreamMaxMemSize", "H2TLSCoolDownSecs", "H2TLSWarmUpSize", "H2Upgrade", + "H2WindowSize", "Header", "RequestHeader", "HeaderName", "HeaderName", "HeartbeatAddress", + "HeartbeatListen", "HeartbeatMaxServers", "HeartbeatStorage", "HostnameLookups", "IdentityCheck", + "IdentityCheckTimeout", "IfDefine", "IfModule", "IfVersion", "ImapBase", "ImapDefault", "ImapMenu", + "Include", "IncludeOptional", "IndexHeadInsert", "IndexIgnore", "IndexIgnoreReset", "IndexOptions", + "IndexOrderDefault", "IndexStyleSheet", "InputSed", "ISAPIAppendLogToErrors", "ISAPIAppendLogToQuery", + "ISAPICacheFile", "ISAPIFakeAsync", "ISAPILogNotSupported", "ISAPIReadAheadBuffer", "KeepAlive", + "KeepAliveTimeout", "MaxKeepAliveRequests", "KeepAliveTimeout", "KeptBodySize", "LanguagePriority", + "ForceLanguagePriority", "LDAPCacheEntries", "LDAPCacheTTL", "LDAPConnectionPoolTTL", + "LDAPConnectionTimeout", "LDAPLibraryDebug", "LDAPOpCacheEntries", "LDAPOpCacheTTL", "LDAPReferralHopLimit", + "LDAPReferrals", "LDAPRetries", "LDAPRetryDelay", "LDAPSharedCacheFile", "LDAPSharedCacheSize", + "LDAPTimeout", "LDAPTrustedCA", "LDAPTrustedCAType", "LDAPTrustedClientCert", "LDAPTrustedGlobalCert", + "LDAPTrustedMode", "LDAPVerifyServerCert", "LimitRequestBody", "RLimitMEM", "LimitRequestFields", + "LimitRequestFieldSize", "LimitRequestLine", "LimitExcept", "LimitInternalRecursion", "LimitRequestBody", + "LimitRequestFields", "LimitRequestFieldsize", "LimitRequestLine", "LimitXMLRequestBody", "LoadFile", + "LoadModule", "Location", "LocationMatch", "LockFile", "LogFormat", "LogIOTrackTTFB", "RewriteLogLevel", + "LogLevel", "LogMessage", "LuaAuthzProvider", "Lua_____ByteCodeHack", "LuaCodeCache", "LuaHookAccessChecker", + "LuaHookAuthChecker", "LuaHookCheckUserID", "LuaHookFixups", "LuaHookInsertFilter", "LuaHookLog", + "LuaHookMapToStorage", "LuaHookTranslateName", "LuaHookTypeChecker", "LuaInherit", "LuaInputFilter", + "LuaMapHandler", "LuaOutputFilter", "LuaPackageCPath", "LuaPackagePath", "LuaQuickHandler", "LuaRoot", + "LuaScope", "MaxClientConnections", "MaxClients", "MaxConnectionsPerChild", "MaxKeepAliveRequests", + "MaxMemFree", "MaxRangeOverlaps", "MaxRangeReversals", "MaxRanges", "MaxRequestsPerChild", + "MaxRequestsPerThread", "MaxRequestWorkers", "MaxSpareServers", "MaxSpareThreads", "MaxThreads", + "MaxThreadsPerChild", "MCacheMaxObjectCount", "MCacheMaxObjectSize", "MCacheMaxStreamingBuffer", + "MCacheMinObjectSize", "MCacheRemovalAlgorithm", "MCacheSize", "MemcacheConnTTL", "MergeTrailers", + "MetaDir", "MetaFiles", "MetaSuffix", "MimeMagicFile", "MinSpareServers", "MinSpareThreads", "mmapfile", + "ModemStandard", "ModMimeUsePathInfo", "MultiviewsMatch", "Mutex", "NameVirtualHost", "NoProxy", + "NumServers", "NWSSLTrustedCerts", "NWSSLUpgradeable", "Options", "RewriteOptions", "IndexOptions", + "Order", "IndexOrderDefault", "Order", "IndexOrderDefault", "OutputSed", "PassEnv", "php_admin_flag", + "php_admin_value", "php_flag", "php_value", "PidFile", "Port", "PrivilegesMode", "FilterProtocol", + "Protocol", "ProtocolEcho", "Protocols", "ProtocolsHonorOrder", "ProxyPass", "ProxyPassMatch", + "ProxyPassReverse", "ProxyRequests", "ProxyAddHeaders", "ProxyBadHeader", "ProxyBlock", "ProxyDomain", + "ProxyErrorOverride", "ProxyExpressDBMFile", "ProxyExpressDBMType", "ProxyExpressEnable", + "ProxyFtpDirCharset", "ProxyFtpEscapeWildcards", "ProxyFtpListOnWildcard", "ProxyHCExpr", "ProxyHCTemplate", + "ProxyHCTPsize", "ProxyHTMLBufSize", "ProxyHTMLCharsetOut", "ProxyHTMLDoctype", "ProxyHTMLEnable", + "ProxyHTMLEvents", "ProxyHTMLExtended", "ProxyHTMLFixups", "ProxyHTMLInterp", "ProxyHTMLLinks", + "ProxyHTMLMeta", "ProxyHTMLStripComments", "ProxyHTMLURLMap", "ProxyIOBufferSize", "ProxyMatch", + "ProxyMaxForwards", "ProxyPass", "ProxyPassMatch", "ProxyPassReverse", "ProxyPassInherit", + "ProxyPassInterpolateEnv", "ProxyPassMatch", "ProxyPassReverse", "ProxyPassReverseCookieDomain", + "ProxyPassReverseCookiePath", "ProxyPreserveHost", "ProxyReceiveBufferSize", "ProxyRemote", + "ProxyRemoteMatch", "ProxyRequests", "ProxySCGIInternalRedirect", "ProxySCGISendfile", "ProxySet", + "ProxySourceAddress", "ProxyStatus", "ProxyTimeout", "ProxyVia", "QualifyRedirectURL", "ReadmeName", + "Redirect", "RedirectMatch", "RedirectTemp", "RedirectPermanent", "RedirectMatch", "RedirectPermanent", + "RedirectTemp", "ReflectorHeader", "RemoteIPHeader", "RemoteIPInternalProxy", "RemoteIPInternalProxyList", + "RemoteIPProxiesHeader", "RemoteIPTrustedProxy", "RemoteIPTrustedProxyList", "RemoveCharset", + "RemoveEncoding", "RemoveHandler", "RemoveInputFilter", "RemoveLanguage", "RemoveOutputFilter", "RemoveType", + "RequestHeader", "RequestReadTimeout", "RequestTimeout", "Require", "RewriteBase", "RewriteCond", + "RewriteEngine", "RewriteLock", "RewriteLog", "RewriteLogLevel", "RewriteLogLevel", "RewriteMap", + "RewriteOptions", "RewriteRule", "RLimitCPU", "RLimitMEM", "RLimitNPROC", "Satisfy", "ScoreboardFile", + "ScoreBoardFile", "Script", "ScriptAlias", "ScriptAlias", "ScriptAliasMatch", "ScriptInterpreterSource", + "ScriptLog", "ScriptLogBuffer", "ScriptLogLength", "Scriptsock", "ScriptSock", "SecureListen", + "SeeRequestTail", "SerfCluster", "SerfPass", "ServerAdmin", "ServerAlias", "ServerLimit", "ServerName", + "ServerPath", "ServerRoot", "ServerSignature", "ServerTokens", "Session", "SessionCookieName", + "SessionCookieName2", "SessionCookieRemove", "SessionCryptoCipher", "SessionCryptoDriver", + "SessionCryptoPassphrase", "SessionCryptoPassphraseFile", "SessionDBDCookieName", "SessionDBDCookieName2", + "SessionDBDCookieRemove", "SessionDBDDeleteLabel", "SessionDBDInsertLabel", "SessionDBDPerUser", + "SessionDBDSelectLabel", "SessionDBDUpdateLabel", "SessionEnv", "SessionExclude", "SessionHeader", + "SessionInclude", "SessionMaxAge", "SetEnvIfNoCase", "SetEnv", "SetEnvIf", "SetEnvIfNoCase", "SetEnvIf", + "SetEnvIfExpr", "SetEnvIfNoCase", "SetHandler", "SetInputFilter", "SetOutputFilter", "SimpleProcCount", + "SimpleThreadCount", "SSIAccessEnable", "SSIEndTag", "SSIErrorMsg", "SSIEtag", "SSILastModified", + "SSILegacyExprParser", "SSIStartTag", "SSITimeFormat", "SSIUndefinedEcho", "SSLLog", "SSLLogLevel", + "StartServers", "StartThreads", "Substitute", "SubstituteInheritBefore", "SubstituteMaxLineLength", + "Suexec", "SuexecUserGroup", "ThreadLimit", "ThreadsPerChild", "ThreadStackSize", "KeepAliveTimeout", + "AuthnCacheTimeout", "TraceEnable", "TransferLog", "TrustedProxy", "TypesConfig", "UnDefine", "UnsetEnv", + "UseCanonicalName", "UseCanonicalPhysicalPort", "User", "AuthUserFile", "UserDir", "AuthDBMUserFile", + "Anonymous_NoUserID", "UserDir", "VHostCGIMode", "VHostCGIPrivs", "VHostGroup", "VHostPrivs", "VHostSecure", + "VHostUser", "VirtualDocumentRoot", "VirtualDocumentRootIP", "VirtualHost", "VirtualScriptAlias", + "VirtualScriptAliasIP", "Win32DisableAcceptEx", "XBitHack", "xml2EncAlias", "xml2EncDefault", + "xml2StartParse", "SecFilterEngine", "from", "SSLOptions", "SSLRequireSSL", "SSLRequire" +} +local literals = { + "on", "off", "deny", "denied", "all", "allow", "basic", "valid-user", "append", "unset", "set", "eq", + "any", "email" +} + +local symbols = {} +for _,lt in ipairs(literals) do + symbols[lt] = "literal" + symbols[lt:gsub("%f[%w]%l", string.upper)] = "literal" +end +for _,kw in ipairs(keywords) do + symbols[kw] = "keyword" +end + +local url_syntax = { + patterns = { + { pattern = "[%%$]%d+", type = "keyword2" }, + { pattern = "[%%$]%{[%w_:%-]+%}", type = "keyword2" }, + { pattern = "[^%%$%s]", type = "string" } + }, + symbols = {} +} +local xml_syntax = { + patterns = {{ pattern = { '"', '"', '\\' }, type = "string" }}, + symbols = {} +} + +syntax.add { + name = ".htaccess File", + files = { PATHSEP .. "^%.htaccess$" }, + comment = "#", + patterns = { + -- Comments + { pattern = "#.*\n", type = "comment" }, + -- Strings + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { '`', '`', '\\' }, type = "string" }, + -- URLs + { pattern = { "%w-://", "%f[%s]" }, type = "string", syntax = url_syntax }, + { pattern = { "%f[%S]/", "%f[%s]" }, type = "string", syntax = url_syntax }, + -- Mime types + { pattern = "%f[%w]application/[%w%._+-]+", type = "keyword2" }, + { pattern = "%f[%w]font/[%w%._+-]+", type = "keyword2" }, + { pattern = "%f[%w]image/[%w%._+-]+", type = "keyword2" }, + { pattern = "%f[%w]text/[%w%._+-]+", type = "keyword2" }, + { pattern = "%f[%w]audio/[%w%._+-]+", type = "keyword2" }, + { pattern = "%f[%w]video/[%w%._+-]+", type = "keyword2" }, + -- IPs + { pattern = "%d+%.%d+%.%d+%.%d+", type = "keyword2" }, + { pattern = "%d+%.%d+%.%d+%.%d+/%d+", type = "keyword2" }, + { regex = "([a-f0-9:]+:+)+[a-f0-9]+", type = "keyword2" }, + -- Emails + { pattern = "%w+@%w+%.%w+", type = "keyword2" }, + -- Rewrite option sections + { pattern = "%f[%S]%b[]", type = "number" }, + -- XML tags + { pattern = { "" }, type = "literal", syntax = xml_syntax }, + -- Variables + { pattern = "[%%$]%d+", type = "keyword2" }, + { pattern = "[%%$]%{[%w_:%-]+%}", type = "keyword2" }, + -- Numbers + { pattern = "A?%d+", type = "number" }, + -- Operators + { pattern = "%f[%S][!=+%-]+", type = "operator" }, + -- Regex (TODO: improve this, it's pretty naive and only works on some regex) + { pattern = "%f[^%s!]%^%S*", type = "literal" }, + { pattern = "%f[^%s!]%S*%$", type = "literal" }, + { pattern = "%f[^%s!]%b()", type = "literal" }, + -- Everything else + { pattern = "[%a_][%w_-]*", type = "symbol" }, + }, + symbols = symbols +} diff --git a/debian/extra/plugins/language_ignore.lua b/debian/extra/plugins/language_ignore.lua new file mode 100644 index 0000000..2192d7a --- /dev/null +++ b/debian/extra/plugins/language_ignore.lua @@ -0,0 +1,20 @@ +-- mod-version:3 + +local syntax = require "core.syntax" +local style = require "core.style" +local common = require "core.common" + +style.syntax["ignore"] = { common.color "#72B886" } +style.syntax["exclude"] = { common.color "#F36161" } + +syntax.add { + name = ".ignore file", + files = { PATHSEP .. "%..*ignore$" }, + comment = "#", + patterns = { + { regex = "^ *#.*$", type = "comment" }, + { regex = { "(?=^ *!.)", "$" }, type = "ignore" }, + { regex = { "(?=.)", "$" }, type = "exclude" }, + }, + symbols = {} +} diff --git a/debian/extra/plugins/language_ini.lua b/debian/extra/plugins/language_ini.lua new file mode 100644 index 0000000..b517e0e --- /dev/null +++ b/debian/extra/plugins/language_ini.lua @@ -0,0 +1,27 @@ +-- mod-version:3 + +local syntax = require "core.syntax" + +syntax.add { + name = "INI", + files = { "%.ini$", "%.inf$", "%.cfg$", PATHSEP .. "%.editorconfig$", "%.theme$", "%.dockitem$", "%.desktop$" }, + comment = ';', + patterns = { + { pattern = ";.*", type = "comment" }, + { pattern = "#.*", type = "comment" }, + { pattern = { "%[", "%]" }, type = "keyword" }, + + { pattern = { '"""', '"""', '\\' }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'''", "'''" }, type = "string" }, + { pattern = { "'", "'" }, type = "string" }, + { pattern = "[A-Za-z0-9_%.%-]+%s*%f[=]", type = "function" }, + { pattern = "[%-+]?[0-9_]+%.[0-9_]+", type = "number" }, + { pattern = "[%-+]?[0-9_]+", type = "number" }, + { pattern = "[a-z]+", type = "symbol" }, + }, + symbols = { + ["true"] = "literal", + ["false"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_java.lua b/debian/extra/plugins/language_java.lua new file mode 100644 index 0000000..873d827 --- /dev/null +++ b/debian/extra/plugins/language_java.lua @@ -0,0 +1,87 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Java", + files = { "%.java$" }, + comment = "//", + patterns = { + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "'\\x%x?%x?%x?%x'", type = "string" }, -- character hexadecimal escape sequence + { pattern = "'\\u%x%x%x%x'", type = "string" }, -- character unicode escape sequence + { pattern = "'\\?.'", type = "string" }, -- character literal + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { regex = "(?>\\w+\\.?)+(?=\\s+\\w++\\s*\\=\\s*)", type = "function" }, -- Class name when creating an object + { regex = "[A-Z][A-Z_]+", type = "keyword2" }, -- Constants + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["abstract"] = "keyword", + ["assert"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["class"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["default"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["enum"] = "keyword", + ["extends"] = "keyword", + ["final"] = "keyword", + ["finally"] = "keyword", + ["for"] = "keyword", + ["if"] = "keyword", + ["goto"] = "keyword", + ["implements"] = "keyword", + ["import"] = "keyword", + ["instanceof"] = "keyword", + ["interface"] = "keyword", + ["native"] = "keyword", + ["new"] = "keyword", + ["package"] = "keyword", + ["permits"] = "keyword", + ["private"] = "keyword", + ["protected"] = "keyword", + ["public"] = "keyword", + ["record"] = "keyword", + ["return"] = "keyword", + ["sealed"] = "keyword", + ["static"] = "keyword", + ["strictfp"] = "keyword", + ["super"] = "keyword", + ["switch"] = "keyword", + ["synchronized"] = "keyword", + ["this"] = "keyword", + ["throw"] = "keyword", + ["throws"] = "keyword", + ["transient"] = "keyword", + ["try"] = "keyword", + ["var"] = "keyword", + ["void"] = "keyword", + ["volatile"] = "keyword", + ["while"] = "keyword", + ["yield"] = "keyword", + + ["boolean"] = "keyword2", + ["byte"] = "keyword2", + ["char"] = "keyword2", + ["double"] = "keyword2", + ["float"] = "keyword2", + ["int"] = "keyword2", + ["long"] = "keyword2", + ["short"] = "keyword2", + + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal" + } +} diff --git a/debian/extra/plugins/language_jiyu.lua b/debian/extra/plugins/language_jiyu.lua new file mode 100644 index 0000000..dbf9d0e --- /dev/null +++ b/debian/extra/plugins/language_jiyu.lua @@ -0,0 +1,93 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Jiyu", + files = { "%.jiyu$", "%.jyu$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { "\"\"\"", "\"\"\"" }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0b[0-1]+", type = "number" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*", type = "number" }, + { pattern = "-?%.?%d+?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[<>~=+-*/]=", type = "operator" }, + { pattern = "[..]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[#@]?[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- Keywords + ["func"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["while"] = "keyword", + ["defer"] = "keyword", + ["return"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["fallthrough"] = "keyword", + ["struct"] = "keyword", + ["union"] = "keyword", + ["enum"] = "keyword", + ["using"] = "keyword", + ["var"] = "keyword", + ["let"] = "keyword", + ["typealias"] = "keyword", + ["library"] = "keyword", + ["framework"] = "keyword", + ["temporary_c_vararg"] = "keyword2"; + -- Builtin procedures and directives + ["cast"] = "keyword2", + ["sizeof"] = "keyword2", + ["alignof"] = "keyword2", + ["strideof"] = "keyword2", + ["offsetof"] = "keyword2", + ["type_of"] = "keyword2", + ["type_info"] = "keyword2", + ["#if"] = "keyword2", + ["#load"] = "keyword2", + ["#import"] = "keyword2", + ["#clang_import"] = "keyword2", + ["#file"] = "keyword2", + ["#filepath"] = "keyword2", + ["#line"] = "keyword2", + + ["@c_function"] = "keyword2", + ["@export"] = "keyword2", + ["@flags"] = "keyword2", + ["@metaprogram"] = "keyword2", + -- Types + ["string"] = "keyword2", + ["int"] = "keyword2", + ["uint"] = "keyword2", + ["uint8"] = "keyword2", + ["uint16"] = "keyword2", + ["uint32"] = "keyword2", + ["uint64"] = "keyword2", + ["uint128"] = "keyword2", + ["int8"] = "keyword2", + ["int16"] = "keyword2", + ["int32"] = "keyword2", + ["int64"] = "keyword2", + ["int128"] = "keyword2", + ["float"] = "keyword2", + ["double"] = "keyword2", + ["void"] = "keyword2", + ["bool"] = "keyword2", + ["Type"] = "keyword2", + + -- Literals + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + } +} diff --git a/debian/extra/plugins/language_json.lua b/debian/extra/plugins/language_json.lua new file mode 100644 index 0000000..26d05a2 --- /dev/null +++ b/debian/extra/plugins/language_json.lua @@ -0,0 +1,34 @@ +-- mod-version:3 priority:110 + +local syntax = require "core.syntax" + +syntax.add { + name = "JSON", + + files = { + "%.json$", + "%.cjson$", + "%.jsonc$", + "%.ipynb$", + }, + + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + + -- cjson support + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + + { regex = [["(?:[^"\\]|\\.)*"()\s*:]], type = { "keyword", "normal" } }, -- key + { regex = [["(?:[^"\\]|\\.)*"]], type = "string" }, -- value + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "null", type = "literal" }, + { pattern = "true", type = "literal" }, + { pattern = "false", type = "literal" } + }, + symbols = { } +} + diff --git a/debian/extra/plugins/language_jsx.lua b/debian/extra/plugins/language_jsx.lua new file mode 100644 index 0000000..941e786 --- /dev/null +++ b/debian/extra/plugins/language_jsx.lua @@ -0,0 +1,73 @@ +-- mod-version:3 +-- Almost identical to JS, with the exception that / shouldn't denote a regex. Current JS syntax highlighter will highlight half the document due to closing tags. +local syntax = require "core.syntax" + +syntax.add { + name = "JSX", + files = { "%.jsx$", "%.astro$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "`", "`", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "%f[^<]/?[%a_][%w_]*", type = "function" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["async"] = "keyword", + ["await"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["class"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["debugger"] = "keyword", + ["default"] = "keyword", + ["delete"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["export"] = "keyword", + ["extends"] = "keyword", + ["finally"] = "keyword", + ["for"] = "keyword", + ["from"] = "keyword", + ["function"] = "keyword", + ["get"] = "keyword", + ["if"] = "keyword", + ["import"] = "keyword", + ["in"] = "keyword", + ["instanceof"] = "keyword", + ["let"] = "keyword", + ["new"] = "keyword", + ["return"] = "keyword", + ["set"] = "keyword", + ["static"] = "keyword", + ["super"] = "keyword", + ["switch"] = "keyword", + ["throw"] = "keyword", + ["try"] = "keyword", + ["typeof"] = "keyword", + ["var"] = "keyword", + ["void"] = "keyword", + ["while"] = "keyword", + ["with"] = "keyword", + ["yield"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["undefined"] = "literal", + ["arguments"] = "keyword2", + ["Infinity"] = "keyword2", + ["NaN"] = "keyword2", + ["this"] = "keyword2", + }, +} diff --git a/debian/extra/plugins/language_julia.lua b/debian/extra/plugins/language_julia.lua new file mode 100644 index 0000000..347592f --- /dev/null +++ b/debian/extra/plugins/language_julia.lua @@ -0,0 +1,112 @@ +-- mod-version:3 +-- Support for the Julia programming language: +-- Covers the most used keywords up to Julia version 1.6.4 + +local syntax = require "core.syntax" + +syntax.add { + name = "Julia", + files = { "%.jl$" }, + comment = "#", + patterns = { + {pattern = {"#=", "=#"}, type="comment" }, + {pattern = "#.*$", type="comment" }, + { pattern = { 'icxx"""', '"""' }, type = "string", syntax = ".cpp" }, + { pattern = { 'cxx"""', '"""' }, type = "string", syntax = ".cpp" }, + { pattern = { 'py"""', '"""' }, type = "string", syntax = ".py" }, + { pattern = { 'js"""', '"""' }, type = "string", syntax = ".js" }, + { pattern = { 'md"""', '"""' }, type = "string", syntax = ".md" }, + { pattern = "%d%w*[%.-+*//]", type = "number" }, + { pattern = "0[oO_][0-7]+", type = "number" }, + { pattern = "-?0x[%x_]+", type = "number" }, + { pattern = "-?0b[%x_]+", type = "number" }, + { pattern = "-?%d+_%d", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[^%d%g]%:%a*", type = "function" }, + { pattern = "[%+%-=/%*%^%%<>!~|&%:]",type = "operator"}, + { pattern = '""".*"""', type = "string" }, + { pattern = '".*"', type = "string" }, + { pattern = '[bv]".*"', type = "string" }, + { pattern = 'r".*$', type = "string" }, + { pattern = "'\\.*'", type = "string" }, + { pattern = "'.'", type = "string" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "%g*!", type="function"}, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- keywords + ["baremodule"] = "keyword", + ["begin"] = "keyword", + ["break"] = "keyword", + ["catch"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["do"] = "keyword", + ["Dict"] = "keyword", + ["Set"] = "keyword", + ["Union"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["end"] = "keyword", + ["export"] = "keyword", + ["finally"] = "keyword", + ["for"] = "keyword", + ["function"] = "keyword", + ["global"] = "keyword", + ["if"] = "keyword", + ["in"] = "keyword", + ["import"] = "keyword", + ["let"] = "keyword", + ["local"] = "keyword", + ["macro"] = "keyword", + ["type"] = "keyword", + ["module"] = "keyword", + ["mutable"] = "keyword", + ["quote"] = "keyword", + ["return"] = "keyword", + ["try"] = "keyword", + ["typeof"] = "keyword", + ["using"] = "keyword", + ["while"] = "keyword", + ["where"] = "keyword", + + -- types + ["struct"] = "keyword2", + ["abstract"] = "keyword2", + ["primitive"] = "keyword2", + ["mutable"] = "keyword2", + ["Char"] = "keyword2", + ["Bool"] = "keyword2", + ["Int"] = "keyword2", + ["Integer"] = "keyword2", + ["Int8"] = "keyword2", + ["UInt8"] = "keyword2", + ["Int16"] = "keyword2", + ["UInt16"] = "keyword2", + ["Int32"] = "keyword2", + ["UInt32"] = "keyword2", + ["Int64"] = "keyword2", + ["UInt64"] = "keyword2", + ["Int128"] = "keyword2", + ["UInt128"] = "keyword2", + ["Float16"] = "keyword2", + ["Float32"] = "keyword2", + ["Float64"] = "keyword2", + ["Vector"] = "keyword2", + ["Matrix"] = "keyword2", + ["Ref"] = "keyword2", + ["String"] = "keyword2", + ["Function"] = "keyword2", + ["Number"] = "keyword2", + + -- literals + ["missing"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + ["nothing"] = "literal", + ["Inf"] = "literal", + ["NaN"] = "literal", + } +} diff --git a/debian/extra/plugins/language_kdl.lua b/debian/extra/plugins/language_kdl.lua new file mode 100644 index 0000000..a08a0bb --- /dev/null +++ b/debian/extra/plugins/language_kdl.lua @@ -0,0 +1,84 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +local identifier = "\"?[^%d%s\\/%(%){}<>;%[%]=,\"][^%s\\/%(%){}<>;%[%]=,\"]*\"?" + +syntax.add { + name = "KDL", + files = { "%.kdl" }, + space_handling = false, + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + { + pattern = "^%s*".. identifier .."%s*", + type = "keyword" + },-- + { pattern = "%s+", type = "normal" }, + { + pattern = "[{;]%s*()" .. identifier .. "%s*", + type = {"normal", "keyword"} + },-- + { pattern = { "r#+\"", "\"#+" }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "[%-+]?0x[%x_]+", type = "number" }, + { pattern = "[%-+]?0b[01_]+", type = "number" }, + { pattern = "[%-+]?0o[0-7_]+", type = "number" }, + { + pattern = "[%-+]?[%d_]+%.[%d_]+e[%-+]?[%d_]+", + type = "number" + }, + { pattern = "[%-+]?[%d_]+%.[%d_]+", type = "number" }, + { pattern = "[%-+]?[%d_]+e[%-+]?[%d_]+", type = "number" }, + { pattern = "[%-+]?[%d_]+", type = "number" }, + { pattern = "/[%-/].-\n", type = "comment" }, + { pattern = {"/%*", "%*/"}, type = "comment" }, + { pattern = identifier, type = "keyword2" }, + { + pattern = "%(()" .. identifier .. "()%)", + type = {"normal", "function", "normal"} + }, + }, + symbols = { + ["null"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + ["i8"] = "function", + ["i32"] = "function", + ["i16"] = "function", + ["i64"] = "function", + ["u8"] = "function", + ["u32"] = "function", + ["u16"] = "function", + ["u64"] = "function", + ["isize"] = "function", + ["usize"] = "function", + ["f32"] = "function", + ["f64"] = "function", + ["decimal64"] = "function", + ["decimal128"] = "function", + ["date-time"] = "function", + ["time"] = "function", + ["date"] = "function", + ["duration"] = "function", + ["decimal"] = "function", + ["currency"] = "function", + ["country-2"] = "function", + ["country-3"] = "function", + ["country-subdivision"] = "function", + ["email"] = "function", + ["idn-email"] = "function", + ["hostname"] = "function", + ["idn-hostname"] = "function", + ["ipv4"] = "function", + ["ipv6"] = "function", + ["url"] = "function", + ["url-reference"] = "function", + ["irl"] = "function", + ["irl-reference"] = "function", + ["url-template"] = "function", + ["uuid"] = "function", + ["regex"] = "function", + ["base64"] = "function", + }, +} diff --git a/debian/extra/plugins/language_kotlin.lua b/debian/extra/plugins/language_kotlin.lua new file mode 100644 index 0000000..c3d6b4f --- /dev/null +++ b/debian/extra/plugins/language_kotlin.lua @@ -0,0 +1,124 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Kotlin", + files = { "%.kt$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, -- Comment, single-line + { pattern = { "/%*", "%*/" }, type = "comment" }, -- Comment, multi-line + { pattern = { '"', '"', '\\' }, type = "string" }, -- String, quotation marks + { pattern = { "'", "'", '\\' }, type = "string" }, -- String, apices + { pattern = "'\\x%x?%x?%x?%x'", type = "string" }, -- Character hexadecimal escape sequence + { pattern = "'\\u%x%x%x%x'", type = "string" }, -- Character unicode escape sequence + { pattern = "'\\?.'", type = "string" }, -- Character literal + { pattern = "-?0x%x+", type = "number" }, -- ? + { pattern = "-?%d+[%deE]*f?", type = "number" }, -- ? + { pattern = "-?%.?%d+f?", type = "number" }, -- ? + { regex = [[\-\>(?=\s)]], type = "operator" }, -- Lambda + { regex = [[\.{2}\!~|&]", type = "operator" }, -- Operators + { regex = [[\?(?=\.)]], type = "operator" }, -- ?. operator + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- Function/Method/Class + { regex = "`[\\w_\\s]+`(?=\\s*\\()", type = "function" }, -- Test Method + { regex = [[let(?=\s\{)]], type = "function" }, -- ? operator + { regex = [[\?\:(?=\s?)]], type = "operator" }, -- elvis operator + { regex = [[this(?=\.?\@?)]], type = "keyword" }, -- this keyword + { regex = "\\@\\w+", type = "keyword2" }, -- Annotations + { regex = [[[a-zA-Z]+\@(?=\s?[a-zA-Z])]], type = "keyword2" }, -- Annotations (this pattern is lower priority than the `this keyword` pattern) + { regex = "[A-Z][A-Z_]+", type = "keyword2" }, -- Constants, FULL UPPERCASE + { pattern = "import()%s+()[%w_.]+", type = { "keyword", "normal", "normal" } }, + { pattern = "[%a_][%w_]*", type = "symbol" }, -- ? + }, + symbols = { + -- Hard keywords + ["as"] = "keyword", + ["break"] = "keyword", + ["class"] = "keyword", + ["continue"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["fun"] = "keyword", + ["if"] = "keyword", + ["in"] = "keyword", + ["!in"] = "keyword", + ["interface"] = "keyword", + ["is"] = "keyword", + ["!is"] = "keyword", + ["object"] = "keyword", + ["package"] = "keyword", + ["return"] = "keyword", + ["super"] = "keyword", + ["this"] = "keyword", + ["throw"] = "keyword", + ["try"] = "keyword", + ["typealias"] = "keyword", + ["typeof"] = "keyword", + ["val"] = "keyword", + ["var"] = "keyword", + ["when"] = "keyword", + ["while"] = "keyword", + + -- Soft keywords + ["by"] = "keyword", + ["catch"] = "keyword", + ["constructor"] = "keyword", + ["delegate"] = "keyword", + ["dynamic"] = "keyword", + ["field"] = "keyword", + ["file"] = "keyword", + ["finally"] = "keyword", + ["get"] = "keyword", + ["import"] = "keyword", + ["init"] = "keyword", + ["param"] = "keyword", + ["property"] = "keyword", + ["receiver"] = "keyword", + ["set"] = "keyword", + ["setparam"] = "keyword", + ["value"] = "keyword", + ["where"] = "keyword", + + -- Modifier keywords + ["abstract"] = "keyword", + ["actual"] = "keyword", + ["annotation"] = "keyword", + ["companion"] = "keyword", + ["const"] = "keyword", + ["crossinline"] = "keyword", + ["data"] = "keyword", + ["enum"] = "keyword", + ["expect"] = "keyword", + ["external"] = "keyword", + ["final"] = "keyword", + ["inline"] = "keyword", + ["inner"] = "keyword", + ["infix"] = "keyword", + ["internal"] = "keyword", + ["lateinit"] = "keyword", + ["noinline"] = "keyword", + ["open"] = "keyword", + ["operator"] = "keyword", + ["out"] = "keyword", + ["override"] = "keyword", + ["private"] = "keyword", + ["protected"] = "keyword", + ["public"] = "keyword", + ["reified"] = "keyword", + ["sealed"] = "keyword", + ["suspend"] = "keyword", + ["tailrec"] = "keyword", + ["vararg"] = "keyword", + + -- Special identifiers + ["it"] = "keyword", + + -- Boolean + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_lilypond.lua b/debian/extra/plugins/language_lilypond.lua new file mode 100644 index 0000000..a3f84f1 --- /dev/null +++ b/debian/extra/plugins/language_lilypond.lua @@ -0,0 +1,22 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "LilyPond", + files = { "%.i?ly$" }, + comment = "%%", + block_comment = { "%%{", "%%}" }, + patterns = { + { pattern = "#%(()[%a_]%S*", type = { "operator", "function" } }, + { pattern = {"%%{", "%%}"}, type = "comment" }, + { pattern = "%%.*", type = "comment" }, + { pattern = "#[%w_-]*", type = "keyword2" }, + { pattern = "\\%a%w+", type = "keyword" }, + { pattern = "\\\\", type = "operator" }, + { pattern = "[%(%){}%[%]<>=/~%-%_']", type = "operator" }, + { pattern = {'"', '"', "\\"}, type = "string" }, + { pattern = "-?%.?%d+", type = "number" }, + }, + symbols = {} +} + diff --git a/debian/extra/plugins/language_liquid.lua b/debian/extra/plugins/language_liquid.lua new file mode 100644 index 0000000..ad40a79 --- /dev/null +++ b/debian/extra/plugins/language_liquid.lua @@ -0,0 +1,145 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +local liquid_syntax = { + patterns = { + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?%d+[%d%.]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "%w+", type = "symbol" }, + }, + symbols = { + ["abs"] = "keyword2", + ["and"] = "operator", + ["append"] = "keyword2", + ["assign"] = "keyword", + ["at_least"] = "keyword2", + ["at_most"] = "keyword2", + ["break"] = "keyword", + ["camelcase"] = "keyword2", + ["capitalize"] = "keyword2", + ["capture"] = "keyword", + ["endcapture"] = "keyword", + ["case"] = "keyword", + ["ceil"] = "keyword2", + ["comment"] = "keyword", + ["endcomment"] = "keyword", + ["concat"] = "keyword2", + ["contains"] = "operator", + ["cycle"] = "keyword", + ["date"] = "keyword2", + ["decrement"] = "keyword", + ["default"] = "keyword2", + ["divided_by"] = "keyword2", + ["downcase"] = "keyword2", + ["else"] = "keyword", + ["elsif"] = "keyword", + ["false"] = "literal", + ["first"] = "keyword2", + ["floor"] = "keyword2", + ["for"] = "keyword", + ["endfor"] = "keyword", + ["forloop"] = "literal", + ["handleize"] = "keyword2", + ["handle"] = "keyword2", + ["if"] = "keyword", + ["endif"] = "keyword", + ["increment"] = "keyword", + ["index0"] = "literal", + ["index"] = "literal", + ["in"] = "operator", + ["join"] = "keyword2", + ["last"] = "keyword2", + ["length"] = "literal", + ["limit"] = "keyword", + ["lstrip"] = "keyword", + ["map"] = "keyword2", + ["minus"] = "keyword2", + ["modulo"] = "keyword2", + ["nil"] = "literal", + ["null"] = "literal", + ["offset"] = "keyword2", + ["or"] = "operator", + ["pluralize"] = "keyword2", + ["plus"] = "keyword2", + ["prepend"] = "keyword2", + ["raw"] = "keyword", + ["endraw"] = "keyword", + ["removefirst"] = "keyword2", + ["remove"] = "keyword2", + ["replacefirst"] = "keyword2", + ["replace"] = "keyword2", + ["reversed"] = "operator", + ["reverse"] = "keyword2", + ["rindex0"] = "literal", + ["rindex"] = "literal", + ["round"] = "keyword2", + ["rstrip"] = "keyword2", + ["size"] = "keyword2", + ["slice"] = "keyword2", + ["sort"] = "keyword2", + ["split"] = "keyword2", + ["strip"] = "keyword2", + ["strip_newlines"] = "keyword2", + ["times"] = "keyword2", + ["true"] = "literal", + ["truncate"] = "keyword2", + ["truncatewords"] = "keyword2", + ["uniq"] = "keyword2", + ["unless"] = "keyword", + ["endunless"] = "keyword", + ["upcase"] = "keyword2", + ["when"] = "keyword", + ["where"] = "keyword2" + + }, +} + +syntax.add { + name = "Liquid", + files = { "%.liquid?$" }, + patterns = { + { pattern = { "{%%", "%%}" }, syntax = liquid_syntax, type = "function" }, + { pattern = { "{{", "}}" }, syntax = liquid_syntax, type = "function" }, + { + pattern = { + "<%s*[sS][cC][rR][iI][pP][tT]%s+[tT][yY][pP][eE]%s*=%s*" .. + "['\"]%a+/[jJ][aA][vV][aA][sS][cC][rR][iI][pP][tT]['\"]%s*>", + "<%s*/[sS][cC][rR][iI][pP][tT]>" + }, + syntax = ".js", + type = "function" + }, + { + pattern = { + "<%s*[sS][cC][rR][iI][pP][tT]%s*>", + "<%s*/%s*[sS][cC][rR][iI][pP][tT]>" + }, + syntax = ".js", + type = "function" + }, + { + pattern = { + "<%s*[sS][tT][yY][lL][eE][^>]*>", + "<%s*/%s*[sS][tT][yY][lL][eE]%s*>" + }, + syntax = ".css", + type = "function" + }, + { pattern = { "" }, type = "comment" }, + { pattern = { '%f[^>][^<]', '%f[<{]' }, type = "normal" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "%f[^<]![%a_][%w_]*", type = "keyword2" }, + { pattern = "%f[^<][%a_][%w_]*", type = "function" }, + { pattern = "%f[^<]/[%a_][%w_]*", type = "function" }, + { pattern = "[%a_][%w_]*", type = "keyword" }, + { pattern = "[/<>=]", type = "operator" } + }, + symbols = {}, +} + diff --git a/debian/extra/plugins/language_lobster.lua b/debian/extra/plugins/language_lobster.lua new file mode 100644 index 0000000..a0e133f --- /dev/null +++ b/debian/extra/plugins/language_lobster.lua @@ -0,0 +1,79 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Lobster", + files = "%.lobster$", + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + + { pattern = "struct%s()[%a_][%w_]*", type = { "keyword", "keyword2" } }, + { pattern = "class%s()[%a_][%w_]*", type = { "keyword", "keyword2" } }, + { pattern = "[%w_]+%s*%f[{]", type = "keyword2" }, + + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { '"""', '"""' }, type = "string" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d+[%d%.eE]*f?", type = "number" }, + { pattern = "%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&%?]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["import"] = "keyword", + ["from"] = "keyword", + ["def"] = "keyword", + ["fn"] = "keyword", + ["return"] = "keyword", + ["program"] = "keyword", + ["private"] = "keyword", + ["resource"] = "keyword", + + -- not really keywords but provides control-flow constructs + ["if"] = "keyword", + ["guard"] = "keyword", + ["for"] = "keyword", + ["while"] = "keyword", + ["else"] = "keyword", + + ["enum"] = "keyword", + ["enum_flags"] = "keyword", + + ["int"] = "keyword2", + ["float"] = "keyword2", + ["string"] = "keyword2", + ["any"] = "keyword2", + ["void"] = "keyword2", + + ["is"] = "keyword", + ["typeof"] = "keyword", + ["var"] = "keyword", + ["let"] = "keyword", + ["pakfile"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["default"] = "keyword", + ["namespace"] = "keyword", + ["constructor"] = "keyword", + ["operator"] = "keyword", + ["super"] = "keyword", + ["abstract"] = "keyword", + ["attribute"] = "keyword", + ["member"] = "keyword", + ["member_frame"] = "keyword", + ["static"] = "keyword", + ["static_frame"] = "keyword", + ["not"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["struct"] = "keyword", + ["class"] = "keyword", + + ["nil"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_lox.lua b/debian/extra/plugins/language_lox.lua new file mode 100644 index 0000000..a6b3c43 --- /dev/null +++ b/debian/extra/plugins/language_lox.lua @@ -0,0 +1,34 @@ +-- mod-version:3 +local syntax = require 'core.syntax' + +syntax.add { + name = "Lox", + files = { "%.lox$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { '"', '"' }, type = "string" }, + { pattern = "%a[%w_]*()%s*%f[(]", type = {"function", "normal"} }, + { pattern = "[%a_][%w_]*%s*%f[(]", type = "function" }, + { pattern = "%d+%.?%d*", type = "number" }, + { pattern = "%a%w*", type = "symbol" }, + }, + symbols = { + ["and"] = "keyword", + ["class"] = "keyword", + ["else"] = "keyword", + ["false"] = "literal", + ["for"] = "keyword", + ["fun"] = "keyword", + ["if"] = "keyword", + ["nil"] = "literal", + ["or"] = "keyword", + ["print"] = "keyword", + ["return"] = "keyword", + ["super"] = "keyword2", + ["this"] = "keyword2", + ["true"] = "keyword", + ["var"] = "keyword", + ["while"] = "keyword", + }, +} diff --git a/debian/extra/plugins/language_make.lua b/debian/extra/plugins/language_make.lua new file mode 100644 index 0000000..eed01f5 --- /dev/null +++ b/debian/extra/plugins/language_make.lua @@ -0,0 +1,19 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Makefile", + files = { PATHSEP .. "[Mm]akefile$", "%.mk$" }, + comment = "#", + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = [[\.]], type = "normal" }, + { pattern = "$[@^<%%?+|*]", type = "keyword2" }, + { pattern = "$%(.-%)", type = "symbol" }, + { pattern = "%f[%w_][%d%.]+%f[^%w_]", type = "number" }, + { pattern = "%..*:", type = "keyword2" }, + { pattern = ".*:", type = "function" }, + }, + symbols = { + }, +} diff --git a/debian/extra/plugins/language_marte.lua b/debian/extra/plugins/language_marte.lua new file mode 100644 index 0000000..3410e17 --- /dev/null +++ b/debian/extra/plugins/language_marte.lua @@ -0,0 +1,42 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "MARTe", + files = { "%.mrt$", "%.marte$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "%-?%.inf", type = "number" }, + { pattern = "%.NaN", type = "number" }, + { + pattern = "Class%s+()=()%s+[%a_][%w_:]*", + type = { "keyword", "operator", "keyword2"} + }, + { + pattern = "Type%s+()=()%s+[%a_][%w_]*", + type = { "keyword", "operator", "keyword2"} + }, + { + pattern = "[%+%$][%a_][%w_]+%s()=", + type = {"function", "operator"} + }, + { pattern = "=%s+()[%a_][%w_]+", type = "string" }, + { + pattern = "[%a_][%w_]+%s()=", + type = {"keyword", "operator"} + }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d+[%d%.'eE]*f?", type = "number" }, + { pattern = "%.?%d+f?", type = "number" }, + { pattern = "%a[%w_]+", type = "literal" }, + }, + symbols = { + ["true"] = "number", + ["false"] = "number", + }, +} diff --git a/debian/extra/plugins/language_meson.lua b/debian/extra/plugins/language_meson.lua new file mode 100644 index 0000000..ebf906f --- /dev/null +++ b/debian/extra/plugins/language_meson.lua @@ -0,0 +1,36 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Meson", + files = { PATHSEP .. "meson%.build$", PATHSEP .. "meson_options%.txt$" }, + comment = "#", + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "'''", "'''" }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+%d*", type = "number" }, + { pattern = "[%+%-=/%%%*!]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["elif"] = "keyword", + ["endif"] = "keyword", + ["foreach"] = "keyword", + ["endforeach"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["and"] = "keyword", + ["not"] = "keyword", + ["or"] = "keyword", + ["in"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_miniscript.lua b/debian/extra/plugins/language_miniscript.lua new file mode 100644 index 0000000..afe0a2b --- /dev/null +++ b/debian/extra/plugins/language_miniscript.lua @@ -0,0 +1,102 @@ +-- mod-version:3 +local syntax = require 'core.syntax' + +syntax.add { + name = "MiniScript", + files = { "%.ms$" }, + comment = "//", + patterns = { + { pattern = "//.*", type = "comment" }, + { pattern = { '"', '"' }, type = "string" }, + { pattern = "[<>!=]=", type = "operator" }, + { pattern = "[%+%-%*%/%^@<>:]", type = "operator" }, + { pattern = "%d%.%d*[eE][-+]?%d+", type = "number" }, + { pattern = "%d%.%d*", type = "number" }, + { pattern = "%.?%d*[eE][-+]?%d+", type = "number" }, + { pattern = "%.?%d+", type = "number" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["if"] = "keyword", + ["not"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["else"] = "keyword", + ["then"] = "keyword", + ["for"] = "keyword", + ["in"] = "keyword", + ["while"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["function"] = "keyword", + ["end"] = "keyword", + ["return"] = "keyword", + ["new"] = "keyword", + ["isa"] = "keyword", + ["self"] = "keyword2", + + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["globals"] = "literal", + ["locals"] = "literal", + ["outer"] = "literal", + + -- Built-in types's classes + ["number"] = "literal", + ["string"] = "literal", + ["list"] = "literal", + ["map"] = "literal", + ["funcRef"] = "literal", + + -- Intrinsic functions + ["abs"] = "function", + ["acos"] = "function", + ["asin"] = "function", + ["atan"] = "function", + ["bitAnd"] = "function", + ["bitOr"] = "function", + ["bitXor"] = "function", + ["ceil"] = "function", + ["char"] = "function", + ["code"] = "function", + ["cos"] = "function", + ["floor"] = "function", + ["hash"] = "function", + ["hasIndex"] = "function", + ["indexes"] = "function", + ["indexOf"] = "function", + ["insert"] = "function", + ["join"] = "function", + ["len"] = "function", + ["log"] = "function", + ["lower"] = "function", + ["pi"] = "function", + ["pop"] = "function", + ["print"] = "function", + ["pull"] = "function", + ["push"] = "function", + ["range"] = "function", + ["remove"] = "function", + ["replace"] = "function", + ["rnd"] = "function", + ["round"] = "function", + ["shuffle"] = "function", + ["sign"] = "function", + ["sin"] = "function", + ["slice"] = "function", + ["sort"] = "function", + ["split"] = "function", + ["sqrt"] = "function", + ["str"] = "function", + ["sum"] = "function", + ["tan"] = "function", + ["time"] = "function", + ["upper"] = "function", + ["val"] = "function", + ["values"] = "function", + ["version"] = "function", + ["wait"] = "function", + ["yield"] = "function", + }, +} diff --git a/debian/extra/plugins/language_moon.lua b/debian/extra/plugins/language_moon.lua new file mode 100644 index 0000000..3ccb7ea --- /dev/null +++ b/debian/extra/plugins/language_moon.lua @@ -0,0 +1,64 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "MoonScript", + files = "%.moon$", + headers = "^#!.*[ /]moon", + comment = "--", + patterns = { + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "%[%[", "%]%]" }, type = "string" }, + { pattern = "%-%-.-\n", type = "comment" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "%.%.%.?", type = "keyword2" }, + { pattern = "[<>~=]=", type = "keyword2" }, + { pattern = "[%+%-=/%*%^%%#<>]", type = "keyword2" }, + { pattern = "[%a_][%w_]*%s*%f[(\"{]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = {"\\", "[%a_][%w_]*"}, type = "function" }, + { pattern = {"%.", "[%a_][%w_]*"}, type = "function" }, + { pattern = "@[%a_][%w_]*", type = "keyword2" }, + { pattern = "@", type = "keyword2" }, + { pattern = "!", type = "keyword2" }, + { pattern = "[%p]", type = "keyword" }, + }, + symbols = { + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["when"] = "keyword", + ["elseif"] = "keyword", + ["do"] = "keyword", + ["->"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["export"] = "keyword", + ["unless"] = "keyword", + ["return"] = "keyword", + ["in"] = "keyword", + ["not"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["import"] = "keyword", + ["as"] = "keyword", + ["from"] = "keyword", + ["class"] = "keyword", + ["extends"] = "keyword", + ["switch"] = "keyword", + ["with"] = "keyword", + ["using"] = "keyword", + ["super"] = "keyword2", + ["self"] = "keyword2", + ["#"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_nelua.lua b/debian/extra/plugins/language_nelua.lua new file mode 100644 index 0000000..c29d969 --- /dev/null +++ b/debian/extra/plugins/language_nelua.lua @@ -0,0 +1,119 @@ +-- mod-version:3 + +-- to better understand these comments, see this section from rxi's article +-- https://rxi.github.io/lite_an_implementation_overview.html#syntax_highlighting + +-- first, we need to require the syntax module +local syntax = require "core.syntax" + +--[[ + then, we'll add a new syntax to the syntax module, lite-xl matches Lua patterns + against the source code in order to highlight the code. +]] +syntax.add { + -- the extension of source code + files = "%.nelua$", + -- this add support for shebang, is not rare to add #!/usr/local/bin/lua to make + -- lua scripts executable, here we add support for it for nelua + headers = "^#!.*[ /]nelua", + -- tells to lite how to toggle comments + comment = "--", + -- finally the patterns, is a table of tables, + -- each entry is a table with some fields, especially with "pattern" and "type" fields. + patterns = { + --[[ + ["pattern"] field: + Describes a syntax pattern, this is done with Lua Patterns + you can learn it works here: https://www.lua.org/manual/5.4/manual.html#6.4.1 + + The pattern can be a string or a table, when is a string, then is just a + pattern that match everything, when is a table, then it follows this + logic: + { range_start_pattern, range_end_pattern [, escape_character] } + + The matched range_start_pattern and range_end_pattern text will be highlighted, but the + text between them will not. + + ["syntax"] field: + Optional field, when set, the text between matched ranges will use syntax from another language, + a good common known example of this is using javascript syntax inside a `script` element: + https://github.com/lite-xl/lite-xl/blob/df667ad28e9995f8cb79dab64e6039f095c202f4/data/plugins/language_html.lua#L17-L23 + + ["type"] field: + Set the style that should be used, this is defined on the "style" file from + the lite-xl's source, at "data/core/style.lua". + ]] + { + pattern = {"##%[=*%[", "%]=*%]"}, + syntax = ".lua", + type = "function", + }, + { + pattern = {"#|", "|#"}, + syntax = ".lua", + type = "function", + }, + { + pattern = {"##", "\n"}, + syntax = ".lua", + type = "function", + }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "%[%[", "%]%]" }, type = "string" }, + { pattern = { "%-%-%[=*%[", "%]=*%]"}, type = "comment" }, + { pattern = "%-%-.-\n", type = "comment" }, + { pattern = "0x%x+%.%x*[pP][-+]?%d+", type = "number" }, + { pattern = "0x%x+%.%x*", type = "number" }, + { pattern = "0x%.%x+[pP][-+]?%d+", type = "number" }, + { pattern = "0x%.%x+", type = "number" }, + { pattern = "0x%x+[pP][-+]?%d+", type = "number" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d%.%d*[eE][-+]?%d+", type = "number" }, + { pattern = "%d%.%d*", type = "number" }, + { pattern = "%.?%d*[eE][-+]?%d+", type = "number" }, + { pattern = "<%S[%w+%._,%s*'\"()<>]-%S>", type = "keyword2" }, + { pattern = "%.?%d+", type = "number" }, + { pattern = "%.%.%.?", type = "operator" }, + { pattern = "[<>~=]=", type = "operator" }, + { pattern = "[%+%-=/%*%^%%#<>]", type = "operator" }, + { pattern = "[%a_][%w_]*()%s*%f[(\"'{]", type = {"function", "normal"} }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "::[%a_][%w_]*::", type = "function" }, + }, + -- special symbols, like keywords + symbols = { + -- lua symbols + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["end"] = "keyword", + ["do"] = "keyword", + ["function"] = "keyword", + ["repeat"] = "keyword", + ["until"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["return"] = "keyword", + ["local"] = "keyword", + ["in"] = "keyword", + ["not"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["goto"] = "keyword", + ["self"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + + -- nelua symbols + ["global"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["defer"] = "keyword", + ["continue"] = "keyword", + ["nilptr"] = "keyword", + }, +} diff --git a/debian/extra/plugins/language_nginx.lua b/debian/extra/plugins/language_nginx.lua new file mode 100644 index 0000000..7124c1a --- /dev/null +++ b/debian/extra/plugins/language_nginx.lua @@ -0,0 +1,394 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +-- Copied from https://github.com/shanoor/vscode-nginx/blob/master/syntaxes/nginx.tmLanguage + +syntax.add { + name = "Nginx", + files = { "%.conf$" }, + comment = "#", + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = { '"', '"', }, type = "string" }, + { pattern = { "'", "'", }, type = "string" }, + { pattern = "[0-9]", type = "number" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "%$%w+", type = "keyword2" } + }, + symbols = { + -- constant.language.module.events + ["events"] = "keyword", + + -- constant.language.module.http + ["http"] = "keyword", + + -- constant.language.directive.module.main + ["daemon"] = "keyword", + ["env"] = "keyword", + ["debug_points"] = "keyword", + ["error_log"] = "keyword", + ["log_not_found"] = "keyword", + ["include"] = "keyword", + ["lock_file"] = "keyword", + ["master_process"] = "keyword", + ["pid"] = "keyword", + ["ssl_engine"] = "keyword", + ["timer_resolution"] = "keyword", + ["types_hash_max_size"] = "keyword", + ["user"] = "keyword", + ["worker_cpu_affinity"] = "keyword", + ["worker_priority"] = "keyword", + ["worker_processes"] = "keyword", + ["worker_rlimit_core"] = "keyword", + ["worker_rlimit_nofile"] = "keyword", + ["worker_rlimit_sigpending"] = "keyword", + ["working_directory"] = "keyword", + ["try_files"] = "keyword", + + -- constant.language.directive.module.events + ["accept_mutex"] = "keyword", + ["accept_mutex_delay"] = "keyword", + ["debug_connection"] = "keyword", + ["devpoll_changes"] = "keyword", + ["devpoll_events"] = "keyword", + ["epoll_events"] = "keyword", + ["kqueue_changes"] = "keyword", + ["kqueue_events"] = "keyword", + ["multi_accept"] = "keyword", + ["rtsig_signo"] = "keyword", + ["rtsig_overflow_events"] = "keyword", + ["rtsig_overflow_test"] = "keyword", + ["rtsig_overflow_threshold"] = "keyword", + ["use"] = "keyword", + ["worker_connections"] = "keyword", + + -- constant.language.directive.module.http + ["alias"] = "keyword", + ["chunked_transfer_encoding"] = "keyword", + ["client_body_in_file_only"] = "keyword", + ["client_body_buffer_size"] = "keyword", + ["client_body_temp_path"] = "keyword", + ["client_body_timeout"] = "keyword", + ["client_header_buffer_size"] = "keyword", + ["client_header_timeout"] = "keyword", + ["client_max_body_size"] = "keyword", + ["default_type"] = "keyword", + ["error_page"] = "keyword", + ["index"] = "keyword", + ["internal"] = "keyword", + ["keepalive_timeout"] = "keyword", + ["keepalive_requests"] = "keyword", + ["large_client_header_buffers"] = "keyword", + ["limit_except"] = "keyword", + ["limit_rate"] = "keyword", + ["listen"] = "keyword", + ["location"] = "keyword", + ["msie_padding"] = "keyword", + ["msie_refresh"] = "keyword", + ["optimize_server_names"] = "keyword", + ["port_in_redirect"] = "keyword", + ["recursive_error_pages"] = "keyword", + ["reset_timedout_connection"] = "keyword", + ["resolver"] = "keyword", + ["resolver_timeout"] = "keyword", + ["root"] = "keyword", + ["satisfy_any"] = "keyword", + ["send_timeout"] = "keyword", + ["sendfile"] = "keyword", + ["server"] = "keyword", + ["server_name"] = "keyword", + ["server_names_hash_max_size"] = "keyword", + ["server_names_hash_bucket_size"] = "keyword", + ["tcp_nodelay"] = "keyword", + ["tcp_nopush"] = "keyword", + ["types"] = "keyword", + ["try_files"] = "keyword", + + -- constant.language.module.http.addition + ["add_before_body"] = "keyword", + ["add_after_body"] = "keyword", + ["addition_types"] = "keyword", + + -- constant.language.module.http.access + ["allow"] = "keyword", + ["deny"] = "keyword", + + -- constant.language.module.http.auth_basic + ["auth_basic"] = "keyword", + ["auth_basic_user_file"] = "keyword", + + -- constant.language.module.http.auth_jwt + ["auth_jwt"] = "keyword", + ["auth_jwt_header_set"] = "keyword", + ["auth_jwt_claim_set"] = "keyword", + ["auth_jwt_key_file"] = "keyword", + + -- constant.language.module.http.autoindex + ["autoindex"] = "keyword", + ["autoindex_exact_size"] = "keyword", + ["autoindex_format"] = "keyword", + ["autoindex_localtime"] = "keyword", + + -- constant.language.module.http.browser + ["ancient_browser"] = "keyword", + ["ancient_browser_value"] = "keyword", + ["modern_browser"] = "keyword", + ["modern_browser_value"] = "keyword", + + -- constant.language.module.http.charset + ["charset"] = "keyword", + ["charset_map"] = "keyword", + ["override_charset"] = "keyword", + ["source_charset"] = "keyword", + + -- constant.language.module.http.empty_gif + ["empty_gif"] = "keyword", + + -- constant.language.module.http.fastcgi + ["fastcgi_index"] = "keyword", + ["fastcgi_hide_header"] = "keyword", + ["fastcgi_ignore_client_abort"] = "keyword", + ["fastcgi_intercept_errors"] = "keyword", + ["fastcgi_param"] = "keyword", + ["fastcgi_pass"] = "keyword", + ["fastcgi_pass_header"] = "keyword", + ["fastcgi_read_timeout"] = "keyword", + ["fastcgi_redirect_errors"] = "keyword", + ["fa"] = "keyword", + ["stcgi_storefastcgi_store_access"] = "keyword", + ["fastcgi_buffers"] = "keyword", + ["fastcgi_buffers_size"] = "keyword", + ["fastcgi_temp_path"] = "keyword", + ["fastcgi_buffer_size"] = "keyword", + ["fastcgi_connect_timeout"] = "keyword", + ["fastcgi_send_timeout"] = "keyword", + ["fastcgi_split_path_info"] = "keyword", + + -- constant.language.module.http.geo + ["geo"] = "keyword", + + -- constant.language.module.http.gzip + ["gzip"] = "keyword", + ["gzip_buffers"] = "keyword", + ["gzip_comp_level"] = "keyword", + ["gzip_disable"] = "keyword", + ["gzip_http.version"] = "keyword", + ["gzip_min_length"] = "keyword", + ["gzip_proxied"] = "keyword", + ["gzip_types"] = "keyword", + ["gzip_vary"] = "keyword", + ["gzip_static"] = "keyword", + + -- constant.language.module.http.headers + ["add_header"] = "keyword", + ["expires"] = "keyword", + ["server_tokens"] = "keyword", + + -- constant.language.module.http.referer + ["valid_referers"] = "keyword", + + -- constant.language.module.http.limit_zone + ["limit_zone"] = "keyword", + ["limit_conn"] = "keyword", + + -- constant.language.module.http.limit_req + ["limit_req"] = "keyword", + ["limit_req_log_level"] = "keyword", + ["limit_req_status"] = "keyword", + ["limit_req_zone"] = "keyword", + + -- constant.language.module.http.log + ["access_log"] = "keyword", + ["log_format"] = "keyword", + + -- constant.language.module.http.map + ["map"] = "keyword", + ["map_hash_max_size"] = "keyword", + ["map_hash_bucket_size"] = "keyword", + + -- constant.language.module.http.memcached + ["memcached_pass"] = "keyword", + ["memcached_connect_timeout"] = "keyword", + ["memcached_send_timeout"] = "keyword", + ["memcached_read_timeout"] = "keyword", + ["memcached_buffer_size"] = "keyword", + ["memcached_next_upstream"] = "keyword", + + -- constant.language.module.http.proxy + ["proxy_buffer_size"] = "keyword2", + ["proxy_buffering"] = "keyword2", + ["proxy_buffers"] = "keyword2", + ["proxy_busy_buffers_size"] = "keyword2", + ["proxy_cache"] = "keyword2", + ["proxy_cache_background_update"] = "keyword2", + ["proxy_cache_bypass"] = "keyword2", + ["proxy_cache_convert_head"] = "keyword2", + ["proxy_cache_key"] = "keyword2", + ["proxy_cache_lock"] = "keyword2", + ["proxy_cache_lock_age"] = "keyword2", + ["proxy_cache_lock_timeout"] = "keyword2", + ["proxy_cache_max_range_offset"] = "keyword2", + ["proxy_cache_methods"] = "keyword2", + ["proxy_cache_min_uses"] = "keyword2", + ["proxy_cache_path"] = "keyword2", + ["proxy_cache_purge"] = "keyword2", + ["proxy_cache_revalidate"] = "keyword2", + ["proxy_cache_use_stale"] = "keyword2", + ["proxy_cache_valid"] = "keyword2", + ["proxy_connect_timeout"] = "keyword2", + ["proxy_headers_hash_bucket_size"] = "keyword2", + ["proxy_headers_hash_max_size"] = "keyword2", + ["proxy_hide_header"] = "keyword2", + ["proxy_http_version"] = "keyword2", + ["proxy_ignore_client_abort"] = "keyword2", + ["proxy_intercept_errors"] = "keyword2", + ["proxy_max_temp_file_size"] = "keyword2", + ["proxy_method"] = "keyword2", + ["proxy_next_upstream"] = "keyword2", + ["proxy_next_upstream_tries"] = "keyword2", + ["proxy_next_upstream_timeout"] = "keyword2", + ["proxy_pass"] = "keyword2", + ["proxy_pass_header"] = "keyword2", + ["proxy_pass_request_body"] = "keyword2", + ["proxy_pass_request_headers"] = "keyword2", + ["proxy_read_timeout"] = "keyword2", + ["proxy_redirect"] = "keyword2", + ["proxy_redirect_errors"] = "keyword2", + ["proxy_send_lowat"] = "keyword2", + ["proxy_send_timeout"] = "keyword2", + ["proxy_set_body"] = "keyword2", + ["proxy_set_header"] = "keyword2", + ["proxy_store"] = "keyword2", + ["proxy_store_access"] = "keyword2", + ["proxy_temp_file_write_size"] = "keyword2", + ["proxy_temp_path"] = "keyword2", + ["proxy_upstream_fail_timeout"] = "keyword2", + ["proxy_upstream_max_fails"] = "keyword2", + ["proxy_no_cache"] = "keyword2", + + -- constant.language.module.http.realip + ["set_real_ip_from"] = "keyword", + ["real_ip_header"] = "keyword", + ["real_ip_recursive"] = "keyword", + + -- constant.language.module.http.rewrite + ["break"] = "keyword", + ["if"] = "keyword", + ["return"] = "keyword", + ["rewrite"] = "keyword", + ["set"] = "keyword", + ["uninitialized_variable_warn"] = "keyword", + + -- constant.language.module.http.ssi + ["ssi"] = "keyword", + ["ssi_silent_errors"] = "keyword", + ["ssi_types"] = "keyword", + ["ssi_value_length"] = "keyword", + + -- constant.language.module.http.upstream + ["ip_hash"] = "keyword", + ["upstream"] = "keyword", + ["server"] = "keyword", + + -- constant.language.module.http.userid + ["userid"] = "keyword", + ["userid_domain"] = "keyword", + ["userid_expires"] = "keyword", + ["userid_name"] = "keyword", + ["userid_p3p"] = "keyword", + ["userid_path"] = "keyword", + ["userid_service"] = "keyword", + + -- constant.language.module.http.uwsgi + ["uwsgi_bind"] = "keyword", + ["uwsgi_buffer_size"] = "keyword", + ["uwsgi_buffering"] = "keyword", + ["uwsgi_buffers"] = "keyword", + ["uwsgi_busy_buffers_size"] = "keyword", + ["uwsgi_cache"] = "keyword", + ["uwsgi_cache_background_update"] = "keyword", + ["uwsgi_cache_bypass"] = "keyword", + ["uwsgi_cache_key"] = "keyword", + ["uwsgi_cache_lock"] = "keyword", + ["uwsgi_cache_lock_age"] = "keyword", + ["uwsgi_cache_lock_timeout"] = "keyword", + ["uwsgi_cache_max_range_offset"] = "keyword", + ["uwsgi_cache_methods"] = "keyword", + ["uwsgi_cache_min_uses"] = "keyword", + ["uwsgi_cache_path"] = "keyword", + ["uwsgi_cache_purge"] = "keyword", + ["uwsgi_cache_revalidate"] = "keyword", + ["uwsgi_cache_use_stale"] = "keyword", + ["uwsgi_cache_valid"] = "keyword", + ["uwsgi_connect_timeout"] = "keyword", + ["uwsgi_force_ranges"] = "keyword", + ["uwsgi_hide_header"] = "keyword", + ["uwsgi_ignore_client_abort"] = "keyword", + ["uwsgi_ignore_headers"] = "keyword", + ["uwsgi_intercept_errors"] = "keyword", + ["uwsgi_limit_rate"] = "keyword", + ["uwsgi_max_temp_file_size"] = "keyword", + ["uwsgi_modifier1"] = "keyword", + ["uwsgi_modifier2"] = "keyword", + ["uwsgi_next_upstream"] = "keyword", + ["uwsgi_next_upstream_timeout"] = "keyword", + ["uwsgi_next_upstream_tries"] = "keyword", + ["uwsgi_no_cache"] = "keyword", + ["uwsgi_param"] = "keyword", + ["uwsgi_pass"] = "keyword", + ["uwsgi_pass_header"] = "keyword", + ["uwsgi_pass_request_body"] = "keyword", + ["uwsgi_pass_request_headers"] = "keyword", + ["uwsgi_read_timeout"] = "keyword", + ["uwsgi_request_buffering"] = "keyword", + ["uwsgi_send_timeout"] = "keyword", + ["uwsgi_ssl_certificate"] = "keyword", + ["uwsgi_ssl_certificate_key"] = "keyword", + ["uwsgi_ssl_ciphers"] = "keyword", + ["uwsgi_ssl_crl"] = "keyword", + ["uwsgi_ssl_name"] = "keyword", + ["uwsgi_ssl_password_file"] = "keyword", + ["uwsgi_ssl_protocols"] = "keyword", + ["uwsgi_ssl_server_name"] = "keyword", + ["uwsgi_ssl_session_reuse"] = "keyword", + ["uwsgi_ssl_trusted_certificate"] = "keyword", + ["uwsgi_ssl_verify"] = "keyword", + ["uwsgi_ssl_verify_depth"] = "keyword", + ["uwsgi_store"] = "keyword", + ["uwsgi_store_access"] = "keyword", + ["uwsgi_temp_file_write_size"] = "keyword", + ["uwsgi_temp_path"] = "keyword", + + -- constant.language.directive.module.http + ["ssl"] = "keyword", + ["ssl_buffer_size"] = "keyword", + ["ssl_certificate"] = "keyword", + ["ssl_certificate_key"] = "keyword", + ["ssl_ciphers"] = "keyword", + ["ssl_client_certificate"] = "keyword", + ["ssl_crl"] = "keyword", + ["ssl_dhparam"] = "keyword", + ["ssl_ecdh_curve"] = "keyword", + ["ssl_password_file"] = "keyword", + ["ssl_prefer_server_ciphers"] = "keyword", + ["ssl_protocols"] = "keyword", + ["ssl_session_cache"] = "keyword", + ["ssl_session_ticket_key"] = "keyword", + ["ssl_session_tickets"] = "keyword", + ["ssl_session_timeout"] = "keyword", + ["ssl_stapling"] = "keyword", + ["ssl_stapling_file"] = "keyword", + ["ssl_stapling_responder"] = "keyword", + ["ssl_stapling_verify"] = "keyword", + ["ssl_trusted_certificate"] = "keyword", + ["ssl_verify_client"] = "keyword", + ["ssl_verify_depth"] = "keyword", + + ["true"] = "literal", + ["false"] = "literal", + ["on"] = "literal", + ["off"] = "literal", + ["all"] = "literal", + ["null"] = "literal" + }, +} diff --git a/debian/extra/plugins/language_nim.lua b/debian/extra/plugins/language_nim.lua new file mode 100644 index 0000000..425544e --- /dev/null +++ b/debian/extra/plugins/language_nim.lua @@ -0,0 +1,145 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +local patterns = {} + +local symbols = { + ["nil"] = "literal", + ["true"] = "literal", + ["false"] = "literal", +} + +local number_patterns = { + "0[bB][01][01_]*", + "0o[0-7][0-7_]*", + "0[xX]%x[%x_]*", + "%d[%d_]*%.%d[%d_]*[eE][-+]?%d[%d_]*", + "%d[%d_]*%.%d[%d_]*", + "%d[%d_]*", +} + +local type_suffix_patterns = {} + +for _, size in ipairs({"", "8", "16", "32", "64"}) do + table.insert(type_suffix_patterns, "'?[fuiFUI]"..size) +end + +for _, pattern in ipairs(number_patterns) do + for _, suffix in ipairs(type_suffix_patterns) do + table.insert(patterns, { pattern = pattern..suffix, type = "literal" }) + end + table.insert(patterns, { pattern = pattern, type = "literal" }) +end + +local keywords = { + "addr", "and", "as", "asm", + "bind", "block", "break", + "case", "cast", "concept", "const", "continue", "converter", + "defer", "discard", "distinct", "div", "do", + "elif", "else", "end", "enum", "except", "export", + "finally", "for", "from", "func", + "if", "import", "in", "include", "interface", "is", "isnot", "iterator", + "let", + "macro", "method", "mixin", "mod", + "not", "notin", + "object", "of", "or", "out", + "proc", "ptr", + "raise", "ref", "return", + "shl", "shr", "static", + "template", "try", "tuple", "type", + "using", + "var", + "when", "while", + "xor", + "yield", +} + +for _, keyword in ipairs(keywords) do + symbols[keyword] = "keyword" +end + +local standard_types = { + "bool", "byte", + "int", "int8", "int16", "int32", "int64", + "uint", "uint8", "uint16", "uint32", "uint64", + "float", "float32", "float64", + "char", "string", "cstring", + "pointer", + "typedesc", + "void", "auto", "any", + "untyped", "typed", + "clong", "culong", "cchar", "cschar", "cshort", "cint", "csize", "csize_t", + "clonglong", "cfloat", "cdouble", "clongdouble", "cuchar", "cushort", + "cuint", "culonglong", "cstringArray", +} + +for _, type in ipairs(standard_types) do + symbols[type] = "keyword2" +end + +local standard_generic_types = { + "range", + "array", "open[aA]rray", "varargs", "seq", "set", + "sink", "lent", "owned", +} + +for _, type in ipairs(standard_generic_types) do + table.insert(patterns, { pattern = type.."%f[%[]", type = "keyword2" }) + table.insert(patterns, { pattern = type.." +%f[%w]", type = "keyword2" }) +end + +local function string_pattern(start, stop, syntax) + return { + pattern = { start, stop, '\\' }, + type = "string", + syntax = syntax and { + patterns = syntax, + symbols = {}, + } or nil + } +end + +local interpolation_syntax = { + { pattern = { '{{', '}}' }, type = "string" }, + { pattern = { '{', '}', '\\' }, type = "keyword2", syntax = ".nim" }, + { pattern = "[%S][%w]*", type = "string" }, +} + +local user_patterns = { + -- comments + { pattern = { "##?%[", "]##?" }, type = "comment" }, + { pattern = "##?.-\n", type = "comment" }, + -- strings and chars + { pattern = { "'", "'", '\\' }, type = "literal" }, + string_pattern('"""', '"""%f[^"]'), + string_pattern('"' , '"' ), + string_pattern('\\"', '\\"' ), -- For highlighting strings inside iterpolated blocks + -- string interpolation + string_pattern('%&"""' , '"""%f[^"]', interpolation_syntax), + string_pattern('fmt"""', '"""%f[^"]', interpolation_syntax), + string_pattern('%&"' , '"' , interpolation_syntax), + string_pattern('fmt"' , '"' , interpolation_syntax), + -- function calls + { pattern = "[a-zA-Z][a-zA-Z0-9_]*%f[(]", type = "function" }, + -- identifiers + { pattern = "[A-Z][a-zA-Z0-9_]*", type = "keyword2" }, + { pattern = "[a-zA-Z][a-zA-Z0-9_]*", type = "symbol" }, + -- operators + { pattern = "%.%f[^.]", type = "normal" }, + { pattern = ":%f[ ]", type = "normal" }, + { pattern = "[=+%-*/<>@$~&%%|!?%^&.:\\]+", type = "operator" }, +} + +for _, pattern in ipairs(user_patterns) do + table.insert(patterns, pattern) +end + +local nim = { + name = "Nim", + files = { "%.nim$", "%.nims$", "%.nimble$" }, + comment = "#", + patterns = patterns, + symbols = symbols, +} + +syntax.add(nim) diff --git a/debian/extra/plugins/language_nix.lua b/debian/extra/plugins/language_nix.lua new file mode 100644 index 0000000..149c2fa --- /dev/null +++ b/debian/extra/plugins/language_nix.lua @@ -0,0 +1,87 @@ +-- mod-version:3 +-- https://nixos.wiki/wiki/Overview_of_the_Nix_Language +local syntax = require "core.syntax" + +local function merge_tables(a, b) + for _, v in pairs(b) do + table.insert(a, v) + end +end + +local default_symbols = { + ["import"] = "keyword2", + ["with"] = "keyword2", + ["builtins"] = "keyword2", + ["inherit"] = "keyword2", + ["assert"] = "keyword2", + ["let"] = "keyword2", + ["in"] = "keyword2", + ["rec"] = "keyword2", + ["if"] = "keyword", + ["else"] = "keyword", + ["then"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", +} + +local default_patterns = {} + +local string_interpolation = { + { pattern = {"%${", "}"}, type = "keyword2", syntax = { + patterns = default_patterns, + symbols = default_symbols, + }}, + { pattern = "[%S][%w]*", type = "string" }, +} + +merge_tables(default_patterns, { + { pattern = "#.*", type = "comment" }, + { pattern = {"/%*", "%*/"}, type = "comment" }, + { pattern = "-?%.?%d+", type = "number" }, + + -- interpolation + { pattern = {"%${", "}"}, type = "keyword2", syntax = { + patterns = default_patterns, + symbols = default_symbols, + }}, + { pattern = {'"', '"', '\\'}, type = "string", syntax = { + patterns = string_interpolation, + symbols = {}, + }}, + { pattern = {"''", "''"}, type = "string", syntax = { + patterns = string_interpolation, + symbols = {}, + }}, + + -- operators + { pattern = "[%+%-%?!>%*]", type = "operator" }, + { pattern = "/ ", type = "operator" }, + { pattern = "< ", type = "operator" }, + { pattern = "//", type = "operator" }, + { pattern = "&&", type = "operator" }, + { pattern = "%->", type = "operator" }, + { pattern = "||", type = "operator" }, + { pattern = "==", type = "operator" }, + { pattern = "!=", type = "operator" }, + { pattern = ">=", type = "operator" }, + { pattern = "<=", type = "operator" }, + + -- paths (function because its not used otherwise) + { pattern = "%.?%.?/[^%s%[%]%(%){};,:]+", type = "function" }, + { pattern = "~/[^%s%[%]%(%){};,:]+", type = "function" }, + { pattern = {"<", ">"}, type = "function" }, + + -- every other symbol + { pattern = "[%a%-%_][%w%-%_]*", type = "symbol" }, + { pattern = ";%.,:", type = "normal" }, +}) + +syntax.add { + name = "Nix", + files = {"%.nix$"}, + comment = "#", + block_comment = {"/*", "*/"}, + patterns = default_patterns, + symbols = default_symbols, +} diff --git a/debian/extra/plugins/language_objc.lua b/debian/extra/plugins/language_objc.lua new file mode 100644 index 0000000..8d1210b --- /dev/null +++ b/debian/extra/plugins/language_objc.lua @@ -0,0 +1,63 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Objective-C", + files = { "%.m$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { "#", "[^\\]\n" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "@[%a_][%w_]*", type = "keyword2" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["do"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["goto"] = "keyword", + ["struct"] = "keyword", + ["union"] = "keyword", + ["typedef"] = "keyword", + ["enum"] = "keyword", + ["extern"] = "keyword", + ["static"] = "keyword", + ["volatile"] = "keyword", + ["const"] = "keyword", + ["inline"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["default"] = "keyword", + ["auto"] = "keyword", + ["const"] = "keyword", + ["void"] = "keyword", + ["int"] = "keyword2", + ["short"] = "keyword2", + ["long"] = "keyword2", + ["float"] = "keyword2", + ["double"] = "keyword2", + ["char"] = "keyword2", + ["unsigned"] = "keyword2", + ["bool"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["NULL"] = "literal", + ["nil"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_odin.lua b/debian/extra/plugins/language_odin.lua new file mode 100644 index 0000000..84f422a --- /dev/null +++ b/debian/extra/plugins/language_odin.lua @@ -0,0 +1,162 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Odin", + files = "%.odin$", + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "`", "`" }, type = "string" }, + { pattern = "0b[01_]+", type = "number" }, + { pattern = "0o[0-7_]+", type = "number" }, + { pattern = "0[dz][%d_]+", type = "number" }, + { pattern = "0x[%da-fA-F_]+", type = "number" }, + { pattern = "-?%d+[%d%._e]*i?", type = "number" }, + { pattern = "[<>~=+-*/]=", type = "operator" }, + { pattern = "%.%.", type = "operator" }, + { pattern = "[%+%-=/%*%^%%<>!~|&:%?]", type = "operator" }, + { pattern = "%$[%a_][%w_]*", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[#@][%a_][%w_]*", type = "keyword2" }, + { pattern = "[#@]%b()", type = "keyword2" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- Keywords + ["package"] = "keyword", + ["import"] = "keyword", + ["foreign"] = "keyword", + ["when"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["defer"] = "keyword", + ["return"] = "keyword", + ["switch"] = "keyword", + ["case"] = "keyword", + ["in"] = "keyword", + ["not_in"] = "keyword", + ["do"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["fallthrough"] = "keyword", + ["proc"] = "keyword", + ["struct"] = "keyword", + ["union"] = "keyword", + ["enum"] = "keyword", + ["bit_set"] = "keyword", + ["map"] = "keyword", + ["dynamic"] = "keyword", + ["using"] = "keyword", + ["context"] = "keyword", + ["distinct"] = "keyword", + ["asm"] = "keyword", + ["or_break"] = "keyword", + ["or_continue"] = "keyword", + ["or_else"] = "keyword", + ["or_return"] = "keyword", + + -- Builtin procedures and directives + ["cast"] = "keyword2", + ["auto_cast"] = "keyword2", + ["transmute"] = "keyword2", + ["len"] = "keyword2", + ["cap"] = "keyword2", + ["size_of"] = "keyword2", + ["align_of"] = "keyword2", + ["offset_of"] = "keyword2", + ["offset_of_selector"] = "keyword2", + ["offset_of_member"] = "keyword2", + ["offset_of_by_string"] = "keyword2", + ["typeid_of"] = "keyword2", + ["type_of"] = "keyword2", + ["type_info_of"] = "keyword2", + ["type_info_base"] = "keyword2", + ["swizzle"] = "keyword2", + ["complex"] = "keyword2", + ["quaternion"] = "keyword2", + ["real"] = "keyword2", + ["imag"] = "keyword2", + ["jmag"] = "keyword2", + ["kmag"] = "keyword2", + ["conj"] = "keyword2", + ["expand_values"] = "keyword2", + ["min"] = "keyword2", + ["max"] = "keyword2", + ["abs"] = "keyword2", + ["clamp"] = "keyword2", + ["assert"] = "keyword2", + ["soa_zip"] = "keyword2", + ["soa_unzip"] = "keyword2", + ["raw_data"] = "keyword2", + + -- Types + ["rawptr"] = "keyword2", + ["typeid"] = "keyword2", + ["any"] = "keyword2", + ["string"] = "keyword2", + ["cstring"] = "keyword2", + ["int"] = "keyword2", + ["uint"] = "keyword2", + ["uintptr"] = "keyword2", + ["rune"] = "keyword2", + ["byte"] = "keyword2", + ["u8"] = "keyword2", + ["u16"] = "keyword2", + ["u32"] = "keyword2", + ["u64"] = "keyword2", + ["u128"] = "keyword2", + ["i8"] = "keyword2", + ["i16"] = "keyword2", + ["i32"] = "keyword2", + ["i64"] = "keyword2", + ["i128"] = "keyword2", + ["f16"] = "keyword2", + ["f32"] = "keyword2", + ["f64"] = "keyword2", + ["f16le"] = "keyword2", + ["f32le"] = "keyword2", + ["f64le"] = "keyword2", + ["f16be"] = "keyword2", + ["f32be"] = "keyword2", + ["f64be"] = "keyword2", + ["u16le"] = "keyword2", + ["u32le"] = "keyword2", + ["u64le"] = "keyword2", + ["u128le"] = "keyword2", + ["i16le"] = "keyword2", + ["i32le"] = "keyword2", + ["i64le"] = "keyword2", + ["i128le"] = "keyword2", + ["u16be"] = "keyword2", + ["u32be"] = "keyword2", + ["u64be"] = "keyword2", + ["u128be"] = "keyword2", + ["i16be"] = "keyword2", + ["i32be"] = "keyword2", + ["i64be"] = "keyword2", + ["i128be"] = "keyword2", + ["complex32"] = "keyword2", + ["complex64"] = "keyword2", + ["complex128"] = "keyword2", + ["quaternion64"] = "keyword2", + ["quaternion128"] = "keyword2", + ["quaternion256"] = "keyword2", + ["bool"] = "keyword2", + ["b8"] = "keyword2", + ["b16"] = "keyword2", + ["b32"] = "keyword2", + ["b64"] = "keyword2", + ["b128"] = "keyword2", + + -- Literals + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + } +} diff --git a/debian/extra/plugins/language_openscad.lua b/debian/extra/plugins/language_openscad.lua new file mode 100644 index 0000000..77c7e37 --- /dev/null +++ b/debian/extra/plugins/language_openscad.lua @@ -0,0 +1,119 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +-- Language Syntax References +-- https://openscad.org/documentation.html#language-reference + +syntax.add { + name = "OpenSCAD", + files = {"%.scad$"}, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, -- Single-line comment + { pattern = { "/%*", "%*/" }, type = "comment" }, -- Multi-line comment + { pattern = { '"', '"', '\\' }, type = "string" }, -- String, double quotes + { pattern = { "'", "'", '\\' }, type = "string" }, -- String, apices + { pattern = "-?0x%x+", type = "number" }, -- ? + { pattern = "-?%d+[%d%.eE]*[a-zA-Z]?", type = "number" }, -- ? + { pattern = "-?%.?%d+", type = "number" }, -- ? + { pattern = "[%+%-=/%*%^%%<>!~|&%?%:]", type = "operator" }, -- Operators + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- Functions + { regex = "\\$[a-zA-Z]+", type = "keyword" }, -- Special variables + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- ? + ["var"] = "keyword", + ["module"] = "keyword", + ["function"] = "keyword", + ["include"] = "keyword", + ["use"] = "keyword", + -- Constants + ["undef"] = "keyword2", + ["PI"] = "keyword2", + -- 2D + ["circle"] = "keyword", + ["square"] = "keyword", + ["polygon"] = "keyword", + ["text"] = "keyword", + ["import"] = "keyword", + ["projection"] = "keyword", + -- 3D + ["sphere"] = "keyword", + ["cube"] = "keyword", + ["cylinder"] = "keyword", + ["polyhedron"] = "keyword", + ["surface"] = "keyword", + -- Transformations + ["linear_extrude"] = "keyword", + ["rotate_extrude"] = "keyword", + ["translate"] = "keyword", + ["rotate"] = "keyword", + ["scale"] = "keyword", + ["resize"] = "keyword", + ["mirror"] = "keyword", + ["multmatrix"] = "keyword", + ["color"] = "keyword", + ["offset"] = "keyword", + ["hull"] = "keyword", + ["minkowski"] = "keyword", + -- Boolean Operations + ["union"] = "keyword", + ["difference"] = "keyword", + ["intersection"] = "keyword", + -- Flow Control + ["for"] = "keyword", + ["each"] = "keyword", + -- Type Test Functions + ["is_undef"] = "function", + ["is_bool"] = "function", + ["is_num"] = "function", + ["is_string"] = "function", + ["is_list"] = "function", + ["is_function"] = "function", + -- Other + ["echo"] = "keyword", + ["render"] = "keyword", + ["children"] = "keyword", + ["assert"] = "keyword", + -- Functions + ["concat"] = "function", + ["lookup"] = "function", + ["str"] = "function", + ["chr"] = "function", + ["ord"] = "function", + ["search"] = "function", + ["version"] = "function", + ["version_num"] = "function", + ["parent_module"] = "function", + -- Math Functions + ["abs"] = "keyword", + ["sign"] = "keyword", + ["sin"] = "keyword", + ["cos"] = "keyword", + ["tan"] = "keyword", + ["acos"] = "keyword", + ["asin"] = "keyword", + ["atan"] = "keyword", + ["atan2"] = "keyword", + ["floor"] = "keyword", + ["round"] = "keyword", + ["ceil"] = "keyword", + ["ln"] = "keyword", + ["len"] = "keyword", + ["let"] = "keyword", + ["log"] = "keyword", + ["pow"] = "keyword", + ["sqrt"] = "keyword", + ["exp"] = "keyword", + ["rands"] = "keyword", + ["min"] = "keyword", + ["max"] = "keyword", + ["norm"] = "keyword", + ["cross"] = "keyword", + -- Literals + ["true"] = "literal", + ["false"] = "literal", + } +} diff --git a/debian/extra/plugins/language_perl.lua b/debian/extra/plugins/language_perl.lua new file mode 100644 index 0000000..cc1547f --- /dev/null +++ b/debian/extra/plugins/language_perl.lua @@ -0,0 +1,291 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Perl", + files = { "%.pm$", "%.pl$" }, + headers = "^#!.*[ /]perl", + comment = "#", + patterns = { + { pattern = "%#.-\n", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "qw%(", "%)", '\\' }, type = "string" }, + { pattern = { "qw%[", "%]", '\\' }, type = "string" }, + { pattern = { "qw%/", "%/", '\\' }, type = "string" }, + { pattern = { "qq?%(", "%)", '\\' }, type = "string" }, + { pattern = { "qq?%[", "%]", '\\' }, type = "string" }, + { pattern = { "qq?%/", "%/", '\\' }, type = "string" }, + { pattern = { "^=%w+", "=cut" }, type = "comment" }, + -- until we can get this workign with s///, just don't do any of them. + -- { pattern = { '/', '/', '\\' }, type = "string" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%@%$%*%%]+[%a_][%w_]*", type = "keyword2" }, + { pattern = "[%a_][%w_]*%s+()=>", type = { "string", "operator" } }, + { pattern = "sub%s+()[%w_]+", type = { "keyword", "operator" } }, + { pattern = "[<=>%+%-%*%/:%&%|%!%?%~]+", type = "operator" }, + { pattern = "%--[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["-A"] = "keyword", + ["END"] = "keyword", + ["length"] = "keyword", + ["setpgrp"] = "keyword", + ["-B"] = "keyword", + ["endgrent"] = "keyword", + ["link"] = "keyword", + ["setpriority"] = "keyword", + ["-b"] = "keyword", + ["endhostent"] = "keyword", + ["listen"] = "keyword", + ["setprotoent"] = "keyword", + ["-C"] = "keyword", + ["endnetent"] = "keyword", + ["local"] = "keyword", + ["setpwent"] = "keyword", + ["-c"] = "keyword", + ["endprotoent"] = "keyword", + ["localtime"] = "keyword", + ["setservent"] = "keyword", + ["-d"] = "keyword", + ["endpwent"] = "keyword", + ["log"] = "keyword", + ["setsockopt"] = "keyword", + ["-e"] = "keyword", + ["endservent"] = "keyword", + ["lstat"] = "keyword", + ["shift"] = "keyword", + ["-f"] = "keyword", + ["eof$"] = "keyword", + ["map"] = "keyword", + ["shmctl"] = "keyword", + ["-g"] = "keyword", + ["eval"] = "keyword", + ["mkdir"] = "keyword", + ["shmget"] = "keyword", + ["-k"] = "keyword", + ["exec"] = "keyword", + ["msgctl"] = "keyword", + ["shmread"] = "keyword", + ["-l"] = "keyword", + ["exists"] = "keyword", + ["msgget"] = "keyword", + ["shmwrite"] = "keyword", + ["-M"] = "keyword", + ["exit"] = "keyword", + ["msgrcv"] = "keyword", + ["shutdown"] = "keyword", + ["-O"] = "keyword", + ["fcntl"] = "keyword", + ["msgsnd"] = "keyword", + ["sin"] = "keyword", + ["-o"] = "keyword", + ["fileno"] = "keyword", + ["my"] = "keyword", + ["sleep"] = "keyword", + ["-p"] = "keyword", + ["flock"] = "keyword", + ["next"] = "keyword", + ["socket"] = "keyword", + ["package"] = "keyword", + ["-r"] = "keyword", + ["fork"] = "keyword", + ["not"] = "keyword", + ["socketpair"] = "keyword", + ["-R"] = "keyword", + ["format"] = "keyword", + ["oct"] = "keyword", + ["sort"] = "keyword", + ["-S"] = "keyword", + ["formline"] = "keyword", + ["open"] = "keyword", + ["splice"] = "keyword", + ["-s"] = "keyword", + ["getc"] = "keyword", + ["opendir"] = "keyword", + ["split"] = "keyword", + ["-T"] = "keyword", + ["getgrent"] = "keyword", + ["ord"] = "keyword", + ["sprintf"] = "keyword", + ["-t"] = "keyword", + ["getgrgid"] = "keyword", + ["our"] = "keyword", + ["sqrt"] = "keyword", + ["-u"] = "keyword", + ["getgrnam"] = "keyword", + ["pack"] = "keyword", + ["srand"] = "keyword", + ["-w"] = "keyword", + ["gethostbyaddr"] = "keyword", + ["pipe"] = "keyword", + ["stat"] = "keyword", + ["-W"] = "keyword", + ["gethostbyname"] = "keyword", + ["pop"] = "keyword", + ["state"] = "keyword", + ["-X"] = "keyword", + ["gethostent"] = "keyword", + ["pos"] = "keyword", + ["study"] = "keyword", + ["-x"] = "keyword", + ["getlogin"] = "keyword", + ["print"] = "keyword", + ["substr"] = "keyword", + ["-z"] = "keyword", + ["getnetbyaddr"] = "keyword", + ["printf"] = "keyword", + ["symlink"] = "keyword", + ["abs"] = "keyword", + ["getnetbyname"] = "keyword", + ["prototype"] = "keyword", + ["syscall"] = "keyword", + ["accept"] = "keyword", + ["getnetent"] = "keyword", + ["push"] = "keyword", + ["sysopen"] = "keyword", + ["alarm"] = "keyword", + ["getpeername"] = "keyword", + ["quotemeta"] = "keyword", + ["sysread"] = "keyword", + ["atan2"] = "keyword", + ["getpgrp"] = "keyword", + ["rand"] = "keyword", + ["sysseek"] = "keyword", + ["AUTOLOAD"] = "keyword", + ["getppid"] = "keyword", + ["read"] = "keyword", + ["system"] = "keyword", + ["BEGIN"] = "keyword", + ["getpriority"] = "keyword", + ["readdir"] = "keyword", + ["syswrite"] = "keyword", + ["bind"] = "keyword", + ["getprotobyname"] = "keyword", + ["readline"] = "keyword", + ["tell"] = "keyword", + ["binmode"] = "keyword", + ["getprotobynumber"] = "keyword", + ["SUPER"] = "keyword", + ["readlink"] = "keyword", + ["telldir"] = "keyword", + ["bless"] = "keyword", + ["sub"] = "keyword", + ["getprotoent"] = "keyword", + ["readpipe"] = "keyword", + ["tie"] = "keyword", + ["getpwent"] = "keyword", + ["recv"] = "keyword", + ["tied"] = "keyword", + ["caller"] = "keyword", + ["getpwnam"] = "keyword", + ["redo"] = "keyword", + ["time"] = "keyword", + ["chdir"] = "keyword", + ["getpwuid"] = "keyword", + ["ref"] = "keyword", + ["times"] = "keyword", + ["CHECK"] = "keyword", + ["getservbyname"] = "keyword", + ["rename"] = "keyword", + ["truncate"] = "keyword", + ["chmod"] = "keyword", + ["getservbyport"] = "keyword", + ["require"] = "keyword", + ["uc"] = "keyword", + ["chomp"] = "keyword", + ["getservent"] = "keyword", + ["reset"] = "keyword", + ["ucfirst"] = "keyword", + ["chop"] = "keyword", + ["getsockname"] = "keyword", + ["return"] = "keyword", + ["umask"] = "keyword", + ["chown"] = "keyword", + ["getsockopt"] = "keyword", + ["reverse"] = "keyword", + ["undef"] = "keyword", + ["chr"] = "keyword", + ["glob"] = "keyword", + ["rewinddir"] = "keyword", + ["UNITCHECK"] = "keyword", + ["chroot"] = "keyword", + ["gmtime"] = "keyword", + ["rindex"] = "keyword", + ["unlink"] = "keyword", + ["close"] = "keyword", + ["goto"] = "keyword", + ["rmdir"] = "keyword", + ["unpack"] = "keyword", + ["closedir"] = "keyword", + ["grep"] = "keyword", + ["say"] = "keyword", + ["unshift"] = "keyword", + ["connect"] = "keyword", + ["hex"] = "keyword", + ["scalar"] = "keyword", + ["untie"] = "keyword", + ["cos"] = "keyword", + ["index"] = "keyword", + ["seek"] = "keyword", + ["use"] = "keyword", + ["crypt"] = "keyword", + ["INIT"] = "keyword", + ["seekdir"] = "keyword", + ["utime"] = "keyword", + ["dbmclose"] = "keyword", + ["int"] = "keyword", + ["select"] = "keyword", + ["values"] = "keyword", + ["dbmopen"] = "keyword", + ["ioctl"] = "keyword", + ["semctl"] = "keyword", + ["vec"] = "keyword", + ["defined"] = "keyword", + ["join"] = "keyword", + ["semget"] = "keyword", + ["wait"] = "keyword", + ["delete"] = "keyword", + ["keys"] = "keyword", + ["semop"] = "keyword", + ["waitpid"] = "keyword", + ["DESTROY"] = "keyword", + ["kill"] = "keyword", + ["send"] = "keyword", + ["wantarray"] = "keyword", + ["die"] = "keyword", + ["last"] = "keyword", + ["setgrent"] = "keyword", + ["warn"] = "keyword", + ["dump"] = "keyword", + ["lc"] = "keyword", + ["sethostent"] = "keyword", + ["write"] = "keyword", + ["each"] = "keyword", + ["lcfirst"] = "keyword", + ["setnetent"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["elsif"] = "keyword", + ["unless"] = "keyword", + ["no"] = "keyword", + ["new"] = "keyword", + ["do"] = "keyword", + ["__PACKAGE__"] = "keyword", + ["warnings"] = "keyword2", + ["strict"] = "keyword2", + ["eq"] = "operator", + ["ne"] = "operator", + ["lt"] = "operator", + ["gt"] = "operator", + ["le"] = "operator", + ["ge"] = "operator", + ["cmp"] = "operator", + ["STDERR"] = "keyword2", + ["STDOUT"] = "keyword2" + } +} diff --git a/debian/extra/plugins/language_php.lua b/debian/extra/plugins/language_php.lua new file mode 100644 index 0000000..e0dc078 --- /dev/null +++ b/debian/extra/plugins/language_php.lua @@ -0,0 +1,421 @@ +-- mod-version:3 +--[[ + language_php.lua + provides php syntax support allowing mixed html, css and js + version: 20220614_1 +--]] +local syntax = require "core.syntax" +local common = require "core.common" +local config = require "core.config" + +-- load syntax dependencies to add additional rules +require "plugins.language_css" +require "plugins.language_js" + +local psql_found = pcall(require, "plugins.language_psql") +local sql_strings = {} + +config.plugins.language_php = common.merge({ + sql_strings = true, + -- The config specification used by the settings gui + config_spec = { + name = "Language PHP", + { + label = "SQL Strings", + description = "Highlight as SQL, strings starting with sql statements, " + .. "depends on language_psql.", + path = "sql_strings", + type = "toggle", + default = true, + on_apply = function(enabled) + local syntax_php = syntax.get("file.phps") + if enabled and psql_found then + if + not syntax_php.patterns[6].syntax + or + syntax_php.patterns[6].syntax ~= '.sql' + then + table.insert(syntax_php.patterns, 5, sql_strings[1]) + table.insert(syntax_php.patterns, 6, sql_strings[2]) + end + elseif + syntax_php.patterns[6].syntax + and + syntax_php.patterns[6].syntax == '.sql' + then + table.remove(syntax_php.patterns, 5) + table.remove(syntax_php.patterns, 5) + end + end + } + } +}, config.plugins.language_php) + +-- Patterns to match some of the string inline variables +local inline_variables = { + { pattern = "%s+", type = "string" }, + { pattern = "\\%$", type = "string" }, + { pattern = "%{[%$%s]*%}", type = "string" }, + -- matches {$varname[index]} + { pattern = "{" + .. "()%$[%a_][%w_]*" + .. "()%[" + .. "()[%w%s_%-\"\'%(%)|;:,%.#@%%!%^&%*%+=%[%]<>~`%?\\/]*" + .. "()%]" + .. "}", + type = { + "keyword", "keyword2", "keyword", "string", "keyword" + } + }, + { pattern = "{" + .. "()%$[%a_][%w_]*" + .. "()%->" + .. "()[%a_][%w_]*" + .. "()}", + type = { + "keyword", "keyword2", "keyword", "symbol", "keyword" + } + }, + { pattern = "{()%$[%a_][%w_]*()}", + type = { "keyword", "keyword2", "keyword" } + }, + { pattern = "%$[%a_][%w_]*()%[()[%w_]*()%]", + type = { "keyword2", "keyword", "string", "keyword" } + }, + { pattern = "%$[%a_][%w_]*()%->()%a[%w_]*", + type = { "keyword2", "keyword", "symbol" } + }, + { pattern = "%$[%a_][%w_]*", type = "keyword2" }, + { pattern = "%w+", type = "string" } +} + +local function combine_patterns(t1, t2) + local temp = { table.unpack(t1) } + for _, t in ipairs(t2) do + table.insert(temp, t) + end + return temp +end + +local function clone(tbl) + local t = {} + if tbl then + for k, v in pairs(tbl) do + if type(v) == "table" then + t[k] = clone(v) + else + t[k] = v + end + end + end + return t +end + +-- optionally allow sql syntax on strings +if psql_found then + -- generate SQL string marker regex + local sql_markers = { 'create', 'select', 'insert', 'update', 'replace', 'delete', 'drop', 'alter' } + local sql_regex = table.concat(sql_markers, '|') + + -- inject inline variable rules to cloned psql syntax + local syntax_phpsql = clone(syntax.get("file.sql")) + syntax_phpsql.name = "PHP SQL" + syntax_phpsql.files = "%.phpsql$" + table.insert(syntax_phpsql.patterns, 2, { pattern = "\\%$", type = "symbol" }) + table.insert(syntax_phpsql.patterns, 3, { pattern = "%{[%$%s]*%}", type = "symbol" }) + for i=4, 9 do + table.insert(syntax_phpsql.patterns, i, inline_variables[i]) + end + + -- SQL strings + sql_strings = { + { + regex = { '"(?=[\\s(]*(?i:'..sql_regex..')\\s+)', '"', '\\' }, + syntax = syntax_phpsql, + type = "string" + }, + { + regex = { "'(?=[\\s(]*(?i:"..sql_regex..")\\s+)", '\'', '\\' }, + syntax = '.sql', + type = "string" + }, + } +end + +-- define the core php syntax coloring +syntax.add { + name = "PHP Source", + files = { "%.phps$" }, + headers = "^<%?php", + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + -- Attributes + { pattern = {"#%[", "%]"}, type = "normal" }, + -- Comments + { pattern = "//.-\n", type = "comment" }, + { pattern = "#.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + -- Single quote string + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "<<<'%a%w*'\n", "^%s*%a%w*%f[;]", '\\' }, + type = "string" + }, + -- Strings with support for some inline variables syntax + { pattern = { "<<<%a%w*\n", "^%s*%a%w*%f[;]", '\\' }, + syntax = { + patterns = combine_patterns(inline_variables, { + -- prevent matching outside of the parent string + { pattern = "^%s*%a%w*();$", + type = { "string", "normal" } + }, + { pattern = "%p", type = "string" }, + }), + symbols = {} + }, + type = "string" + }, + { pattern = { '"', '"', '\\' }, + syntax = { + patterns = combine_patterns(inline_variables, { + -- prevent matching outside of the parent string + { pattern = "[^\"]", type = "string" }, + { pattern = "%p+%f[\"]", type = "string" }, + { pattern = "%p", type = "string" }, + }), + symbols = {} + }, + type = "string" + }, + { pattern = { '`', '`', '\\' }, + syntax = { + patterns = combine_patterns(inline_variables, { + -- prevent matching outside of the parent string + { pattern = "[^`]", type = "string" }, + { pattern = "%p+%f[`]", type = "string" }, + { pattern = "%p", type = "string" }, + }), + symbols = {} + }, + type = "string" + }, + { pattern = "0[bB][%d]+", type = "number" }, + { pattern = "0[xX][%da-fA-F]+", type = "number" }, + { pattern = "-?%d[%d_%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%.%+%-=/%*%^%%<>!~|&%?:@]", type = "operator" }, + -- Variables + { pattern = "%$[%w_]+", type = "keyword2" }, + -- Respect control structures, treat as keyword not function + { pattern = "if[%s]*%f[(]", type = "keyword" }, + { pattern = "else[%s]*%f[(]", type = "keyword" }, + { pattern = "elseif[%s]*%f[(]", type = "keyword" }, + { pattern = "for[%s]*%f[(]", type = "keyword" }, + { pattern = "foreach[%s]*%f[(]", type = "keyword" }, + { pattern = "while[%s]*%f[(]", type = "keyword" }, + { pattern = "catch[%s]*%f[(]", type = "keyword" }, + { pattern = "switch[%s]*%f[(]", type = "keyword" }, + { pattern = "match[%s]*%f[(]", type = "keyword" }, + { pattern = "fn[%s]*%f[(]", type = "keyword" }, + -- All functions that aren't control structures + { pattern = "[%a_][%w_]*[%s]*%f[(]", type = "function" }, + -- Array type hint not added on symbols to also make it work + -- as a function call + { pattern = "array", type = "literal" }, + -- Match static or namespace container on sub element access + { pattern = "[%a_][%w_]*[%s]*%f[:]", type = "literal" }, + -- Uppercase constants of at least 2 chars in len + { + pattern = "%u[%u_][%u%d_]*%f[%s%+%*%-%.%(%)%?%^%%=/<>~|&;:,!]", + type = "number" + }, + -- Magic constants + { pattern = "__[%u]+__", type = "number" }, + -- Everything else + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["return"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["endif"] = "keyword", + ["declare"] = "keyword", + ["enddeclare"] = "keyword", + ["switch"] = "keyword", + ["endswitch"] = "keyword", + ["as"] = "keyword", + ["do"] = "keyword", + ["for"] = "keyword", + ["endfor"] = "keyword", + ["foreach"] = "keyword", + ["endforeach"] = "keyword", + ["while"] = "keyword", + ["endwhile"] = "keyword", + ["match"] = "keyword", + ["case"] = "keyword", + ["continue"] = "keyword", + ["default"] = "keyword", + ["break"] = "keyword", + ["goto"] = "keyword", + ["yield"] = "keyword", + + ["try"] = "keyword", + ["catch"] = "keyword", + ["throw"] = "keyword", + ["finally"] = "keyword", + + ["class"] = "keyword", + ["enum"] = "keyword", + ["trait"] = "keyword", + ["interface"] = "keyword", + ["public"] = "keyword", + ["static"] = "keyword", + ["protected"] = "keyword", + ["private"] = "keyword", + ["readonly"] = "keyword", + ["abstract"] = "keyword", + ["final"] = "keyword", + ["$this"] = "literal", + + ["function"] = "keyword", + ["fn"] = "keyword", + ["global"] = "keyword", + ["var"] = "keyword", + ["const"] = "keyword", + + ["bool"] = "literal", + ["boolean"] = "literal", + ["int"] = "literal", + ["integer"] = "literal", + ["real"] = "literal", + ["double"] = "literal", + ["float"] = "literal", + ["string"] = "literal", + ["object"] = "literal", + ["callable"] = "literal", + ["iterable"] = "literal", + ["void"] = "literal", + ["parent"] = "literal", + ["self"] = "literal", + ["mixed"] = "literal", + ["never"] = "literal", + + ["namespace"] = "keyword", + ["extends"] = "keyword", + ["implements"] = "keyword", + ["instanceof"] = "keyword", + ["require"] = "keyword", + ["require_once"] = "keyword", + ["include"] = "keyword", + ["include_once"] = "keyword", + ["use"] = "keyword", + ["new"] = "keyword", + ["clone"] = "keyword", + + ["true"] = "number", + ["false"] = "number", + ["NULL"] = "number", + ["null"] = "number", + + ["print"] = "function", + ["echo"] = "function", + ["exit"] = "function", + }, +} + +-- insert sql string rules after the "/%*", "%*/" pattern +if psql_found and config.plugins.language_php.sql_strings then + local syntax_php = syntax.get("file.phps") + table.insert(syntax_php.patterns, 5, sql_strings[1]) + table.insert(syntax_php.patterns, 6, sql_strings[2]) +end + +-- allows html, css and js coloring on php files +syntax.add { + name = "PHP", + files = { "%.php$", "%.phtml" }, + block_comment = { "" }, + patterns = { + { + regex = { + "<\\?php\\s+", + "(?:\\?>|(?=`{3}))" -- end if inside markdown code tags + }, + syntax = ".phps", + type = "keyword2" + }, + { + pattern = { + "<%?=?", + "%?>" + }, + syntax = ".phps", + type = "keyword2" + }, + { + pattern = { + "<%s*[sS][cC][rR][iI][pP][tT]%f[%s>].->", + "<%s*/%s*[sS][cC][rR][iI][pP][tT]%s*>" + }, + syntax = ".js", + type = "function" + }, + { + pattern = { + "<%s*[sS][tT][yY][lL][eE]%f[%s>].->", + "<%s*/%s*[sS][tT][yY][lL][eE]%s*>" + }, + syntax = ".css", + type = "function" + }, + { pattern = { "" }, type = "comment" }, + { pattern = { '%f[^>][^<]', '%f[<]' }, type = "normal" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "%f[^<]![%a_][%w_]*", type = "keyword2" }, + { pattern = "%f[^<][%a_][%w_]*", type = "function" }, + { pattern = "%f[^<]/[%a_][%w_]*", type = "function" }, + { pattern = "[%a_][%w_]*", type = "keyword" }, + { pattern = "[/<>=]", type = "operator" }, + -- match markdown code tags to be able to end php highlighting + -- when inside the subsyntax .phps + { regex = "(?=`{3})", type = "string" } + }, + symbols = {}, +} + +-- allow coloring of php code inside css and js code +local syntaxes = { "css", "js" } +for _, ext in pairs(syntaxes) do + local syntax_table = syntax.get("file."..ext, "") + + table.insert( + syntax_table.patterns, + 1, + { + pattern = { + "<%?=?", + "%?>" + }, + syntax = ".phps", + type = "keyword2" + } + ) + + table.insert( + syntax_table.patterns, + 1, + { + pattern = { + "<%?php%s+", + "%?>" + }, + syntax = ".phps", + type = "keyword2" + } + ) +end diff --git a/debian/extra/plugins/language_pico8.lua b/debian/extra/plugins/language_pico8.lua new file mode 100644 index 0000000..aefd6f6 --- /dev/null +++ b/debian/extra/plugins/language_pico8.lua @@ -0,0 +1,53 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "PICO-8", + files = "%.p8$", + headers = "^pico-8 cartridge", + comment = "--", + patterns = { + { pattern = { 'pico%-8 cartridge', '__lua__' }, type = "comment" }, + { pattern = { '__gfx__\n', '%z' }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "%[%[", "%]%]" }, type = "string" }, + { pattern = { "%-%-%[%[", "%]%]"}, type = "comment" }, + { pattern = "%-%-.-\n", type = "comment" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "%.%.%.?", type = "operator" }, + { pattern = "[<>~=&|]=", type = "operator" }, + { pattern = "[%+%-=/%*%^%%#<>]", type = "operator" }, + { pattern = "[%a_][%w_]*%s*%f[(\"{]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "::[%a_][%w_]*::", type = "function" }, + }, + symbols = { + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["end"] = "keyword", + ["do"] = "keyword", + ["function"] = "keyword", + ["repeat"] = "keyword", + ["until"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["return"] = "keyword", + ["local"] = "keyword", + ["in"] = "keyword", + ["not"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["goto"] = "keyword", + ["self"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + }, +} + diff --git a/debian/extra/plugins/language_pkgbuild.lua b/debian/extra/plugins/language_pkgbuild.lua new file mode 100644 index 0000000..5c6a3c5 --- /dev/null +++ b/debian/extra/plugins/language_pkgbuild.lua @@ -0,0 +1,251 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "PKGBUILD", + files = { PATHSEP .. "PKGBUILD$" }, + comment = "#", + patterns = { + -- Don't colorize number of arguments expression as comment + { pattern = "%$#", type = "keyword2" }, + { pattern = "#.*", type = "comment" }, + -- Strings + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { '`', '`', '\\' }, type = "string" }, + -- Ignore numbers that start with dots or slashes + { pattern = "%f[%w_%.%/]%d[%d%.]*%f[^%w_%.]", type = "number" }, + -- Custom keyword matches + { pattern = "source%f[=]", type = "literal" }, + { pattern = "[ \t]source ", type = "keyword" }, + { pattern = "install%f[=]", type = "literal" }, + { pattern = "[ \t]tar ", type = "keyword" }, + { pattern = "[ \t]install ", type = "keyword" }, + { pattern = "[ \t]arch%-meson ", type = "keyword" }, + { pattern = "[ \t]patch ", type = "keyword" }, + { pattern = "[ \t]git ", type = "keyword" }, + { pattern = "[ \t]svn ", type = "keyword" }, + { pattern = "[ \t]fossil ", type = "keyword" }, + { pattern = "[ \t]meson ", type = "keyword" }, + { pattern = "[ \t]ninja ", type = "keyword" }, + { pattern = "[ \t]cmake ", type = "keyword" }, + { pattern = "[ \t]waf ", type = "keyword" }, + { pattern = "[ \t]%./configure[%s%c]+", type = "keyword" }, + -- Operators + { pattern = "[!<>|&%[%]:=*]", type = "operator" }, + -- Match parameters + { pattern = "%f[%S][%+%-][%w%-_:]+", type = "function" }, + { pattern = "%f[%S][%+%-][%w%-_]+%f[=]", type = "function" }, + -- Prevent parameters with assignments from been matched as variables + { + pattern = "%s%-%a[%w_%-]*%s+()%d[%d%.]+", + type = { "function", "number" } + }, + { + pattern = "%s%-%a[%w_%-]*%s+()%a[%a%-_:=]+", + type = { "function", "symbol" } + }, + -- Match variable assignments + { pattern = "[_%a][%w_]+%f[%+=]", type = "keyword2" }, + -- Match variable expansions + { pattern = "%${.-}", type = "keyword2" }, + { pattern = "%$[%d%$%a_@*][%w_]*", type = "keyword2" }, + -- Functions + { pattern = "[%a_%-][%w_%-]*[%s]*%f[(]", type = "function" }, + -- Everything else + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- Bash keywords + ["true"] = "literal", + ["false"] = "literal", + ["case"] = "keyword", + ["in"] = "keyword", + ["esac"] = "keyword", + ["if"] = "keyword", + ["then"] = "keyword", + ["elif"] = "keyword", + ["else"] = "keyword", + ["fi"] = "keyword", + ["until"] = "keyword", + ["while"] = "keyword", + ["do"] = "keyword", + ["done"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["shift"] = "keyword", + ["function"] = "keyword", + ["local"] = "keyword", + ["echo"] = "keyword", + ["return"] = "keyword", + ["exit"] = "keyword", + ["alias"] = "keyword", + ["test"] = "keyword", + ["select"] = "keyword", + ["type"] = "keyword", + ["declare"] = "keyword", + ["set"] = "keyword", + ["unalias"] = "keyword", + ["unset"] = "keyword", + ["enable"] = "keyword", + ["eval"] = "keyword", + ["exec"] = "keyword", + ["export"] = "keyword", + ["getopts"] = "keyword", + ["hash"] = "keyword", + ["history"] = "keyword", + ["help"] = "keyword", + ["jobs"] = "keyword", + ["kill"] = "keyword", + ["let"] = "keyword", + ["mapfile"] = "keyword", + ["readarray"] = "keyword", + -- Commands + ["printf"] = "keyword", + ["read"] = "keyword", + ["pwd"] = "keyword", + ["time"] = "keyword", + ["cd"] = "keyword", + ["cp"] = "keyword", + ["mv"] = "keyword", + ["mkdir"] = "keyword", + ["rm"] = "keyword", + ["rmdir"] = "keyword", + ["chown"] = "keyword", + ["chmod"] = "keyword", + ["touch"] = "keyword", + ["ln"] = "keyword", + ["cat"] = "keyword", + ["sed"] = "keyword", + ["awk"] = "keyword", + ["find"] = "keyword", + ["grep"] = "keyword", + ["head"] = "keyword", + ["less"] = "keyword", + ["gcc"] = "keyword", + ["gpp"] = "keyword", + ["make"] = "keyword", + ["qmake"] = "keyword", + -- PKGBUILD keywords + ["pkgbase"] = "literal", + ["pkgname"] = "literal", + ["pkgver"] = "literal", + ["pkgrel"] = "literal", + ["epoch"] = "literal", + ["pkgdesc"] = "literal", + ["arch"] = "literal", + ["url"] = "literal", + ["license"] = "literal", + ["groups"] = "literal", + ["depends"] = "literal", + ["depends_arm"] = "literal", + ["depends_armv6h"] = "literal", + ["depends_armv7h"] = "literal", + ["depends_aarch64"] = "literal", + ["depends_i686"] = "literal", + ["depends_x86_64"] = "literal", + ["makedepends"] = "literal", + ["makedepends_arm"] = "literal", + ["makedepends_armv6h"] = "literal", + ["makedepends_armv7h"] = "literal", + ["makedepends_aarch64"] = "literal", + ["makedepends_i686"] = "literal", + ["makedepends_x86_64"] = "literal", + ["checkdepends"] = "literal", + ["checkdepends_arm"] = "literal", + ["checkdepends_armv6h"] = "literal", + ["checkdepends_armv7h"] = "literal", + ["checkdepends_aarch64"] = "literal", + ["checkdepends_i686"] = "literal", + ["checkdepends_x86_64"] = "literal", + ["optdepends"] = "literal", + ["optdepends_arm"] = "literal", + ["optdepends_armv6h"] = "literal", + ["optdepends_armv7h"] = "literal", + ["optdepends_aarch64"] = "literal", + ["optdepends_i686"] = "literal", + ["optdepends_x86_64"] = "literal", + ["provides"] = "literal", + ["provides_arm"] = "literal", + ["provides_armv6h"] = "literal", + ["provides_armv7h"] = "literal", + ["provides_aarch64"] = "literal", + ["provides_i686"] = "literal", + ["provides_x86_64"] = "literal", + ["conflicts"] = "literal", + ["conflicts_arm"] = "literal", + ["conflicts_armv6h"] = "literal", + ["conflicts_armv7h"] = "literal", + ["conflicts_aarch64"] = "literal", + ["conflicts_i686"] = "literal", + ["conflicts_x86_64"] = "literal", + ["replaces"] = "literal", + ["replaces_arm"] = "literal", + ["replaces_armv6h"] = "literal", + ["replaces_armv7h"] = "literal", + ["replaces_aarch64"] = "literal", + ["replaces_i686"] = "literal", + ["replaces_x86_64"] = "literal", + ["backup"] = "literal", + ["options"] = "literal", + ["changelog"] = "literal", + ["source_arm"] = "literal", + ["source_armv6h"] = "literal", + ["source_armv7h"] = "literal", + ["source_aarch64"] = "literal", + ["source_i686"] = "literal", + ["source_x86_64"] = "literal", + ["noextract"] = "literal", + ["validpgpkeys"] = "literal", + ["md5sums"] = "literal", + ["md5sums_arm"] = "literal", + ["md5sums_armv6h"] = "literal", + ["md5sums_armv7h"] = "literal", + ["md5sums_aarch64"] = "literal", + ["md5sums_i686"] = "literal", + ["md5sums_x86_64"] = "literal", + ["sha1sums"] = "literal", + ["sha1sums_arm"] = "literal", + ["sha1sums_armv6h"] = "literal", + ["sha1sums_armv7h"] = "literal", + ["sha1sums_aarch64"] = "literal", + ["sha1sums_i686"] = "literal", + ["sha1sums_x86_64"] = "literal", + ["sha256sums"] = "literal", + ["sha256sums_arm"] = "literal", + ["sha256sums_armv6h"] = "literal", + ["sha256sums_armv7h"] = "literal", + ["sha256sums_aarch64"] = "literal", + ["sha256sums_i686"] = "literal", + ["sha256sums_x86_64"] = "literal", + ["sha224sums"] = "literal", + ["sha224sums_arm"] = "literal", + ["sha224sums_armv6h"] = "literal", + ["sha224sums_armv7h"] = "literal", + ["sha224sums_aarch64"] = "literal", + ["sha224sums_i686"] = "literal", + ["sha224sums_x86_64"] = "literal", + ["sha384sums"] = "literal", + ["sha384sums_arm"] = "literal", + ["sha384sums_armv6h"] = "literal", + ["sha384sums_armv7h"] = "literal", + ["sha384sums_aarch64"] = "literal", + ["sha384sums_i686"] = "literal", + ["sha384sums_x86_64"] = "literal", + ["sha512sums"] = "literal", + ["sha512sums_arm"] = "literal", + ["sha512sums_armv6h"] = "literal", + ["sha512sums_armv7h"] = "literal", + ["sha512sums_aarch64"] = "literal", + ["sha512sums_i686"] = "literal", + ["sha512sums_x86_64"] = "literal", + ["b2sums"] = "literal", + ["b2sums_arm"] = "literal", + ["b2sums_armv6h"] = "literal", + ["b2sums_armv7h"] = "literal", + ["b2sums_aarch64"] = "literal", + ["b2sums_i686"] = "literal", + ["b2sums_x86_64"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_po.lua b/debian/extra/plugins/language_po.lua new file mode 100644 index 0000000..a1b098c --- /dev/null +++ b/debian/extra/plugins/language_po.lua @@ -0,0 +1,21 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "PO", + files = { "%.po$", "%.pot$" }, + comment = "#", + patterns = { + { pattern = { "#", "\n"}, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "[%[%]]", type = "operator" }, + { pattern = "%d+", type = "number" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["msgctxt"] = "keyword", + ["msgid"] = "keyword", + ["msgid_plural"] = "keyword", + ["msgstr"] = "keyword", + }, +} diff --git a/debian/extra/plugins/language_powershell.lua b/debian/extra/plugins/language_powershell.lua new file mode 100644 index 0000000..fdba844 --- /dev/null +++ b/debian/extra/plugins/language_powershell.lua @@ -0,0 +1,77 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "PowerShell", + files = { + "%.ps1$", "%.psm1$", "%.psd1$", "%.ps1xml$", + "%.pssc$", "%.psrc$", "%.cdxml$" + }, + comment = "#", + patterns = { + {pattern = "#.*\n", type = "comment"}, + {pattern = [[\.]], type = "normal"}, + {pattern = {'"', '"'}, type = "string"}, + {pattern = {"'", "'"}, type = "string"}, + {pattern = "%f[%w_][%d%.]+%f[^%w_]", type = "number"}, + {pattern = "[%+=/%*%^%%<>!~|&,:]+", type = "operator"}, + {pattern = "%f[%S]%-[%w%-_]+", type = "function"}, + {pattern = "[%u][%a]+[%-][%u][%a]+", type = "function"}, + {pattern = "${.*}", type = "symbol"}, + {pattern = "$[%a_@*][%w_]*", type = "keyword2"}, + {pattern = "$[%$][%a]+", type = "keyword2"}, + {pattern = "[%a_][%w_]*", type = "symbol"} + }, + symbols = { + ["if"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["switch"] = "keyword", + ["default"] = "keyword", + ["function"] = "keyword", + ["filter"] = "keyword", + ["workflow"] = "keyword", + ["configuration"] = "keyword", + ["class"] = "keyword", + ["enum"] = "keyword", + ["Parameter"] = "keyword", + ["ValidateScript"] = "keyword", + ["CmdletBinding"] = "keyword", + ["try"] = "keyword", + ["catch"] = "keyword", + ["finally"] = "keyword", + ["throw"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["do"] = "keyword", + ["until"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["foreach"] = "keyword", + ["in"] = "keyword", + ["return"] = "keyword", + ["where"] = "function", + ["select"] = "function", + ["filter"] = "keyword", + ["in"] = "keyword", + ["trap"] = "keyword", + ["param"] = "keyword", + ["data"] = "keyword", + ["dynamicparam"] = "keyword", + ["begin"] = "function", + ["process"] = "function", + ["end"] = "function", + ["exit"] = "function", + ["inlinescript"] = "function", + ["parallel"] = "function", + ["sequence"] = "function", + ["true"] = "literal", + ["false"] = "literal", + ["TODO"] = "comment", + ["FIXME"] = "comment", + ["XXX"] = "comment", + ["TBD"] = "comment", + ["HACK"] = "comment", + ["NOTE"] = "comment" + } +} diff --git a/debian/extra/plugins/language_psql.lua b/debian/extra/plugins/language_psql.lua new file mode 100644 index 0000000..afb5a11 --- /dev/null +++ b/debian/extra/plugins/language_psql.lua @@ -0,0 +1,92 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +-- In sql symbols can be lower case and upper case +local keywords = { + "CREATE", "SELECT", "ADD", "INSERT", "INTO", "UPDATE", + "DELETE", "TABLE", "DROP", "VALUES", "NOT", + "NULL", "PRIMARY", "KEY", "REFERENCES", + "DEFAULT", "UNIQUE", "CONSTRAINT", "CHECK", + "ON", "EXCLUDE", "WITH", "USING", "WHERE", + "GROUP", "BY", "HAVING", "DISTINCT", "LIMIT", + "OFFSET", "ONLY", "CROSS", "JOIN", "INNER", + "LEFT", "RIGHT", "FULL", "OUTER", "NATURAL", + "AND", "OR", "AS", "ORDER", "ORDINALITY", + "UNNEST", "FROM", "VIEW", "RETURNS", "SETOF", + "LANGUAGE", "SQL", "LIKE", "LATERAL", + "INTERVAL", "PARTITION", "UNION", "INTERSECT", + "EXCEPT", "ALL", "ASC", "DESC", "NULLS", + "FIRST", "LAST", "IN", "RECURSIVE", "ARRAY", + "RETURNING", "SET", "ALSO", "INSTEAD", + "ALTER", "SEQUENCE", "OWNED", "AT", "ZONE", + "WITHOUT", "TO", "TIMEZONE", "TYPE", "ENUM", + "DOCUMENT", "XMLPARSE", "XMLSERIALIZE", + "CONTENT", "OPTION", "INDEX", "ANY", + "EXTENSION", "ISNULL", "NOTNULL", "UNKNOWN", + "CASE", "THEN", "WHEN", "ELSE", "END", + "ROWS", "BETWEEN", "UNBOUNDED", "PRECEDING", + "UNBOUNDED", "FOLLOWING", "EXISTS", "SOME", + "COLLATION", "FOR", "TRIGGER", "BEFORE", + "EACH", "ROW", "EXECUTE", "PROCEDURE", + "FUNCTION", "DECLARE", "BEGIN", "LOOP", + "RAISE", "NOTICE", "LOOP", "EVENT", + "OPERATOR", "DOMAIN", "VARIADIC", "FOREIGN" +} + +local types = { + "BIGINT", "INT8", "BIGSERIAL", "SERIAL8", + "BIT", "VARBIT", "BOOLEAN", "BOOL", "BOX", + "BYTEA", "CHARACTER", "CHAR", "VARCHAR", + "CIDR", "CIRCLE", "DATE", "DOUBLE", + "PRECISION", "FLOAT8", "INET", "INTEGER", + "INT", "INT4", "INTERVAL", "JSON", "JSONB", + "LINE", "LSEG", "MACADDR", "MONEY", "NUMERIC", + "DECIMAL", "PATH", "POINT", "POLYGON", "REAL", + "FLOAT4", "INT2", "SMALLINT", "SMALLSERIAL", + "SERIAL2", "SERIAL", "SERIAL4", "TEXT", + "TIME", "TIMEZ", "TIMESTAMP", "TIMESTAMPZ", + "TSQUERY", "TSVECTOR", "TXID_SNAPSHOT", + "UUID", "XML", "INT4RANGE", "INT8RANGE", + "NUMRANGE", "TSRANGE", "TSTZRANGE", + "DATERANGE", "PG_LSN" +} + +local literals = { + "FALSE", "TRUE", "CURRENT_TIMESTAMP", + "CURRENT_TIME", "CURRENT_DATE", "LOCALTIME", + "LOCALTIMESTAMP" +} + +local symbols = {} +for _, keyword in ipairs(keywords) do + symbols[keyword:lower()] = "keyword" + symbols[keyword] = "keyword" +end + +for _, type in ipairs(types) do + symbols[type:lower()] = "keyword2" + symbols[type] = "keyword2" +end + +for _, literal in ipairs(literals) do + symbols[literal:lower()] = "literal" + symbols[literal] = "literal" +end + +syntax.add { + name = "PostgreSQL", + files = { "%.sql$", "%.psql$" }, + comment = "--", + patterns = { + { pattern = "%-%-.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%%<>!~|&@%?$#]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = symbols, +} + diff --git a/debian/extra/plugins/language_rescript.lua b/debian/extra/plugins/language_rescript.lua new file mode 100644 index 0000000..3d3bca0 --- /dev/null +++ b/debian/extra/plugins/language_rescript.lua @@ -0,0 +1,60 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "ReScript", + files = { "%.res$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "`", "`", '\\' }, type = "string" }, + { pattern = "#[%a_][%w_]*", type = "literal" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "%f[^%.>]%l[%w_]*", type = "function" }, + { pattern = "%l[%w_]*%f[(]", type = "function" }, + { pattern = "%u[%w_]*", type = "keyword2" }, + { pattern = "[%l_][%w_%.]*", type = "symbol" }, + { pattern = "@%l[%w_]*", type = "string" }, + }, + symbols = { + ["and"] = "keyword", + ["array"] = "keyword2", + ["as"] = "keyword", + ["assert"] = "keyword", + ["bool"] = "keyword2", + ["constraint"] = "keyword", + ["downto"] = "keyword", + ["else"] = "keyword", + ["exception"] = "keyword", + ["external"] = "keyword", + ["false"] = "literal", + ["for"] = "keyword", + ["if"] = "keyword", + ["in"] = "keyword", + ["int"] = "keyword2", + ["include"] = "keyword", + ["lazy"] = "keyword", + ["let"] = "keyword", + ["module"] = "keyword", + ["mutable"] = "keyword", + ["of"] = "keyword", + ["open"] = "keyword", + ["option"] = "keyword2", + ["rec"] = "keyword", + ["switch"] = "keyword", + ["string"] = "keyword2", + ["to"] = "keyword", + ["true"] = "literal", + ["try"] = "keyword", + ["type"] = "keyword", + ["when"] = "keyword", + ["while"] = "keyword", + ["with"] = "keyword", + } +} diff --git a/debian/extra/plugins/language_ring.lua b/debian/extra/plugins/language_ring.lua new file mode 100644 index 0000000..ca9123b --- /dev/null +++ b/debian/extra/plugins/language_ring.lua @@ -0,0 +1,92 @@ +-- mod-version:3 +-- Refrence: https://ring-lang.github.io/doc1.21.2/syntaxflexibility.html + +local syntax = require "core.syntax" + +-- Keywords +local keywords = { + "enablehashcomments", "disablehashcomments", "call", "class", "from", "get", "give", + "import", "load", "new", "package", "private", "changeringkeyword", "changeringoperator", + "loadsyntax", "endclass", "endpackage", "if", "but", "else", "elseif", "ok", "for", + "foreach", "to", "next", "catch", "step", "endfor", "while", "other", "end", "do", + "endwhile", "endswitch", "endtry", "try", "break", "bye", "continue", "default", + "endfunc", "endfunction", "return", "switch", "case", "on", "off", "again", "exit", + "loop", "done", "in", "func", "def", "nl" +} + +-- Types using ring type hints library +local types = { + "char", "unsigned", "signed", "int", "short", "long", "float", "double", "void", + "byte", "boolean", "string", "list", "number", "object", "public", "static", + "abstract", "protected", "override" +} + +-- Special values +local literals = { + "true", "false", "null" +} + +-- Built-in functions +local builtin_functions = { + "see", "put", "print" +} + +local symbols = {} + +for _, keyword in ipairs(keywords) do + symbols[keyword:upper()] = "keyword" + symbols[keyword:gsub("^%l", string.upper)] = "keyword" + symbols[keyword] = "keyword" +end + +for _, type in ipairs(types) do + symbols[type:upper()] = "keyword2" + symbols[type:gsub("^%l", string.upper)] = "keyword2" + symbols[type] = "keyword2" +end + +for _, literal in ipairs(literals) do + symbols[literal:upper()] = "literal" + symbols[literal:gsub("^%l", string.upper)] = "literal" + symbols[literal] = "literal" +end + +for _, func in ipairs(builtin_functions) do + symbols[func:upper()] = "function" + symbols[func:gsub("^%l", string.upper)] = "function" + symbols[func] = "function" +end + +local string_syntax = { + patterns = { + { pattern = {"%#{", "}", "\\"}, type="keyword", syntax = ".ring" }, + { pattern = "[^#\"`']+", type = "string"}, + { pattern = "[#\"`']", type = "string"} + }, + symbols = {} +} + +syntax.add { + name = "Ring", + files = { "%.ring$", "%.rh$", "%.rform$" }, + comment = "//", + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string", syntax = string_syntax }, + { pattern = { "'", "'", '\\' }, type = "string", syntax = string_syntax }, + { pattern = { "`", "`", '\\' }, type = "string", syntax = string_syntax }, + { pattern = "-?%d+[%d%.]*f?", type = "number" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[Dd][Ee][Ff]()%s+()[%a_][%w_]*", type = { "keyword", "normal", "function" } }, + { pattern = "[Ff][Uu][Nn][Cc]()%s+()[%a_][%w_]*", type = { "keyword", "normal", "function" } }, + { pattern = "[Cc][Ll][Aa][Ss][Ss]()%s+()[%a_][%w_]*", type = { "keyword", "normal", "function" } }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "%?", type = "keyword" }, + { pattern = ":[%a_][%w_]*", type = "literal" }, + }, + symbols = symbols +} diff --git a/debian/extra/plugins/language_rivet.lua b/debian/extra/plugins/language_rivet.lua new file mode 100644 index 0000000..7db2db2 --- /dev/null +++ b/debian/extra/plugins/language_rivet.lua @@ -0,0 +1,102 @@ +-- mod-version:3 + +-- Syntax highlighting for the Rivet programming language. +-- This plugin is always updated to the latest Rivet syntax. +-- By StunxFS =). + +local syntax = require "core.syntax" + +syntax.add { + name = "Rivet", + files = {"%.ri$"}, + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + {pattern = "//.*", type = "comment"}, + {pattern = {"/%*", "%*/"}, type = "comment"}, + {pattern = {'[bcr]?"', '"', "\\"}, type = "string"}, + {pattern = {"[b]?'", "'", "\\"}, type = "string"}, + {pattern = "0b[01_]+", type = "number"}, + {pattern = "0o[0-7_]+", type = "number"}, + {pattern = "0x[%x_]+", type = "number"}, + {pattern = "%d[%d_]*%.[%d_]*[eE][-+]?%d+", type = "number"}, + {pattern = "%d[%d_]*%.[%d_]*", type = "number"}, + {pattern = "%d[%d_]*", type = "number"}, + {pattern = "-?%.?%d+", type = "number"}, + {pattern = "[%[%]%(%)%+%-=/%*%^%%<>!~|&%.%?:;]", type = "operator"}, + { + pattern = "_?%u[%u_][%u%d_]*%f[%s%+%*%-%.%)%]}%?%^%%=/<>~|&;:,!]", + type = "literal" + }, + -- types + {pattern = "[A-Z][%w_]*", type = "keyword2"}, + -- builtin func/var + {pattern = "%@%s?[%a_][%w_]*", type = "literal"}, + -- `defer` modes + {pattern = "defer%s?%(%s?()[%a_][%w_]*()%s?%)", type = {"keyword", "comment", "normal"} }, + -- functions + {pattern = "[%a_][%w_]*%f[(]", type = "function"}, + -- attributes + {pattern = "#%s?%[.*%]", type = "keyword2"}, + -- symbols + {pattern = "[%a_][%w_]*", type = "symbol"} + }, + symbols = { + ["alias"] = "keyword", + ["as"] = "keyword", + ["break"] = "keyword", + ["catch"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["defer"] = "keyword", + ["else"] = "keyword", + ["enum"] = "keyword", + ["extend"] = "keyword", + ["extern"] = "keyword", + ["func"] = "keyword", + ["for"] = "keyword", + ["if"] = "keyword", + ["import"] = "keyword", + ["in"] = "keyword", + ["is"] = "keyword", + ["match"] = "keyword", + ["mut"] = "keyword", + ["pub"] = "keyword", + ["return"] = "keyword", + ["struct"] = "keyword", + ["test"] = "keyword", + ["throw"] = "keyword", + ["trait"] = "keyword", + ["unsafe"] = "keyword", + ["var"] = "keyword", + ["while"] = "keyword", + + -- literals + ["false"] = "literal", + ["none"] = "literal", + ["self"] = "literal", + ["true"] = "literal", + + -- types + ["never"] = "keyword2", + ["bool"] = "keyword2", + ["comptime_int"] = "keyword2", + ["comptime_float"] = "keyword2", + ["int"] = "keyword2", + ["int8"] = "keyword2", + ["int16"] = "keyword2", + ["int32"] = "keyword2", + ["int64"] = "keyword2", + ["uint"] = "keyword2", + ["uint8"] = "keyword2", + ["uint16"] = "keyword2", + ["uint32"] = "keyword2", + ["uint64"] = "keyword2", + ["float32"] = "keyword2", + ["float64"] = "keyword2", + ["rawptr"] = "keyword2", + ["rune"] = "keyword2", + ["string"] = "keyword2", + ["Self"] = "keyword2" + } +} diff --git a/debian/extra/plugins/language_ruby.lua b/debian/extra/plugins/language_ruby.lua new file mode 100644 index 0000000..e106629 --- /dev/null +++ b/debian/extra/plugins/language_ruby.lua @@ -0,0 +1,73 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Ruby", + files = { "%.rb$", PATHSEP .. "%.gemspec$", PATHSEP .. "Gemfile$", PATHSEP .. "Gemfile%.lock$" }, + headers = "^#!.*[ /]ruby", + comment = "#", + patterns = { + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "%#.-\n", type = "comment" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "@?@[%a_][%w_]*", type = "keyword2" }, + { pattern = "::[%w_]*", type = "symbol" }, + { pattern = ":[%w_]*", type = "keyword2" }, + { pattern = "[%a_][%w_]*:[^:]", type = "keyword2" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["nil"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + ["private"] = "keyword", + ["extend"] = "keyword", + ["include"] = "keyword", + ["require"] = "keyword", + ["require_dependency"] = "keyword", + ["__ENCODING__"] = "keyword", + ["__LINE__"] = "keyword", + ["__FILE__"] = "keyword", + ["BEGIN"] = "keyword", + ["END"] = "keyword", + ["alias"] = "keyword", + ["and"] = "keyword", + ["begin"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["class"] = "keyword", + ["def"] = "keyword", + ["defined?"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["elsif"] = "keyword", + ["end"] = "keyword", + ["ensure"] = "keyword", + ["for"] = "keyword", + ["if"] = "keyword", + ["in"] = "keyword", + ["module"] = "keyword", + ["next"] = "keyword", + ["not"] = "keyword", + ["or"] = "keyword", + ["redo"] = "keyword", + ["rescue"] = "keyword", + ["retry"] = "keyword", + ["return"] = "keyword", + ["self"] = "keyword", + ["super"] = "keyword", + ["then"] = "keyword", + ["undef"] = "keyword", + ["unless"] = "keyword", + ["until"] = "keyword", + ["when"] = "keyword", + ["while"] = "keyword", + ["yield"] = "keyword" + }, +} + diff --git a/debian/extra/plugins/language_rust.lua b/debian/extra/plugins/language_rust.lua new file mode 100644 index 0000000..09e75ba --- /dev/null +++ b/debian/extra/plugins/language_rust.lua @@ -0,0 +1,89 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Rust", + files = { "%.rs$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { 'r#"', '"#', '\\' }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "'.'", type = "string" }, + { pattern = "'[%a_][%a%d_]*", type = "keyword2" }, + { pattern = "0[oO_][0-7]+", type = "number" }, + { pattern = "-?0x[%x_]+", type = "number" }, + { pattern = "-?%d+_%d", type = "number" }, + { pattern = "-?%d+[%d%.eE]*f?", type = "number" }, + { pattern = "-?%.?%d+f?", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { regex = "[[:alpha:]_][\\w]*(?=\\s*<[\\w\\s,']+>\\s*\\()", type = "function" }, + { pattern = "[%a_][%w_]*!%f[%[(]", type = "function" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["as"] = "keyword", + ["async"] = "keyword", + ["await"] = "keyword", + ["break"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["crate"] = "keyword", + ["dyn"] = "keyword", + ["else"] = "keyword", + ["enum"] = "keyword", + ["extern"] = "keyword", + ["fn"] = "keyword", + ["for"] = "keyword", + ["if"] = "keyword", + ["impl"] = "keyword", + ["in"] = "keyword", + ["let"] = "keyword", + ["loop"] = "keyword", + ["match"] = "keyword", + ["mod"] = "keyword", + ["move"] = "keyword", + ["mut"] = "keyword", + ["pub"] = "keyword", + ["ref"] = "keyword", + ["return"] = "keyword", + ["Self"] = "keyword", + ["self"] = "keyword", + ["static"] = "keyword", + ["struct"] = "keyword", + ["super"] = "keyword", + ["trait"] = "keyword", + ["type"] = "keyword", + ["unsafe"] = "keyword", + ["use"] = "keyword", + ["where"] = "keyword", + ["while"] = "keyword", + ["i32"] = "keyword2", + ["i64"] = "keyword2", + ["i128"] = "keyword2", + ["i16"] = "keyword2", + ["i8"] = "keyword2", + ["u8"] = "keyword2", + ["u16"] = "keyword2", + ["u32"] = "keyword2", + ["u64"] = "keyword2", + ["usize"] = "keyword2", + ["isize"] = "keyword2", + ["f32"] = "keyword2", + ["f64"] = "keyword2", + ["f128"] = "keyword2", + ["String"] = "keyword2", + ["char"] = "keyword2", + ["str"] = "keyword2", + ["bool"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["None"] = "literal", + ["Some"] = "literal", + ["Option"] = "literal", + ["Result"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_sass.lua b/debian/extra/plugins/language_sass.lua new file mode 100644 index 0000000..f440927 --- /dev/null +++ b/debian/extra/plugins/language_sass.lua @@ -0,0 +1,47 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Sass", + files = { "%.sass$" ,"%.scss$"}, + comment = "//", + patterns = { + { pattern = "/[/%*].-\n", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "$%w+", type = "keyword" }, + { pattern = "@%w+", type = "literal" }, + { pattern = "[#,]%w+", type = "function" }, + { pattern = "&", type = "keyword2" }, + { pattern = "[:%/%*%-]", type = "operator" }, + { pattern = "[%a][%w-]*%s*%f[:]", type = "keyword2" }, + { pattern = "-?%d+[%d%.]*p[xt]", type = "number" }, + { pattern = "-?%d+[%d%.]*deg", type = "number" }, + { pattern = "-?%d+[%d%.]*[s%%]", type = "number" }, + { pattern = "-?%d+[%d%.]*", type = "number" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["transparent"] = "literal", + ["none"] = "literal", + ["absolute"] = "literal", + ["relative"] = "literal", + ["solid"] = "literal", + ["flex"] = "literal", + ["flex-start"] = "literal", + ["flex-end"] = "literal", + ["row"] = "literal", + ["center"] = "literal", + ["column"] = "literal", + ["pointer"] = "literal", + ["ease"] = "literal", + ["white"] = "function", + ["black"] = "function", + ["gray"] = "function", + ["blue"] = "function", + ["red"] = "function", + ["purple"] = "function", + ["green"] = "function", + ["yellow"] = "function" + } +} diff --git a/debian/extra/plugins/language_scala.lua b/debian/extra/plugins/language_scala.lua new file mode 100644 index 0000000..6c5d7a7 --- /dev/null +++ b/debian/extra/plugins/language_scala.lua @@ -0,0 +1,80 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Scala", + files = { "%.sc$", "%.scala$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '[ruU]?"', '"', '\\' }, type = "string" }, + { pattern = { "[ruU]?'", "'", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = '[%a_][%w_]*"""*[%a_][%w_]*"""', type = "string" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["abstract"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["class"] = "keyword", + ["finally"] = "keyword", + ["final"] = "keyword", + ["do"] = "keyword", + ["extends"] = "keyword", + ["forSome"] = "keyword", + ["implicit"] = "keyword", + ["lazy"] = "keyword", + ["match"] = "keyword", + ["new"] = "keyword", + ["override"] = "keyword", + ["package"] = "keyword", + ["throw"] = "keyword", + ["trait"] = "keyword", + ["type"] = "keyword", + ["var"] = "keyword", + ["val"] = "keyword", + ["println"] = "keyword", + ["return"] = "keyword", + ["for"] = "keyword", + ["Try"] = "keyword", + ["def"] = "keyword", + ["while"] = "keyword", + ["with"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["import"] = "keyword", + ["object"] = "keyword", + ["yield"] = "keyword", + + ["private"] = "keyword2", + ["protected"] = "keyword2", + ["sealed"] = "keyword2", + ["super"] = "keyword2", + ["this"] = "keyword2", + ["Byte"] = "keyword2", + ["Short"] = "keyword2", + ["Int"] = "keyword2", + ["Long"] = "keyword2", + ["Float"] = "keyword2", + ["Double"] = "keyword2", + ["Char"] = "keyword2", + ["String"] = "keyword2", + ["List"] = "keyword2", + ["Array"] = "keyword2", + ["Boolean"] = "keyword2", + + ["Null"] = "literal", + ["Any"] = "literal", + ["AnyRef"] = "literal", + ["Nothing"] = "literal", + ["Unit"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + } +} diff --git a/debian/extra/plugins/language_sh.lua b/debian/extra/plugins/language_sh.lua new file mode 100644 index 0000000..dbc0c82 --- /dev/null +++ b/debian/extra/plugins/language_sh.lua @@ -0,0 +1,103 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Shell script", + files = { + "%.sh$", "%.bash$", + PATHSEP .. "%.bashrc$", PATHSEP .. "%.bash_profile$", PATHSEP .. "%.profile$", + "%.zsh$", "%.fish$", + PATHSEP .. "APKBUILD$", + }, + headers = "^#!.*bin.*sh\n", + comment = "#", + patterns = { + -- $# is a bash special variable and the '#' shouldn't be interpreted + -- as a comment. + { pattern = "%$[%a_@*#][%w_]*", type = "keyword2" }, + -- Comments + { pattern = "#.*", type = "comment" }, + -- Strings + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { '`', '`', '\\' }, type = "string" }, + -- Ignore numbers that start with dots or slashes + { pattern = "%f[%w_%.%/]%d[%d%.]*%f[^%w_%.]", type = "number" }, + -- Operators + { pattern = "[!<>|&%[%]:=*]", type = "operator" }, + -- Match parameters + { pattern = "%f[%S][%+%-][%w%-_:]+", type = "function" }, + { pattern = "%f[%S][%+%-][%w%-_]+%f[=]", type = "function" }, + -- Prevent parameters with assignments from been matched as variables + { + pattern = "%s%-%a[%w_%-]*%s+()%d[%d%.]+", + type = { "function", "number" } + }, + { + pattern = "%s%-%a[%w_%-]*%s+()%a[%a%-_:=]+", + type = { "function", "symbol" } + }, + -- Match variable assignments + { pattern = "[_%a][%w_]+%f[%+=]", type = "keyword2" }, + -- Match variable expansions + { pattern = "%${.-}", type = "keyword2" }, + { pattern = "%$[%d%$%a_@*][%w_]*", type = "keyword2" }, + -- Everything else + { pattern = "[%a_][%w_]*", type = "symbol" }, + -- Functions + { pattern = "[%a_%-][%w_%-]*[%s]*%f[(]", type = "function" }, + }, + symbols = { + ["case"] = "keyword", + ["in"] = "keyword", + ["esac"] = "keyword", + ["if"] = "keyword", + ["then"] = "keyword", + ["elif"] = "keyword", + ["else"] = "keyword", + ["fi"] = "keyword", + ["while"] = "keyword", + ["do"] = "keyword", + ["done"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["function"] = "keyword", + ["local"] = "keyword", + ["echo"] = "keyword", + ["return"] = "keyword", + ["exit"] = "keyword", + ["alias"] = "keyword", + ["test"] = "keyword", + ["cd"] = "keyword", + ["declare"] = "keyword", + ["enable"] = "keyword", + ["eval"] = "keyword", + ["exec"] = "keyword", + ["export"] = "keyword", + ["getopts"] = "keyword", + ["hash"] = "keyword", + ["history"] = "keyword", + ["help"] = "keyword", + ["jobs"] = "keyword", + ["kill"] = "keyword", + ["let"] = "keyword", + ["mapfile"] = "keyword", + ["printf"] = "keyword", + ["read"] = "keyword", + ["readarray"] = "keyword", + ["pwd"] = "keyword", + ["select"] = "keyword", + ["set"] = "keyword", + ["shift"] = "keyword", + ["source"] = "keyword", + ["time"] = "keyword", + ["type"] = "keyword", + ["until"] = "keyword", + ["unalias"] = "keyword", + ["unset"] = "keyword", + ["true"] = "literal", + ["false"] = "literal" + } +} + diff --git a/debian/extra/plugins/language_ssh_config.lua b/debian/extra/plugins/language_ssh_config.lua new file mode 100644 index 0000000..d507ef4 --- /dev/null +++ b/debian/extra/plugins/language_ssh_config.lua @@ -0,0 +1,58 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "SSH config", + files = { PATHSEP .. "sshd?" .. PATHSEP .. "?_?config$" }, + comment = '#', + patterns = { + { pattern = "#.*", type = "comment" }, + { pattern = "%d+", type = "number" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "@", type = "operator" }, + }, + symbols = { + -- ssh config + ["Host"] = "function", + ["ProxyCommand"] = "function", + + ["HostName"] = "keyword", + ["IdentityFile"] = "keyword", + ["IdentitiesOnly"] = "keyword", + ["User"] = "keyword", + ["Port"] = "keyword", + + ["ForwardAgent"] = "keyword", + ["ForwardX11"] = "keyword", + ["ForwardX11Trusted"] = "keyword", + ["HostbasedAuthentication"] = "keyword", + ["GSSAPIAuthentication"] = "keyword", + ["GSSAPIDelegateCredentials"] = "keyword", + ["GSSAPIKeyExchange"] = "keyword", + ["GSSAPITrustDNS"] = "keyword", + ["BatchMode"] = "keyword", + ["CheckHostIP"] = "keyword", + ["AddressFamily"] = "keyword", + ["ConnectTimeout"] = "keyword", + ["StrictHostKeyChecking"] = "keyword", + ["Ciphers"] = "keyword", + ["MACs"] = "keyword", + ["EscapeChar"] = "keyword", + ["Tunnel"] = "keyword", + ["TunnelDevice"] = "keyword", + ["PermitLocalCommand"] = "keyword", + ["VisualHostKey"] = "keyword", + ["RekeyLimit"] = "keyword", + ["SendEnv"] = "keyword", + ["HashKnownHosts"] = "keyword", + + -- sshd config + ["Subsystem"] = "keyword2", + + + ["yes"] = "literal", + ["no"] = "literal", + ["any"] = "literal", + ["ask"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_st.lua b/debian/extra/plugins/language_st.lua new file mode 100644 index 0000000..f679193 --- /dev/null +++ b/debian/extra/plugins/language_st.lua @@ -0,0 +1,125 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +-- Language Syntax References +-- https://pdhonline.com/courses/e334/e334content.pdf + +syntax.add { + name = "PLC Structured Text IEC 61131-3", + files = { "%.stx?$", "%.iecst$" }, + comment = "//", + block_comment = { "%(%*", "%*%)" }, + patterns = { + { pattern = "//.*", type = "comment" }, -- Single-line comment + { pattern = { "%(%*", "%*%)" }, type = "comment" }, -- Multi-line comment + { pattern = { '"', '"', '\\' }, type = "string" }, -- String, quotation marks + { pattern = { "'", "'", '\\' }, type = "string" }, -- String, apices + { pattern = "%w+#[0-9]+m?s?", type = "number" }, -- Time/Date formats + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- Function + { pattern = "[%a_][%w_]*", type = "symbol" }, -- Symbols + { pattern = ":%s*%w[%w_]*", type = "keyword2" }, -- Variable/Method Type + { regex = [[[-+]?\d+\.{2,4}[-+]?\d+]], type = "number" }, -- Number Range + { pattern = "[%+%-=/%*%^%%<>!~|&:]", type = "operator" }, -- Operators + { pattern = "-?0x%x+", type = "number" }, -- Number + { pattern = "-?%d+[%deE]*f?", type = "number" }, -- Number + { pattern = "-?%.?%d+f?", type = "number" }, -- Number + }, + symbols = { + ["PROGRAM"] = "keyword", + ["PROGRAM_INIT"] = "keyword", + ["PROGRAM_CYCLIC"] = "keyword", + + ["PROGRAM_CLOSE"] = "keyword", + ["END_PROGRAM"] = "keyword", + ["FUNCTION_BLOCK"] = "keyword", + ["END_FUNCTION_BLOCK"] = "keyword", + ["FUNCTION"] = "keyword", + ["END_FUNCTION"] = "keyword", + ["METHOD"] = "keyword", + ["END_METHOD"] = "keyword", + ["IMPLEMENTATION"] = "keyword", + ["END_IMPLEMENTATION"] = "keyword", + ["INTERFACE"] = "keyword", + ["END_INTERFACE"] = "keyword", + + ["IF"] = "keyword", + ["THEN"] = "keyword", + ["ELSE"] = "keyword", + ["ELSIF"] = "keyword", + ["END_IF"] = "keyword", + ["CASE"] = "keyword", + ["END_CASE"] = "keyword", + ["OF"] = "keyword", + ["FOR"] = "keyword", + ["TO"] = "keyword", + ["BY"] = "keyword", + ["DO"] = "keyword", + ["END_FOR"] = "keyword", + ["WHILE"] = "keyword", + ["END_WHILE"] = "keyword", + ["REPEAT"] = "keyword", + ["END_REPEAT"] = "keyword", + + ["MOD"] = "operator", + ["UNTIL"] = "operator", + ["EXIT"] = "keyword", + ["RETURN"] = "keyword", + + ["AND"] = "keyword", + ["NOT"] = "keyword", + ["OR"] = "keyword", + ["XOR"] = "keyword", + + ["NAMESPACE"] = "keyword", + ["END_NAMESPACE"] = "keyword", + + ["VAR"] = "keyword", + ["VAR_GLOBAL"] = "keyword", + ["VAR_INPUT"] = "keyword", + ["VAR_OUTPUT"] = "keyword", + ["VAR_IN_OUT"] = "keyword", + ["VAR_ACCESS"] = "keyword", + ["VAR_EXTERNAL"] = "keyword", + ["VAR_TEMP"] = "keyword", + ["AT"] = "keyword", + ["RETAIN"] = "keyword", + ["END_VAR"] = "keyword", + ["CONST"] = "keyword", + ["END_CONST"] = "keyword", + + ["TYPE"] = "keyword", + ["END_TYPE"] = "keyword", + ["STRUCT"] = "keyword", + ["END_STRUCT"] = "keyword", + + ["ORGANIZATION_BLOCK"] = "keyword", + ["END_ORGANIZATION_BLOCK"] = "keyword", + + ["TRUE"] = "literal", + ["FALSE"] = "literal", + ["true"] = "literal", + ["false"] = "literal", + + ["SINT"] = "keyword2", + ["INT"] = "keyword2", + ["DINT"] = "keyword2", + ["LINT"] = "keyword2", + ["USINT"] = "keyword2", + ["UINT"] = "keyword2", + ["UDINT"] = "keyword2", + ["ULINT"] = "keyword2", + ["LDINT"] = "keyword2", + ["REAL"] = "keyword2", + ["LREAL"] = "keyword2", + ["TIME"] = "keyword2", + ["DATE"] = "keyword2", + ["TIME_OF_DAY"] = "keyword2", + ["DATE_AND_TIME"] = "keyword2", + ["STRING"] = "keyword2", + ["BOOL"] = "keyword2", + ["BYTE"] = "keyword2", + ["WORD"] = "keyword2", + ["DWORD"] = "keyword2", + ["LWORD"] = "keyword2", + } +} diff --git a/debian/extra/plugins/language_starlark.lua b/debian/extra/plugins/language_starlark.lua new file mode 100644 index 0000000..8ab4899 --- /dev/null +++ b/debian/extra/plugins/language_starlark.lua @@ -0,0 +1,101 @@ +--- Author: Rohan Vashisht: https://github.com/rohanvashisht1234/ +-- mod-version:3 +------------ IMPORT LIB ------------ +local syntax_highlight = require("core.syntax") +------------------------------------ + +------------- DATABASE ------------- + +---- SYMBOLS ---- +local SYMBOLS = {} + +local KEYWORDS = { + "break", + "continue", + "elif", + "else", + "for", + "if", + "pass", + "return", + "True", + "False" +} + +local KEYWORDS2 = { + "as", + "assert", + "class", + "del", + "except", + "finally", + "from", + "global", + "import", + "in", + "is", + "lambda", + "nonlocal", + "raise", + "try", + "while", + "with", + "yield" +} + +local LITERALS = { + "all", + "any", + "bool", + "dict", + "dir", + "enumerate", + "getattr", + "hasattr", + "hash", + "int", + "len", + "list", + "load", + "max", + "min", + "repr", + "reversed", + "sorted", + "str", + "tuple", + "type", + "zip" +} +----------------- + +---- PATTERNS ---- +local PATTERNS = { + { pattern = { '"', '"', '\\' }, type = "string" }, -- tested ok + { pattern = "#.*", type = "comment" }, -- tested ok + { pattern = "[!%-/*?:=><]", type = "operator" }, -- tested ok + { pattern = "-?%d+[%d%.eE_]*", type = "number" }, -- tested ok + { pattern = '[%a_][%w_]*%f[(]', type = 'function' }, -- tested ok + { pattern = "[%a_][%w_]*", type = "normal" } -- tested ok +} +------------------ +------------------------------------ + +--------------- MAIN --------------- +for _, keyword in ipairs(KEYWORDS) do + SYMBOLS[keyword] = "keyword" +end +for _, keyword2 in ipairs(KEYWORDS2) do + SYMBOLS[keyword2] = "keyword2" +end +for _, literal in ipairs(LITERALS) do + SYMBOLS[literal] = "literal" +end +syntax_highlight.add { + name = "Starlark", + files = {"%.bazel$","%.bzl$"}, + comment = "#", + patterns = PATTERNS, + symbols = SYMBOLS, +} +------------------------------------ diff --git a/debian/extra/plugins/language_swift.lua b/debian/extra/plugins/language_swift.lua new file mode 100644 index 0000000..b428899 --- /dev/null +++ b/debian/extra/plugins/language_swift.lua @@ -0,0 +1,149 @@ +-- Author: Rohan Vashisht: https://github.com/rohanvashisht1234/ + + +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Swift", + files = { "%.swift$" }, + comment = "//", + patterns = { + { pattern = { '"', '"', '\\' }, type = "string" }, -- tested ok + { pattern = { '"""', '"""', '\\' }, type = "string" }, -- tested ok + { pattern = { '#"', '"#', '\\' }, type = "string" }, -- tested ok + { pattern = { '#"""', '"""#', '\\' }, type = "string" }, -- tested ok + { pattern = "//.*", type = "comment" }, -- tested ok + { pattern = { "/%*", "%*/" }, type = "comment" }, -- tested ok + { pattern = "[!%-/*?:=><+]", type = "operator" }, -- tested ok + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, -- tested ok + { pattern = "let()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "var()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "import()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "struct()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "class()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + { pattern = "enum()%s+()[%a_][%w_]*", type = { "keyword", "normal", "literal" } }, -- tested ok + + { pattern = "-?%d+[%d%.eE_]*", type = "number" }, -- tested ok + { pattern = "-?%.?%d+", type = "number" }, -- tested ok + { pattern = "[%a_][%w_]*", type = "normal" }, -- tested ok + }, + symbols = { + ["import"] = "keyword", -- tested ok + ["inout"] = "keyword", -- tested ok + ["internal"] = "keyword", -- tested ok + ["let"] = "keyword", -- tested ok + ["Let"] = "keyword", -- tested ok + ["open"] = "keyword", -- tested ok + ["operator"] = "keyword", -- tested ok + ["private"] = "keyword", -- tested ok + ["precedencegroup"] = "keyword", -- tested ok + ["protocol"] = "keyword", -- tested ok + ["public"] = "keyword", -- tested ok + ["rethrows"] = "keyword", -- tested ok + ["static"] = "keyword", -- tested ok + ["struct"] = "keyword", -- tested ok + ["subscript"] = "keyword", -- tested ok + ["typealias"] = "keyword", -- tested ok + ["var"] = "keyword", -- tested ok + ["break"] = "keyword", -- tested ok + ["while"] = "keyword", -- tested ok + ["nil"] = "keyword", -- tested ok + ["associativity"] = "keyword", -- tested ok + ["convenience"] = "keyword", -- tested ok + ["didSet"] = "keyword", -- tested ok + ["dynamic"] = "keyword", -- tested ok + ["final"] = "keyword", -- tested ok + ["get"] = "keyword", -- tested ok + ["indirect"] = "keyword", -- tested ok + ["infix"] = "keyword", -- tested ok + ["left"] = "keyword", -- tested ok + ["mutating"] = "keyword", -- tested ok + ["none"] = "keyword", -- tested ok + ["nonmutating"] = "keyword", -- tested ok + ["optional"] = "keyword", -- tested ok + ["override"] = "keyword", -- tested ok + ["postfix"] = "keyword", -- tested ok + ["Protocol"] = "keyword", -- tested ok + ["required"] = "keyword", -- tested ok + ["right"] = "keyword", -- tested ok + ["set"] = "keyword", -- tested ok + ["some"] = "keyword", -- tested ok + ["Type"] = "keyword", -- tested ok + ["unowned"] = "keyword", -- tested ok + ["weak"] = "keyword", -- tested ok + ["lazy"] = "keyword", -- tested ok + ["prefix"] = "keyword", -- tested ok + ["willSet"] = "keyword", -- tested ok + ["try"] = "keyword", -- tested ok + ["true"] = "keyword", -- tested ok + ["throws"] = "keyword", -- tested ok + ["super"] = "keyword", -- tested ok + ["Self"] = "keyword", -- tested ok + ["self"] = "keyword", -- tested ok + ["is"] = "keyword", -- tested ok + ["false"] = "keyword", -- tested ok + ["as"] = "keyword", -- tested ok + ["Any"] = "keyword", -- tested ok + ["where"] = "keyword", -- tested ok + ["switch"] = "keyword", -- tested ok + ["throw"] = "keyword", -- tested ok + ["catch"] = "keyword", -- tested ok + ["return"] = "keyword", -- tested ok + ["repeat"] = "keyword", -- tested ok + ["in"] = "keyword", -- tested ok + ["if"] = "keyword", -- tested ok + ["gaurd"] = "keyword", -- tested ok + ["for"] = "keyword", -- tested ok + ["fallthrough"] = "keyword", -- tested ok + ["else"] = "keyword", -- tested ok + ["do"] = "keyword", -- tested ok + ["defer"] = "keyword", -- tested ok + ["default"] = "keyword", -- tested ok + ["continue"] = "keyword", -- tested ok + ["case"] = "keyword", -- tested ok + ["init"] = "keyword", -- tested ok + ["func"] = "keyword", -- tested ok + ["fileprivate"] = "keyword", -- tested ok + ["extension"] = "keyword", -- tested ok + ["associatedtype"] = "keyword", -- tested ok + ["enum"] = "keyword", -- tested ok + ["Init"] = "keyword", -- tested ok + ["Enum"] = "keyword", -- tested ok + ["deinit"] = "keyword", -- tested ok + ["class"] = "keyword", -- tested ok + ["Class"] = "keyword", -- tested ok + ["precedence"] = "keyword", -- tested ok + + ["#available"] = "keyword2", -- tested ok + ["#colorLiteral"] = "keyword2", -- tested ok + ["#column"] = "keyword2", -- tested ok + ["#dsohandle"] = "keyword2", -- tested ok + ["#elseif"] = "keyword2", -- tested ok + ["#else"] = "keyword2", -- tested ok + ["#endif"] = "keyword2", -- tested ok + ["#error"] = "keyword2", -- tested ok + ["#keyPath"] = "keyword2", -- tested ok + ["#line"] = "keyword2", -- tested ok + ["#selector"] = "keyword2", -- tested ok + ["#sourceLocation"] = "keyword2", -- tested ok + ["#warning"] = "keyword2", -- tested ok + ["_COLUMN_"] = "keyword2", -- tested ok + ["_FILE_"] = "keyword2", -- tested ok + ["_FUNCTION_"] = "keyword2", -- tested ok + ["_LINE_"] = "keyword2", -- tested ok + ["String"] = "keyword2", -- tested ok + ["Int"] = "keyword2", -- tested ok + ["Int8"] = "keyword2", -- tested ok + ["Int16"] = "keyword2", -- tested ok + ["Int32"] = "keyword2", -- tested ok + ["Int64"] = "keyword2", -- tested ok + ["UInt8"] = "keyword2", -- tested ok + ["UInt16"] = "keyword2", -- tested ok + ["UInt32"] = "keyword2", -- tested ok + ["UInt64"] = "keyword2", -- tested ok + ["Float"] = "keyword2", -- tested ok + ["Bool"] = "keyword2", -- tested ok + ["at"] = "keyword2", -- tested ok + } +} diff --git a/debian/extra/plugins/language_tal.lua b/debian/extra/plugins/language_tal.lua new file mode 100644 index 0000000..aef83cd --- /dev/null +++ b/debian/extra/plugins/language_tal.lua @@ -0,0 +1,70 @@ +--mod-version:3 +local syntax = require 'core.syntax' + +local label, sublabel = "function", "keyword2" + +syntax.add { + name = "Uxntal", + files = { "%.tal$" }, + block_comment = { '(', ')' }, + patterns = { + { pattern = {'%(', '%)'}, type = "comment" }, + { pattern = "@%S*%s+%f[[]", type = label }, + { pattern = "@%S+", type = "string" }, + { pattern = "%u+()[2kr]*", type = { "symbol", "keyword" } }, + { pattern = "%%%S+", type = "keyword" }, + { pattern = "&%S+", type = sublabel }, + { pattern = "\"%S+", type = "string" }, + { pattern = "%.%S+()/%S*", type = { label, sublabel } }, + { pattern = "%.%S+", type = label }, + { pattern = "|%x+", type = "string" }, + { pattern = "[.,;_=-]%S+", type = sublabel }, + { pattern = "%$%d+", type = "number" }, + { pattern = "#?%x%x%x%x%f[%X]", type = "number" }, + { pattern = "#?%x%x%f[%X]", type = "number" }, + { pattern = "[!?]()[^%[%]{}%s]+", type = { "operator", "function" } }, + { pattern = "[^%[%]{}%s]+", type = "function" }, + }, + symbols = { + -- no mode keywords + ["JCI"] = "keyword", + ["JMI"] = "keyword", + ["JSI"] = "keyword", + ["BRK"] = "keyword", + + -- lit only has 4 modes + ["LIT"] = "keyword", + + -- the rest + ["EQU"] = "keyword", + ["LDZ"] = "keyword", + ["ADD"] = "keyword", + ["INC"] = "keyword", + ["NEQ"] = "keyword", + ["STZ"] = "keyword", + ["SUB"] = "keyword", + ["POP"] = "keyword", + ["GTH"] = "keyword", + ["LDR"] = "keyword", + ["MUL"] = "keyword", + ["NIP"] = "keyword", + ["LTH"] = "keyword", + ["STR"] = "keyword", + ["DIV"] = "keyword", + ["SWP"] = "keyword", + ["JMP"] = "keyword", + ["LDA"] = "keyword", + ["AND"] = "keyword", + ["ROT"] = "keyword", + ["JCN"] = "keyword", + ["STA"] = "keyword", + ["ORA"] = "keyword", + ["DUP"] = "keyword", + ["JSR"] = "keyword", + ["DEI"] = "keyword", + ["EOR"] = "keyword", + ["OVR"] = "keyword", + ["STH"] = "keyword", + ["DEO"] = "keyword", + ["SFT"] = "keyword", + }} diff --git a/debian/extra/plugins/language_tau.lua b/debian/extra/plugins/language_tau.lua new file mode 100644 index 0000000..765ee36 --- /dev/null +++ b/debian/extra/plugins/language_tau.lua @@ -0,0 +1,95 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Tau", + files = { "%.tau$" }, + comment = "#", + patterns = { + { pattern = { '{', '}' }, type = "operator", syntax = ".tau" }, + -- funtion declaration + { + pattern = { '%.?()[%a_][%w_]*()%s*=%s*()fn()%(', '%)%s*' }, + type = { "operator", "function", "operator", "keyword", "normal" }, + syntax = { + patterns = { + { pattern = '[%a_][%w_]*', type = "literal" }, + }, + symbols = { + [','] = "normal", + }, + }, + }, + -- strings + { pattern = { "`", "`" }, type = "string" }, + { pattern = { '\\"', '\\"' }, type = "string" }, + { + pattern = { '"', '"', '\\' }, + type = "string", + syntax = { + -- TODO: formatted strings has still some issues with inner {} blocks like if { .. } else { ... } and escaped \"strings\" + patterns = { + { pattern = { '{', '}' }, type = "operator", syntax = ".tau" }, + { pattern = '[^%s"]+', type = "string" }, + }, + symbols = {}, + }, + }, + + -- numbers and values + { pattern = "0b[01]{0,64}", type = "number" }, + { pattern = "0o[0-7]{0,24}", type = "number" }, + { pattern = "0x[%da-fA-F]{0,16}", type = "number" }, + { pattern = "-?%d{0,20}", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + + -- others + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "%.?()[%a_][%w_]*%f[(]", type = { "operator", "function" } }, + { pattern = "%.()[%a_][%w_]*", type = { "operator", "literal" } }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + -- actual keywords + ["if"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["tau"] = "keyword", + ["fn"] = "keyword", + ["return"] = "keyword", + + -- literal values + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + + -- builtin functions + ["new"] = "keyword2", + ["len"] = "keyword2", + ["println"] = "keyword2", + ["print"] = "keyword2", + ["input"] = "keyword2", + ["string"] = "keyword2", + ["error"] = "keyword2", + ["type"] = "keyword2", + ["int"] = "keyword2", + ["float"] = "keyword2", + ["exit"] = "keyword2", + ["append"] = "keyword2", + ["newfailed"] = "keyword2", + ["plugin"] = "keyword2", + ["pipesend"] = "keyword2", + ["recv"] = "keyword2", + ["close"] = "keyword2", + ["hex"] = "keyword2", + ["oct"] = "keyword2", + ["bin"] = "keyword2", + ["slice"] = "keyword2", + ["keys"] = "keyword2", + ["delete"] = "keyword2" + }, +} + diff --git a/debian/extra/plugins/language_tcl.lua b/debian/extra/plugins/language_tcl.lua new file mode 100644 index 0000000..7a6e13f --- /dev/null +++ b/debian/extra/plugins/language_tcl.lua @@ -0,0 +1,69 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Tcl", + files = { "%.tcl$" }, + comment = "#", + patterns = { + { pattern = "#.-\n", type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d+[%d%.eE]*f?", type = "number" }, + { pattern = "%.?%d+f?", type = "number" }, + { pattern = "%$[%a_][%w_]*", type = "literal" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "::[%a_][%w_]*", type = "function" }, + { pattern = "[%a_][%w_]*%f[:]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["set"] = "keyword", + ["unset"] = "keyword", + ["rename"] = "keyword", + ["upvar"] = "keyword", + ["incr"] = "keyword", + ["source"] = "keyword", + ["expr"] = "keyword", + ["gets"] = "keyword", + ["puts"] = "keyword", + ["package"] = "keyword", + ["list"] = "keyword", + ["dict"] = "keyword", + ["split"] = "join", + ["concat"] = "join", + ["lappend"] = "keyword", + ["lset"] = "keyword", + ["lassign"] = "keyword", + ["lindex"] = "keyword", + ["llength"] = "keyword", + ["lsearch"] = "keyword", + ["lrange"] = "keyword", + ["linsert"] = "keyword", + ["lreplace"] = "keyword", + ["lrepeat"] = "keyword", + ["lsort"] = "keyword", + ["lreverse"] = "keyword", + ["array"] = "keyword", + ["concat"] = "keyword", + ["regexp"] = "keyword", + ["for"] = "keyword", + ["foreach"] = "keyword", + ["while"] = "keyword", + ["case"] = "keyword", + ["proc"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["eval"] = "keyword", + ["try"] = "keyword2", + ["on"] = "keyword2", + ["finally"] = "keyword2", + ["throw"] = "keyword2", + ["error"] = "keyword2", + }, +} + diff --git a/debian/extra/plugins/language_teal.lua b/debian/extra/plugins/language_teal.lua new file mode 100644 index 0000000..0b0e35d --- /dev/null +++ b/debian/extra/plugins/language_teal.lua @@ -0,0 +1,57 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Teal", + files = {"%.tl$","%.d.tl$"}, + comment = "--", + patterns = { + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "%[%[", "%]%]" }, type = "string" }, + { pattern = { "%-%-%[%[", "%]%]"}, type = "comment" }, + { pattern = "%-%-.-\n", type = "comment" }, + { pattern = "-?0x%x+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "<%a+>", type = "keyword2" }, + { pattern = "%.%.%.?", type = "operator" }, + { pattern = "[<>~=]=", type = "operator" }, + { pattern = "[%+%-=/%*%^%%#<>]", type = "operator" }, + { pattern = "[%a_][%w_]*%s*%f[(\"{]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "::[%a_][%w_]*::", type = "function" }, + }, + symbols = { + ["if"] = "keyword", + ["then"] = "keyword", + ["else"] = "keyword", + ["elseif"] = "keyword", + ["end"] = "keyword", + ["do"] = "keyword", + ["function"] = "keyword", + ["repeat"] = "keyword", + ["until"] = "keyword", + ["while"] = "keyword", + ["for"] = "keyword", + ["break"] = "keyword", + ["return"] = "keyword", + ["local"] = "keyword", + ["global"] = "keyword", + ["in"] = "keyword", + ["not"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["goto"] = "keyword", + ["enum"] = "keyword", + ["record"] = "keyword", + ["any"] = "keyword2", + ["boolean"] = "keyword2", + ["number"] = "keyword2", + ["string"] = "keyword2", + ["thread"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["nil"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_tex.lua b/debian/extra/plugins/language_tex.lua new file mode 100644 index 0000000..f8e69e2 --- /dev/null +++ b/debian/extra/plugins/language_tex.lua @@ -0,0 +1,27 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "TeX", + files = { "%.tex$", "%.dtx$", "%.sty$", "%.ins$", "%.cls$" }, + comment = "%%", + patterns = { + { pattern = "%%.-\n", type = "comment" }, + { pattern = "\\documentclass().-{()%a%w+()}", type = {"keyword", "symbol", "function", "symbol"} }, + { pattern = "\\usepackage", type = "keyword" }, + { pattern = "\\chapter", type = "keyword" }, + { pattern = "\\section", type = "keyword" }, + { pattern = "\\subsection", type = "keyword" }, + { pattern = "\\paragraph", type = "keyword" }, + { pattern = "\\subparagraph", type = "keyword" }, + { pattern = "\\begin(){()%a%w+()}", type = {"keyword2", "symbol", "function", "symbol"} }, + { pattern = "\\end(){()%a%w+()}", type = {"keyword2", "symbol", "function", "symbol"} }, + { pattern = "\\%a%w+()%*", type = {"keyword2", "operator"} }, + { pattern = "\\%a%w+", type = "keyword2" }, + { pattern = "&", type = "operator" }, + { pattern = "\\\\", type = "operator" }, + { pattern = "%$", type = "operator" }, + { pattern = "\\[%[%]()]", type = "operator" }, + }, + symbols = {} +} diff --git a/debian/extra/plugins/language_toml.lua b/debian/extra/plugins/language_toml.lua new file mode 100644 index 0000000..eb3a2d7 --- /dev/null +++ b/debian/extra/plugins/language_toml.lua @@ -0,0 +1,40 @@ +-- mod-version:3 + +local syntax = require "core.syntax" + +syntax.add { + name = "TOML", + files = { "%.toml$" }, + comment = '#', + + patterns = { + { pattern = "#.*", type = "comment" }, + + { pattern = { '"""', '"""', '\\' }, type = "string" }, + { pattern = { "'''", "'''" }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'" }, type = "string" }, + + { pattern = "[%w_%.%-]+%s*%f[=]", type = "function" }, + + { pattern = {"^%s*%[", "%]"}, type = "keyword" }, + + { pattern = "0x[%x_]+", type = "number" }, + { pattern = "0o[0-7_]+", type = "number" }, + { pattern = "0b[01_]+", type = "number" }, + { pattern = "%d[%d_]*%.?[%d_]*[eE][%-+]?[%d_]+", type = "number" }, + { pattern = "%d[%d_]*%.?[$d_]*", type = "number" }, + { pattern = "%f[-+%w_][-+]%f[%w%.]", type = "number" }, + + { pattern = "[%+%-:TZ]", type = "operator" }, + { pattern = "%a+", type = "symbol" }, + }, + + symbols = { + ["true"] = "literal", + ["false"] = "literal", + + ["nan"] = "number", + ["inf"] = "number" + }, +} diff --git a/debian/extra/plugins/language_ts.lua b/debian/extra/plugins/language_ts.lua new file mode 100644 index 0000000..f28261d --- /dev/null +++ b/debian/extra/plugins/language_ts.lua @@ -0,0 +1,74 @@ +-- mod-version:3 +-- copied from language_js, but added regex highlighting back +local syntax = require "core.syntax" + +syntax.add { + name = "TypeScript", + files = { "%.ts$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '/%g', '/', '\\' }, type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "`", "`", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "interface%s()[%a_][%w_]*", type = {"keyword", "keyword2"} }, + { pattern = "type%s()[%a_][%w_]*", type = {"keyword", "keyword2"} }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["async"] = "keyword", + ["await"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["class"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["debugger"] = "keyword", + ["default"] = "keyword", + ["delete"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["export"] = "keyword", + ["extends"] = "keyword", + ["finally"] = "keyword", + ["for"] = "keyword", + ["function"] = "keyword", + ["get"] = "keyword", + ["if"] = "keyword", + ["import"] = "keyword", + ["implements"] = "keyword", + ["in"] = "keyword", + ["instanceof"] = "keyword", + ["let"] = "keyword", + ["new"] = "keyword", + ["return"] = "keyword", + ["set"] = "keyword", + ["static"] = "keyword", + ["super"] = "keyword", + ["switch"] = "keyword", + ["throw"] = "keyword", + ["try"] = "keyword", + ["typeof"] = "keyword", + ["var"] = "keyword", + ["void"] = "keyword", + ["while"] = "keyword", + ["with"] = "keyword", + ["yield"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["undefined"] = "literal", + ["arguments"] = "keyword2", + ["Infinity"] = "keyword2", + ["NaN"] = "keyword2", + ["this"] = "keyword2", + }, +} diff --git a/debian/extra/plugins/language_tsx.lua b/debian/extra/plugins/language_tsx.lua new file mode 100644 index 0000000..f6073ab --- /dev/null +++ b/debian/extra/plugins/language_tsx.lua @@ -0,0 +1,75 @@ +-- mod-version:3 +-- Almost identical to JS, with the exception that / shouldn't denote a regex. +-- Current JS syntax highlighter will highlight half the document due to closing tags. +local syntax = require "core.syntax" + +syntax.add { + name = "TypeScript with JSX", + files = { "%.tsx$", "%.astro$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "`", "`", '\\' }, type = "string" }, + { pattern = "0x[%da-fA-F]+", type = "number" }, + { pattern = "-?%d+[%d%.eE]*", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&]", type = "operator" }, + { pattern = "interface%s()[%a_][%w_]*", type = {"keyword", "keyword2"} }, + { pattern = "type%s()[%a_][%w_]*", type = {"keyword", "keyword2"} }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["async"] = "keyword", + ["await"] = "keyword", + ["break"] = "keyword", + ["case"] = "keyword", + ["catch"] = "keyword", + ["class"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["debugger"] = "keyword", + ["default"] = "keyword", + ["delete"] = "keyword", + ["do"] = "keyword", + ["else"] = "keyword", + ["export"] = "keyword", + ["extends"] = "keyword", + ["finally"] = "keyword", + ["for"] = "keyword", + ["function"] = "keyword", + ["get"] = "keyword", + ["if"] = "keyword", + ["import"] = "keyword", + ["implements"] = "keyword", + ["in"] = "keyword", + ["instanceof"] = "keyword", + ["let"] = "keyword", + ["new"] = "keyword", + ["return"] = "keyword", + ["set"] = "keyword", + ["static"] = "keyword", + ["super"] = "keyword", + ["switch"] = "keyword", + ["throw"] = "keyword", + ["try"] = "keyword", + ["typeof"] = "keyword", + ["var"] = "keyword", + ["void"] = "keyword", + ["while"] = "keyword", + ["with"] = "keyword", + ["yield"] = "keyword", + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["undefined"] = "literal", + ["arguments"] = "keyword2", + ["Infinity"] = "keyword2", + ["NaN"] = "keyword2", + ["this"] = "keyword2", + }, +} diff --git a/debian/extra/plugins/language_typst.lua b/debian/extra/plugins/language_typst.lua new file mode 100644 index 0000000..77b9701 --- /dev/null +++ b/debian/extra/plugins/language_typst.lua @@ -0,0 +1,231 @@ +-- mod-version:3 +local syntax = require "core.syntax" + + +local typst_math = { + + patterns = { + + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = "//.*", type = "comment" }, + + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "#%a+", type = "literal" }, + { pattern = "%a+%f[(]", type = "function" }, + { pattern = "%a%a+", type = "function" }, + + + { pattern = "0x[%dabcdef]+", type = "number" }, + { pattern = "0b[01]+", type = "number" }, + { pattern = "0o[01234567]+", type = "number" }, + { pattern = "%d+[.e]%d+", type = "number" }, + { pattern = "%d", type = "number" }, + + { pattern = "&", type = "literal" }, + { pattern = "!=", type = "operator" }, + { pattern = "[%+%-=/%*%^%%<>~|_^\\]", type = "operator" }, + { pattern = "%a%a+", type = "symbol" }, + + }, + + symbols = { + ["alpha"] = "keyword2", + ["beta"] = "keyword2", + ["gamma"] = "keyword2", + ["delta"] = "keyword2", + ["epsilon"] = "keyword2", + ["zeta"] = "keyword2", + ["eta"] = "keyword2", + ["theta"] = "keyword2", + ["iota"] = "keyword2", + ["kappa"] = "keyword2", + ["lambda"] = "keyword2", + ["mu"] = "keyword2", + ["nu"] = "keyword2", + ["xi"] = "keyword2", + ["omicron"] = "keyword2", + ["pi"] = "keyword2", + ["rho"] = "keyword2", + ["sigma"] = "keyword2", + ["tau"] = "keyword2", + ["upsilon"] = "keyword2", + ["phi"] = "keyword2", + ["chi"] = "keyword2", + ["psi"] = "keyword2", + ["omega"] = "keyword2", + + ["Alpha"] = "keyword2", + ["Beta"] = "keyword2", + ["Gamma"] = "keyword2", + ["Delta"] = "keyword2", + ["Epsilon"] = "keyword2", + ["Zeta"] = "keyword2", + ["Eta"] = "keyword2", + ["Theta"] = "keyword2", + ["Iota"] = "keyword2", + ["Kappa"] = "keyword2", + ["Lambda"] = "keyword2", + ["Mu"] = "keyword2", + ["Nu"] = "keyword2", + ["Xi"] = "keyword2", + ["Omicron"] = "keyword2", + ["Pi"] = "keyword2", + ["Rho"] = "keyword2", + ["Sigma"] = "keyword2", + ["Tau"] = "keyword2", + ["Upsilon"] = "keyword2", + ["Phi"] = "keyword2", + ["Chi"] = "keyword2", + ["Psi"] = "keyword2", + ["Omega"] = "keyword2", + } +} + +-- there was a bug where the string highlighting did not work properly +-- (probably becuase the tokenizer prioritizes subsyntaxes over clasic start-end patterns) +-- so in order to fix this issue, I had to create this extra sub-syntax. +local typst_string = { + + patterns = { + { pattern = "\\.", type = "string" }, + { pattern = '[^"\\]+', type = "string" } + }, + + symbols = {} +} + + +local typst_script = { + + patterns = { + + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = "//.*", type = "comment" }, + + { pattern = { '"', '"', '\\' }, type = "string", syntax = typst_string }, + { pattern = {"%[", "%]"}, type = "normal", syntax = ".typ" }, + { pattern = "[%a_][%w_%-]*%f[(]", type = "function" }, + { pattern = "[%+%-=/%*%^%%<>~|&_^\\]", type = "operator" }, + { pattern = "%f[^#][%a_]+", type = "literal" }, + { pattern = "#", type = "literal" }, + + { pattern = "0x[%dabcdef]+()%a*", type = {"number", "keyword2"} }, + { pattern = "0b[01]+()%a*", type = {"number", "keyword2"} }, + { pattern = "0o[01234567]+()%a*", type = {"number", "keyword2"} }, + { pattern = "%d+[.e]%d+()%a*", type = {"number", "keyword2"} }, + { pattern = "%d+()%a*", type = {"number", "keyword2"} }, + + { pattern = "%a%a+", type = "symbol" }, + + }, + + + symbols = { + ["set"] = "keyword", + ["let"] = "keyword", + ["show"] = "keyword", + ["include"] = "keyword", + ["import"] = "keyword", + ["context"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["in"] = "keyword", + ["while"] = "keyword", + ["break"] = "keyword", + ["continue"] = "keyword", + ["return"] = "keyword", + ["as"] = "keyword", + ["or"] = "keyword", + ["and"] = "keyword", + ["not"] = "keyword", + + ["true"] = "literal", + ["false"] = "literal", + } +} + +table.insert(typst_script.patterns, 1, { pattern = { "%(", "%)" }, syntax = typst_script }) +table.insert(typst_script.patterns, 1, { pattern = { "{", "}" }, syntax = typst_script }) + + + +local typst_syntax = { + name = "Typst", + files = { "%.typ$" }, + comment = "//", + block_comment = { "/*", "*/" }, + + patterns = { + { pattern = { "%[", "%]" }, syntax = ".typ" }, + { + pattern = { "#()import", "\n" }, + type = { "literal", "keyword" }, + syntax = typst_script + }, + { + pattern = { "#()include", "\n" }, + type = { "literal", "keyword" }, + syntax = typst_script + }, + { + pattern = { "#()set", "\n" }, + type = { "literal", "keyword" }, + syntax = typst_script + }, + { + pattern = { "#()let", "\n" }, + type = { "literal", "keyword" }, + syntax = typst_script + }, + { + pattern = { "#()show", "\n" }, + type = { "literal", "keyword" }, + syntax = typst_script + }, + { + pattern = { "#()context", "\n" }, + type = { "literal", "keyword" }, + syntax = typst_script + }, + + { pattern = { "%f[#]", "%f[%s']"}, type = "literal", syntax = typst_script }, + { pattern = { "%$", "%$", "\\" }, type = "literal", syntax = typst_math }, + + { pattern = { "```js" , "```", "\\" }, type = "string", syntax = ".js" }, + { pattern = { "```py", "```", "\\" }, type = "string", syntax = ".py" }, + { pattern = { "```rust", "```", "\\" }, type = "string", syntax = ".rs" }, + { pattern = { "```c", "```", "\\" }, type = "string", syntax = ".c" }, + -- Possibility to add more syntax later + { pattern = { "`", "`", "\\" }, type = "string" }, + + { pattern = { "<", ">" }, type = "string" }, + { pattern = { "@", "%s" }, type = "string" }, + + { pattern = "//.*", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + + --{ pattern = {"link"}, type = "typst_underline" }, -- add underline text later + + -- Finish later + { pattern = "^%s*=+%s.+%f[\n]", type = "keyword" }, -- Bold + { pattern = {"%*_", "_%*"}, type = "keyword" }, -- Bold Italic + { pattern = {"_%*", "%*_"}, type = "keyword" }, -- Bold Italic + { pattern = {"_", "_"}, type = "keyword" }, -- Italic + { pattern = {"%*", "%*"}, type = "keyword2" }, -- Bold + + { pattern = "[%+%-\\/]", type = "operator" }, + { pattern = "\\[nrt]", type = "string" }, + { pattern = "\\u%b{}", type = "string" }, + { pattern = "\\.", type = "normal" }, + + }, + + symbols = {} +} + + + + + +syntax.add(typst_syntax) diff --git a/debian/extra/plugins/language_umka.lua b/debian/extra/plugins/language_umka.lua new file mode 100644 index 0000000..3575753 --- /dev/null +++ b/debian/extra/plugins/language_umka.lua @@ -0,0 +1,67 @@ +-- mod-version:3 +local syntax = require 'core.syntax' + +syntax.add { + name = "Umka", + files = { "%.um$" }, + comment = "//", + block_comment = { "/*", "*/" }, + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d+%.?%d*[Ee]%-?%d+", type = "number" }, + { pattern = "%d+%.?%d*", type = "number" }, + { pattern = {'"', '"', '\\'}, type = "string" }, + { pattern = {"'", "'", '\\'}, type = "string" }, + + { pattern = ":=", type = "operator" }, + { pattern = "%.%.", type = "operator" }, + { pattern = "[%^%+%-%*/%%&|~<>!=]", type = "operator" }, + { pattern = "[%a_][%w_]*()%*?()%s*%f[%(]", type = {"function", "operator", "normal"} }, + { pattern = "%u[%w_]*", type = "literal" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + }, + symbols = { + ["break"] = "keyword", + ["case"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["default"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["fn"] = "keyword", + ["import"] = "keyword", + ["interface"] = "keyword", + ["if"] = "keyword", + ["in"] = "keyword", + ["map"] = "keyword", + ["return"] = "keyword", + ["str"] = "keyword", + ["struct"] = "keyword", + ["switch"] = "keyword", + ["type"] = "keyword", + ["var"] = "keyword", + ["weak"] = "keyword", + + -- types + ["void"] = "keyword2", + ["int8"] = "keyword2", + ["int16"] = "keyword2", + ["int32"] = "keyword2", + ["int"] = "keyword2", + ["uint8"] = "keyword2", + ["uint16"] = "keyword2", + ["uint32"] = "keyword2", + ["uint"] = "keyword2", + ["real32"] = "keyword2", + ["real"] = "keyword2", + ["bool"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["char"] = "keyword2", + ["fiber"] = "keyword2", + ["any"] = "keyword2", + ["null"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_v.lua b/debian/extra/plugins/language_v.lua new file mode 100644 index 0000000..d5b9764 --- /dev/null +++ b/debian/extra/plugins/language_v.lua @@ -0,0 +1,95 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "V", + files = { "%.v$", "%.vsh$" }, + headers = "^#!.*[ /]v\n", + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = { "`", "`", '\\' }, type = "string" }, + { pattern = { "r'", "'" }, type = "string" }, -- raw string single quotes + { pattern = { 'r"', '"' }, type = "string" }, -- raw string double quotes + { pattern = "0x[%da-fA-F_]+", type = "number" }, + { pattern = "0b[01_]+", type = "number" }, + { pattern = "00[01234567_]+", type = "number" }, + { pattern = "-?%.?%d+", type = "number" }, + { pattern = "[%a_][%w_]*%f[(]", type = "function" }, + { pattern = "[%+%-%*%/%%%~%&%|%^%!%=]", type = "operator" }, + { pattern = "%:%=", type = "operator" }, + { pattern = "%.%.%.?", type = "operator" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "%$%s?[%a_][%w_]*", type = "keyword2" }, + { pattern = "%@%s?[%a_][%w_]*", type = "keyword2" }, + }, + symbols = { + ["as"] = "keyword", + ["asm"] = "keyword", + ["assert"] = "keyword", + ["atomic"] = "keyword", + ["break"] = "keyword", + ["const"] = "keyword", + ["continue"] = "keyword", + ["defer"] = "keyword", + ["else"] = "keyword", + ["enum"] = "keyword", + ["fn"] = "keyword", + ["for"] = "keyword", + ["go"] = "keyword", + ["goto"] = "keyword", + ["if"] = "keyword", + ["import"] = "keyword", + ["in"] = "keyword", + ["interface"] = "keyword", + ["is"] = "keyword", + ["isreftype"] = "keyword", + ["lock"] = "keyword", + ["match"] = "keyword", + ["module"] = "keyword", + ["mut"] = "keyword", + ["or"] = "keyword", + ["pub"] = "keyword", + ["return"] = "keyword", + ["rlock"] = "keyword", + ["select"] = "keyword", + ["shared"] = "keyword", + ["sizeof"] = "keyword", + ["static"] = "keyword", + ["struct"] = "keyword", + ["type"] = "keyword", + ["typeof"] = "keyword", + ["union"] = "keyword", + ["unsafe"] = "keyword", + ["__offsetof"] = "keyword", + + ["bool"] = "keyword2", + ["i8"] = "keyword2", + ["i16"] = "keyword2", + ["int"] = "keyword2", + ["i64"] = "keyword2", + ["i128"] = "keyword2", + ["u8"] = "keyword2", + ["u16"] = "keyword2", + ["u32"] = "keyword2", + ["u64"] = "keyword2", + ["u128"] = "keyword2", + ["f32"] = "keyword2", + ["f64"] = "keyword2", + ["byte"] = "keyword2", + ["char"] = "keyword2", + ["rune"] = "keyword2", + ["chan"] = "keyword2", + ["string"] = "keyword2", + ["map"] = "keyword2", + ["voidptr"] = "keyword2", + ["thread"] = "keyword2", + + ["true"] = "literal", + ["false"] = "literal", + ["none"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_wren.lua b/debian/extra/plugins/language_wren.lua new file mode 100644 index 0000000..35b8b8a --- /dev/null +++ b/debian/extra/plugins/language_wren.lua @@ -0,0 +1,52 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Wren", + files = { "%.wren$" }, + comment = "//", + block_comment = {"/*", "*/"}, + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = { "/%*", "%*/" }, type = "comment" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = "%d+%.%d+[Ee]%d+", type = "number" }, + { pattern = "%d+%.%d+", type = "number" }, + { pattern = "%d+[Ee]%d+", type = "number" }, + { pattern = "0x%x+", type = "number" }, + { pattern = "%d+", type = "number" }, + { pattern = "%.%.%.?", type = "operator" }, + { pattern = "[<>!=]=", type = "operator" }, + { pattern = "|[^|]+|%s+", type = "string" }, + { pattern = "[%+%-=/%*%^%%<>!~|&?:]", type = "operator" }, + { pattern = "_[%w_]*", type = "keyword2" }, + { regex = [[\bFn.new\b]], type = "literal" }, + { pattern = "#!?%a[%w_]*%s*%(?[%w _,\"=]*%)?", type = "comment" }, + { pattern = "%a[%w_]*()%s+()is()%s+%a[%w_]*%s*%f[{]", type = {"function", "normal", "keyword", "normal"}}, + { pattern = "%a[%w_]*%s*=()%s*%f[(]", type = {"function", "normal"} }, + { pattern = "%a[%w_]*()%s*%f[({]", type = {"function", "normal"} }, + { pattern = "%a[%w_]+", type = "symbol" }, + }, + symbols = { + ["break"] = "keyword", + ["class"] = "keyword", + ["construct"] = "keyword", + ["continue"] = "keyword", + ["else"] = "keyword", + ["for"] = "keyword", + ["foreign"] = "keyword", + ["if"] = "keyword", + ["import"] = "keyword", + ["in"] = "keyword", + ["is"] = "keyword", + ["return"] = "keyword", + ["static"] = "keyword", + ["super"] = "keyword", + ["var"] = "keyword", + ["while"] = "keyword", + ["this"] = "keyword2", + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + }, +} diff --git a/debian/extra/plugins/language_yaml.lua b/debian/extra/plugins/language_yaml.lua new file mode 100644 index 0000000..8b7f634 --- /dev/null +++ b/debian/extra/plugins/language_yaml.lua @@ -0,0 +1,154 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +local yaml_bracket_list = { + patterns = { + -- comments + { pattern = { "#", "\n"}, type = "comment" }, + -- strings + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + -- keys + { + pattern = "[%w%d]+%g+()%s*():()%s", + type = { "keyword2", "normal", "operator", "normal" } + }, + -- variables + { pattern = "%$%a%w+", type = "keyword" }, + { pattern = "%$%{%{.-%}%}", type = "keyword" }, + -- numeric place holders + { pattern = "%-?%.inf", type = "number" }, + { pattern = "%.NaN", type = "number" }, + -- numbers + { pattern = "[%+%-]?0%d+", type = "number" }, + { pattern = "[%+%-]?0x%x+", type = "number" }, + { pattern = "[%+%-]?%d+[,%.eE:%+%d]*%d+", type = "number" }, + { pattern = "[%+%-]?%d+", type = "number" }, + -- others + { pattern = ",", type = "operator" }, + { pattern = "%w+", type = "string" }, + { + pattern = "[_%(%)%*@~`!%%%^&=%+%-\\;%.><%?/%s]+", + type = "string" + } + }, + symbols = {} +} + +syntax.add { + name = "YAML", + files = { "%.yml$", "%.yaml$" }, + comment = "#", + space_handling = false, + patterns = { + --- rules that start with spaces first and those taking precedence + -- parent and child keys + { + pattern = "^[%w%d]+%g+%s*%f[:]", + type = "literal" + }, + { + pattern = "^%s+[%w%d]+%g+%s*%f[:]", + type = "keyword2" + }, + -- bracket lists after key declaration + { + pattern = { ":%s+%[", "%]" }, + syntax = yaml_bracket_list, type = "operator" + }, + { + pattern = { ":%s+{", "}" }, + syntax = yaml_bracket_list, type = "operator" + }, + -- child key + { + pattern = "^%s+()[%w%d]+%g+()%s*():()%s", + type = { "normal", "keyword2", "normal", "operator", "normal" } + }, + -- child list element + { + pattern = "^%s+()%-()%s+()[%w%d]+%g+()%s*():()%s", + type = { "normal", "operator", "normal", "keyword2", "normal", "operator", "normal" } + }, + -- unkeyed bracket lists + { + pattern = { "^%s*%[", "%]" }, + syntax = yaml_bracket_list, type = "operator" + }, + { + pattern = { "^%s*{", "}" }, + syntax = yaml_bracket_list, type = "operator" + }, + { + pattern = { "^%s*%-%s*%[", "%]" }, + syntax = yaml_bracket_list, type = "operator" + }, + { + pattern = { "^%s*%-%s*{", "}" }, + syntax = yaml_bracket_list, type = "operator" + }, + -- rule to optimize space handling + { pattern = "%s+", type = "normal" }, + --- all the other rules + -- comments + { pattern = { "#", "\n"}, type = "comment" }, + -- strings + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + -- extra bracket lists rules on explicit type + { + pattern = { "!!%w+%s+%[", "%]"}, + syntax = yaml_bracket_list, type = "operator" + }, + { + pattern = { "!!%w+%s+{", "}"}, + syntax = yaml_bracket_list, type = "operator" + }, + -- numeric place holders + { pattern = "%-?%.inf", type = "number" }, + { pattern = "%.NaN", type = "number" }, + -- parent list element + { + pattern = "^%-()%s+()[%w%d]+%g+()%s*():()%s", + type = { "operator", "normal", "keyword2", "normal", "operator", "normal" } + }, + -- key label + { + pattern = "%&()%g+", + type = { "keyword", "literal" } + }, + -- key elements expansion + { pattern = "<<", type = "literal" }, + { + pattern = "%*()[%w%d_]+", + type = { "keyword", "literal" } + }, + -- explicit data types + { pattern = "!!%g+", type = "keyword" }, + -- parent key + { + pattern = "^[%w%d]+%g+()%s*():()%s", + type = { "literal", "normal", "operator", "normal" } + }, + -- variables + { pattern = "%$%a%w+", type = "keyword" }, + { pattern = "%$%{%{.-%}%}", type = "keyword" }, + -- numbers + { pattern = "[%+%-]?0%d+", type = "number" }, + { pattern = "[%+%-]?0x%x+", type = "number" }, + { pattern = "[%+%-]?%d+[,%.eE:%+%d]*%d+", type = "number" }, + { pattern = "[%+%-]?%d+", type = "number" }, + -- special operators + { pattern = "[%*%|%!>%%]", type = "keyword" }, + { pattern = "[%-%$:%?]+", type = "operator" }, + -- Everything else as a string + { pattern = "[%d%a_][%g_]*", type = "string" }, + { pattern = "%p+", type = "string" } + }, + symbols = { + ["true"] = "number", + ["false"] = "number", + ["y"] = "number", + ["n"] = "number" + } +} diff --git a/debian/extra/plugins/language_zig.lua b/debian/extra/plugins/language_zig.lua new file mode 100644 index 0000000..37a8fc4 --- /dev/null +++ b/debian/extra/plugins/language_zig.lua @@ -0,0 +1,118 @@ +-- mod-version:3 +local syntax = require "core.syntax" + +syntax.add { + name = "Zig", + files = { "%.zig$" }, + comment = "//", + patterns = { + { pattern = "//.-\n", type = "comment" }, + { pattern = "\\\\.-\n", type = "string" }, + { pattern = { '"', '"', '\\' }, type = "string" }, + { pattern = { "'", "'", '\\' }, type = "string" }, + { pattern = "[iu][%d_]+", type = "keyword2" }, + { pattern = "0b[01_]+", type = "number" }, + { pattern = "0o[0-7_]+", type = "number" }, + { pattern = "0x[%x_]+", type = "number" }, + { pattern = "0x[%x_]+%.[%x_]*[pP][-+]?%d+", type = "number" }, + { pattern = "0x[%x_]+%.[%x_]*", type = "number" }, + { pattern = "0x%.[%x_]+[pP][-+]?%d+", type = "number" }, + { pattern = "0x%.[%x_]+", type = "number" }, + { pattern = "0x[%x_]+[pP][-+]?%d+", type = "number" }, + { pattern = "0x[%x_]+", type = "number" }, + { pattern = "%d[%d_]*%.[%d_]*[eE][-+]?%d+", type = "number" }, + { pattern = "%d[%d_]*%.[%d_]*", type = "number" }, + { pattern = "%d[%d_]*", type = "number" }, + { pattern = "[%+%-=/%*%^%%<>!~|&%.%?]", type = "operator" }, + { pattern = "[%a_][%w_]*()%s*%(", type = {"function", "normal"} }, + { pattern = "[A-Z][%w_]*", type = "keyword2" }, + { pattern = "[%a_][%w_]*", type = "symbol" }, + { pattern = "@()[%a_][%w_]*", type = {"operator", "function"} }, + }, + symbols = { + ["fn"] = "keyword", + ["asm"] = "keyword", + ["volatile"] = "keyword", + ["continue"] = "keyword", + ["break"] = "keyword", + ["switch"] = "keyword", + ["for"] = "keyword", + ["while"] = "keyword", + ["var"] = "keyword", + ["anytype"] = "keyword", + ["anyframe"] = "keyword", + ["const"] = "keyword", + ["test"] = "keyword", + ["packed"] = "keyword", + ["extern"] = "keyword", + ["export"] = "keyword", + ["pub"] = "keyword", + ["defer"] = "keyword", + ["errdefer"] = "keyword", + ["align"] = "keyword", + ["usingnamespace"] = "keyword", + ["noasync"] = "keyword", + ["async"] = "keyword", + ["await"] = "keyword", + ["cancel"] = "keyword", + ["suspend"] = "keyword", + ["resume"] = "keyword", + ["threadlocal"] = "keyword", + ["linksection"] = "keyword", + ["callconv"] = "keyword", + ["try"] = "keyword", + ["catch"] = "keyword", + ["orelse"] = "keyword", + ["unreachable"] = "keyword", + ["error"] = "keyword", + ["if"] = "keyword", + ["else"] = "keyword", + ["return"] = "keyword", + ["comptime"] = "keyword", + ["stdcallcc"] = "keyword", + ["ccc"] = "keyword", + ["nakedcc"] = "keyword", + ["and"] = "keyword", + ["or"] = "keyword", + ["struct"] = "keyword", + ["enum"] = "keyword", + ["union"] = "keyword", + ["opaque"] = "keyword", + ["inline"] = "keyword", + ["allowzero"] = "keyword", + ["noalias"] = "keyword", + ["nosuspend"] = "keyword", + + -- types + ["f16"] = "keyword2", + ["f32"] = "keyword2", + ["f64"] = "keyword2", + ["f80"] = "keyword2", + ["f128"] = "keyword2", + ["void"] = "keyword2", + ["c_void"] = "keyword2", + ["isize"] = "keyword2", + ["usize"] = "keyword2", + ["c_short"] = "keyword2", + ["c_ushort"] = "keyword2", + ["c_int"] = "keyword2", + ["c_uint"] = "keyword2", + ["c_long"] = "keyword2", + ["c_ulong"] = "keyword2", + ["c_longlong"] = "keyword2", + ["c_ulonglong"] = "keyword2", + ["c_longdouble"] = "keyword2", + ["bool"] = "keyword2", + + ["noreturn"] = "keyword2", + ["type"] = "keyword2", + ["anyerror"] = "keyword2", + ["comptime_int"] = "keyword2", + ["comptime_float"] = "keyword2", + + ["true"] = "literal", + ["false"] = "literal", + ["null"] = "literal", + ["undefined"] = "literal", + }, +} diff --git a/debian/extra/plugins/lsp/LICENSE b/debian/extra/plugins/lsp/LICENSE new file mode 100644 index 0000000..d9692b8 --- /dev/null +++ b/debian/extra/plugins/lsp/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2021-2023 Jefferson González +Copyright (c) 2023-present Lite XL team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/debian/extra/plugins/lsp/README.md b/debian/extra/plugins/lsp/README.md new file mode 100644 index 0000000..387811a --- /dev/null +++ b/debian/extra/plugins/lsp/README.md @@ -0,0 +1,271 @@ +# LSP Plugin for Lite XL editor + +Plugin that provides intellisense for Lite XL by leveraging the [LSP protocol] +While still a work in progress it already implements all the most important +features to make your life easier while coding with Lite XL. Using it +requires __Lite XL v2.1+__ (for __Lite XL v2.0.1__ to __Lite XL v2.0.5__ +check out the __0.1__ branch). [lint+] is optionally used to render +diagnostic messages while you type so make sure to get it. Also, the +[snippets] plugin is used to properly process the received autocompletions +in the form of snippets, so grab that too. + +To use, clone this project into the __lsp__ directory in your plugins +folder. Finally you will need the [Widgets] lib so make sure to also drop +it into your lite-xl configs directory. For example: + +```sh +cd ~/.config/lite-xl/ +git clone https://github.com/lite-xl/lite-xl-lsp plugins/lsp +git clone https://github.com/lite-xl/lite-xl-widgets libraries/widget +git clone https://github.com/liquidev/lintplus plugins/lintplus +wget https://raw.githubusercontent.com/vqns/lite-xl-snippets/main/snippets.lua \ + -O plugins/snippets.lua +wget https://raw.githubusercontent.com/vqns/lite-xl-snippets/main/lsp_snippets.lua \ + -O plugins/lsp_snippets.lua +``` + +The lite-xl configs directory should have: + +* ~/.config/lite-xl/libraries/widget/ +* ~/.config/lite-xl/plugins/lsp/ +* ~/.config/lite-xl/plugins/lintplus/ +* ~/.config/lite-xl/plugins/snippets.lua +* ~/.config/lite-xl/plugins/lsp_snippets.lua + +## Features + +Stuff that is currently implemented: + +* Code auto completion (**ctrl+space**) +* Function signatures tooltip (**ctrl+shift+space**) +* Current cursor symbol details tooltip on mouse hover or shortcut (**alt+a**) +* Goto definition (**alt+d**) +* Goto implementation (**alt+shift+d**) +* View/jump to current document symbols (**alt+s**) +* Find workspace symbols (**alt+shift+s**) +* View/jump to symbol references (**alt+f**) +* View/jump to document diagnostic messages (**alt+e**) +* Document format (**alt+shift+f**) +* Optional diagnostics rendering while typing with [lint+] + (**alt+shift+e** to toggle) +* List all documents with diagnostics (**ctrl+alt+e**) +* Snippets processing using the [snippets] plugin + +## Setting a LSP Server + +The easiest method of setting up a lsp server is by using the __[config.lua]__ +file shipped with the lsp plugin which already contains a list of predefined +servers (notice: not all of them have been tested to work). Require this file +on your users **init.lua**, call `setup()` on the desired lsp servers or +overwrite the configuration options of the defined lsp servers if needed +as shown below: + +__Examples:__ + +```lua +local lspconfig = require "plugins.lsp.config" + +-- Activate clangd without overwriting any settings for c/c++ +-- autocompletion (requires a compile_commands.json file on +-- your project directory usually generated by build tools +-- like cmake or meson) +-- See: https://clangd.llvm.org/installation.html#project-setup +lspconfig.clangd.setup() + +-- Activate gopls +lspconfig.gopls.setup() + +-- Activate the lua-language-server, set the server command and +-- modify the default settings in order to disable diagnostics. +lspconfig.sumneko_lua.setup { + command = { + "/path/to/lua-language-server/bin/Linux/lua-language-server", + "-E", + "/path/to/lua-language-server/main.lua" + }, + settings = { + Lua = { + diagnostics = { + enable = false + } + } + } +} + +-- Activate intelephense and pass additional initializationOptions +-- like the license key and storage path. +lspconfig.intelephense.setup { + init_options = { + licenceKey = "MYLICENSEKEY", + storagePath = "/home/myuser/.cache/intelephense" + } +} +``` + +If your preferred LSP server is not listed on the config.lua file feel free +to submit a __pull request__ with the addition! + +## Manually Configuring a LSP Server + +Besides the __[config.lua]__ method, you can fully define an lsp server in +your user init.lua file. You would need to require the lsp plugin and use the +**add_server** function as shown on the following example: + +```lua +local lsp = require "plugins.lsp" + +lsp.add_server { + -- Name of server + name = "intelephense", + -- Main language + language = "PHP", + -- If the server supports multiple languages: + -- language = { + -- { id = "javascript", pattern = "%.js$" }, + -- { id = "typescript", pattern = "%.ts$" }, + -- } + -- If no pattern matches, the file extension is used instead. + -- File types that are supported by this server + file_patterns = { "%.php$" }, + -- LSP command and optional arguments + command = { "intelephense", "--stdio" }, + -- Optional table of settings to pass into the lsp + -- Note that also having a settings.json or settings.lua in + -- your workspace directory with a table of settings is supported. + settings = { + intelephense = { + files = { + exclude = { + "**/.git/**" + } + } + } + }, + -- Optional table of initializationOptions for the LSP + init_options = { + storagePath = "/home/myuser/.cache/intelephense" + }, + -- Set by default to 16 should only be modified if having issues with a server + requests_per_second = 16, + -- Some servers like bash language server support incremental changes + -- which are more performant but don't advertise it, set to true to force + -- incremental changes even if server doesn't advertise them. + incremental_changes = false, + -- True to debug the lsp client when developing it + verbose = false +} +``` + +## LSP Plugin Settings + +Configuration options that can be used to control the plugin behaviour: + +```lua +---Show a symbol hover information when mouse cursor is on top. +---@type boolean +config.plugins.lsp.mouse_hover = true + +---The amount of time in milliseconds before showing the tooltip. +---@type integer +config.plugins.lsp.mouse_hover_delay = 300 + +---Show diagnostic messages +---@type boolean +config.plugins.lsp.show_diagnostics = true + +---Stop servers that aren't needed by any of the open files +---@type boolean +config.plugins.lsp.stop_unneeded_servers = true + +---Set to a file path to log all json +---@type string +config.plugins.lsp.log_file = "" + +---Setting to true prettyfies json for more readability on the log +---but this setting will impact performance so only enable it when +---in need of easy to read json output when developing the plugin. +---@type boolean +config.plugins.lsp.prettify_json = false + +---Send a server stderr output to lite log +---@type boolean +config.plugins.lsp.log_server_stderr = false + +---Force verbosity off even if a server is configured with verbosity on +---@type boolean +config.plugins.lsp.force_verbosity_off = false + +---Yield when reading from LSP which may give you better UI responsiveness +---when receiving large responses, but will affect LSP performance. +---@type boolean +config.plugins.lsp.more_yielding = false +``` + +## TODO + +- [ ] Properly handle multiple opened project directories +- [ ] Handle window/showMessage, window/showMessageRequest, + $/progress, telemetry/event +- [x] Be able to search workspace symbols 'workspace/symbol' +- [ ] Completion preselectSupport (needs autocomplete plugin change) +- [ ] Add symbol renaming support 'textDocument/rename' +- [x] Add Snippets support (this will need a whole standalone [snippets] plugin). +- [x] Fix issues when parsing stdout from some lsp servers (really fixed?). +- [x] More improvements to autocomplete.lua plugin + - [x] Detect view edges and render to the most visible side + - [x] Description box, detect view width and expand accordingly + - [ ] Support for pre-selected item + - [ ] Be able to use a custom sorting field. +- [x] Add hover support for function arguments + - [x] Add custom tooltip that accents active parameter and signature +- [x] Figure out how to get an autocompletion item full documentation with +'completionItem/resolve' or any other in order to better populate +the new autocomplete item description +- [x] (we kill it) Detect if lsp server hangs and restart it (eg: clangd) +- [x] Exit LSP server if no open document needs it. +- [x] Add hover support for symbols +- [x] Generate list of current document symbols for easy document navigation +- [x] Goto definition + - [x] Display select box when more than one result +- [x] Show diagnostics on active document similar to the linter plugin. +- [x] Send incremental changes on textDocument/didChange notification + since sending the whole document content on big files is slow and bad. + + +## Screenshots + +Some images to easily visualize the progress :) + +### Completion +![Completion](screenshots/completion01.png) + +![Completion](screenshots/completion02.png) + +![Completion](screenshots/completion03.png) + +![Completion](screenshots/completion04.png) + +### Symbol hover +![Hover](screenshots/hover01.png) + +![Hover](screenshots/hover02.png) + +### Function signatures +![Signature](screenshots/signatures01.png) + +### Document symbols +![Doc Symbols](screenshots/docsym01.png) +![Doc Symbols](screenshots/docsym02.png) + +### Goto definition +![Goto Definition](screenshots/gotodef01.png) + +### Diagnostics rendering using Lint+ +![Diagnostics](screenshots/diagnostics01.png) + + +[LSP protocol]: https://microsoft.github.io/language-server-protocol/specifications/specification-current/ +[lint+]: https://github.com/liquidev/lintplus +[snippets]: https://github.com/vqns/lite-xl-snippets +[Widgets]: https://github.com/lite-xl/lite-xl-widgets +[config.lua]: config.lua diff --git a/debian/extra/plugins/lsp/config.lua b/debian/extra/plugins/lsp/config.lua new file mode 100644 index 0000000..8ab6e05 --- /dev/null +++ b/debian/extra/plugins/lsp/config.lua @@ -0,0 +1,1031 @@ +-- +-- A list of servers. +-- +-- Can be used by doing a 'local lspconfig = require "plugins.lsp.config"' +-- on your user init.lua, for more details check the README.md +-- +-- Servers taken from: +-- https://github.com/prabirshrestha/vim-lsp/wiki/Servers +-- https://github.com/mattn/vim-lsp-settings/tree/master/settings +-- + +local lsp = require "plugins.lsp" +local util = require "plugins.lsp.util" +local config = require "core.config" +local snippets = pcall(require, "plugins.snippets") and config.plugins.lsp.snippets + +---Options that can be passed to a LSP server to overwrite the defaults. +---@class lsp.config.options +--- +---Name of server. +---@field name string +---Main language, eg: C. +---Can be a string or a table. +---If the table is empty, the file extension will be used instead. +---The table should be an array of tables containing `id` and `pattern`. +---The `pattern` will be matched with the file path. +---Will use the `id` of the first `pattern` that matches. +---If no pattern matches, the file extension will be used instead. +---@field language string | lsp.server.languagematch[] +---File types that are supported by this server. +---@field file_patterns string[] +---LSP command and optional arguments. +---@field command table +---On Windows, avoid running the LSP server with cmd.exe. +---@field windows_skip_cmd? boolean +---Enviroment variables to set for the server command. +---@field env? table +---Seconds before closing the server when not needed anymore. +---@field quit_timeout? number +---Optional table of settings to pass into the LSP. +---Note that also having a settings.json or settings.lua in +---your workspace directory with a table of settings is supported. +---@field settings? table +---Optional table of initializationOptions for the LSP. +---@field init_options? table +---Optional table of capabilities that will be merged with our default one. +---@field custom_capabilities? table +---Function called when the server has been started. +---@field on_start? fun(server: lsp.server) +---Set by default to 16 should only be modified if having issues with a server. +---@field requests_per_second? integer +---Some servers like bash language server support incremental changes +---which are more performant but don't advertise it, set to true to force +---incremental changes even if server doesn't advertise them. +---@field incremental_changes? boolean +---Set to true to debug the lsp client when developing it. +---@field verbose? boolean + +---@class lsp.config.server +---Register the lsp server for usage. +---@field setup fun(options?:lsp.config.options) +---Get the default lsp server options. +---@field get_options fun():lsp.config.options + +---Helper to register a language server. +---@param options lsp.config.options +---@return lsp.config.server +local function add_lsp(options) + return { + setup = function(user_options) + local merged_options = util.deep_merge(options, user_options) + lsp.add_server(merged_options) + end, + get_options = function() + return options + end + } +end + +---List of predefined language servers that can be easily enabled at runtime. +---@class lsp.config +local lspconfig = {} + +-- NOTE: as of 15/05/2025, the LSP-server-specific naming conventions used here are described in https://github.com/neovim/nvim-lspconfig/blob/ac1dfbe3b60e5e23a2cff90e3bd6a3bc88031a57/CONTRIBUTING.md#walkthrough:~:text=When%20choosing%20a,(jsonnet_ls). + +---# Bash - bash_ls +--- __Status__: Works +--- __Site__: https://github.com/bash-lsp/bash-language-server +--- __Installation__: https://github.com/bash-lsp/bash-language-server?tab=readme-ov-file#installation +lspconfig.bash_ls = add_lsp { + name = "bash_ls", + language = "shellscript", + file_patterns = { "%.sh$" }, + command = { "bash-language-server", "start" }, + incremental_changes = true, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.bashls = lspconfig.bash_ls + +---# C/C++ - ccls +--- __Status__: Works +--- __Site__: https://github.com/MaskRay/ccls/ +--- __Installation__: https://github.com/MaskRay/ccls/wiki/Install +lspconfig.ccls = add_lsp { + name = "ccls", + language = { + { id = "c", pattern = "%.[ch]$" }, + { id = "cpp", pattern = "%.[ch]pp$" }, + { id = "cpp", pattern = "%.[CH]$" }, + { id = "cpp", pattern = "%.[ch]%+%+$" }, + }, + file_patterns = { + "%.c$", "%.h$", "%.inl$", "%.cpp$", "%.hpp$", + "%.cc$", "%.C$", "%.cxx$", "%.c++$", "%.hh$", + "%.H$", "%.hxx$", "%.h++$", "%.objc$", "%.objcpp$" + }, + command = { "ccls" }, + verbose = false +} + +---# C/C++ - clangd +--- __Status__: Works +--- __Site__: https://clangd.llvm.org/ +--- __Installation__: install the clang software package on your system +--- __Note__: See https://clangd.llvm.org/installation.html#project-setup +lspconfig.clangd = add_lsp { + name = "clangd", + language = { + { id = "c", pattern = "%.[ch]$" }, + { id = "cpp", pattern = "%.[ch]pp$" }, + { id = "cpp", pattern = "%.[CH]$" }, + { id = "cpp", pattern = "%.[ch]%+%+$" }, + }, + file_patterns = { + "%.c$", "%.h$", "%.inl$", "%.cpp$", "%.hpp$", + "%.cc$", "%.C$", "%.cxx$", "%.c++$", "%.hh$", + "%.H$", "%.hxx$", "%.h++$", "%.objc$", "%.objcpp$" + }, + command = { "clangd", "-background-index" }, + verbose = false +} + +---# Clojure - clojure_lsp +--- __Status__: Works +--- __Site__: https://clojure-lsp.github.io/ +--- __Installation__: https://clojure-lsp.github.io/clojure-lsp/installation/ +lspconfig.clojure_lsp = add_lsp { + name = "clojure_lsp", + language = "clojure", + file_patterns = { "%.clj$", "%.cljs$", "%.clc$", "%.edn$" }, + command = { "clojure-lsp" }, + verbose = false +} + +---# Crystal - crystalline +--- __Status__: Works +--- __Site__: https://github.com/elbywan/crystalline +--- __Installation__: https://github.com/elbywan/crystalline?tab=readme-ov-file#installation +lspconfig.crystalline = add_lsp { + name = "crystalline", + language = "crystal", + file_patterns = { "%.cr$" }, + command = { "crystalline", "--stdio" }, + verbose = false +} + +---# CSS - vscode_css_ls +--- __Status__: Works +--- __Site__: https://github.com/vscode-langservers/vscode-css-languageserver-bin +--- __Installation__: https://github.com/vscode-langservers/vscode-css-languageserver-bin?tab=readme-ov-file#installing +lspconfig.vscode_css_ls = add_lsp { + name = "vscode_css_ls", + language = "css", + file_patterns = { "%.css$", "%.less$", "%.sass$" }, + command = { + { + 'vscode-css-languageserver', + 'vscode-css-language-server', + 'css-languageserver' + }, + '--stdio' + }, + fake_snippets = true, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.cssls = lspconfig.vscode_css_ls + +---# C# - omnisharp +--- __Status__: Works, but freezes on large projects (https://github.com/ppy/osu.git) +--- __Site__: https://github.com/OmniSharp/omnisharp-roslyn +--- __Installation__: https://github.com/OmniSharp/omnisharp-roslyn?tab=readme-ov-file#downloading-omnisharp +lspconfig.omnisharp = add_lsp { + name = "omnisharp", + language = "csharp", + file_patterns = { "%.cs$" }, + command = { "omnisharp", "-lsp" }, + verbose = false +} + +---# D - serve_d +--- __Status__: Works +--- __Site__: https://github.com/Pure-D/serve-d +--- __Installation__: https://github.com/Pure-D/serve-d?tab=readme-ov-file#installation +lspconfig.serve_d = add_lsp { + name = "serve_d", + language = "d", + file_patterns = { "%.di?$" }, + command = { "serve-d" }, + verbose = false +} + +---# Dart - dartls +--- __Status__: Works +--- __Site__: https://github.com/dart-lang/sdk +--- __Installation__: Provided by dart sdk +lspconfig.dartls = add_lsp { + name = "dartls", + language = "dart", + file_patterns = { "%.dart$" }, + command = { "dart", "language-server", "--protocol=lsp" }, + verbose = false +} + +---# Deno - deno_ls +--- __Status__: Works +--- __Site__: https://deno.land/manual/advanced/language_server +--- __Installation__: Provided in Deno runtime +lspconfig.deno_ls = add_lsp { + name = "deno_ls", + language = { + { id = "javascript", pattern = "%.js$" }, + { id = "javascriptreact", pattern = "%.jsx$" }, + { id = "typescript", pattern = "%.ts$" }, + { id = "typescriptreact", pattern = "%.tsx$" }, + }, + file_patterns = { "%.[tj]s$", "%.[tj]sx$" }, + command = { "deno", "lsp" }, + verbose = false, + settings = { + deno = { + enable = true, + unstable = true, + config = "./deno.json", + importMap = "./import_map.json", + lint = true, + codeLens = { + implementations = true, + references = true, + test = true, + referencesAllFunctions = true + }, + suggest = { + names = true, + paths = true, + completeFunctionCalls = true, + imports = { + autoDiscover = true, + hosts = { + ["https://deno.land/"] = true, + ["https://nest.land/"] = true, + ["https://crux.land/"] = true + } + }, + autoImports = true + } + } + } +} +-- NOTE: for retro-compatibility +lspconfig.deno = lspconfig.deno_ls + +---# Dockerfile - dockerfile_ls_nodejs +--- __Status__: Untested +--- __Site__: https://github.com/rcjsuen/dockerfile-language-server-nodejs +--- __Installation__: https://github.com/rcjsuen/dockerfile-language-server?tab=readme-ov-file#installation-instructions +lspconfig.dockerfile_ls_nodejs = add_lsp { + name = "dockerfile_ls_nodejs", + language = "dockerfile", + file_patterns = { "Dockerfile$" }, + command = { "docker-langserver", "--stdio" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.dockerls = lspconfig.dockerfile_ls_nodejs + +---# Elixir - elixir_ls +--- __Status__: Works +--- __Site__: https://github.com/elixir-lsp/elixir-ls +--- __Installation__: https://github.com/elixir-lsp/elixir-ls?tab=readme-ov-file#detailed-installation-instructions +lspconfig.elixir_ls = add_lsp { + name = "elixir_ls", + language = "elixir", + file_patterns = { "%.ex$", "%.exs$" }, + command = { "elixir-ls" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.elixirls = lspconfig.elixir_ls + +---# Elm - elm_ls +--- __Status__: Works +--- __Site__: https://github.com/elm-tooling/elm-language-server +--- __Installation__: https://github.com/elm-tooling/elm-language-server?tab=readme-ov-file#installation +lspconfig.elm_ls = add_lsp { + name = "elm_ls", + language = "elm", + file_patterns = { "%.elm$" }, + command = { "elm-language-server" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.elmls = lspconfig.elm_ls + +---# Erlang - erlang_ls +--- __Status__: Works +--- __Site__: https://github.com/erlang-ls/erlang_ls +--- __Installation__: https://github.com/erlang-ls/erlang_ls?tab=readme-ov-file#quickstart +lspconfig.erlang_ls = add_lsp { + name = "erlang_ls", + language = "erlang", + file_patterns = { "%.erl$", "%.hrl$" }, + command = { "Erlang", "LS", "-t", "stdio" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.erlangls = lspconfig.erlang_ls + +---# Fennel - fennel_ls +--- __Status__: Works +--- __Site__: https://git.sr.ht/~xerool/fennel-ls +--- __Installation__: https://git.sr.ht/~xerool/fennel-ls/tree/main/docs/manual.md#installation +lspconfig.fennel_ls = add_lsp { + name = "fennel_ls", + language = "fennel", + file_patterns = { "%.fnl$" }, + command = { "fennel-ls" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.fennells = lspconfig.fennel_ls + +---# Fortran - fort_ls +--- __Status__: Works +--- __Site__: https://fortls.fortran-lang.org/index.html +--- __Installation__: https://fortls.fortran-lang.org/quickstart.html +lspconfig.fort_ls = add_lsp { + name = "fort_ls", + language = "fortran", + file_patterns = { "%.f$", "%.f90$", "%.f95$", "%.F$" }, + command = { "fortls", "--notify_init" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.fortls = lspconfig.fort_ls + +---# Gleam - gleam_ls +--- __Status__: Works (the gleam lsp itself acts kinda weird) +--- __Site__: https://gleam.run/ +--- __Installation__: Included with the gleam compiler binary +lspconfig.gleam_ls = add_lsp { + name = "gleam_ls", + language = "gleam", + file_patterns = { "%.gleam$" }, + command = { "gleam", "lsp" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.gleam = lspconfig.gleam_ls + +---# glsl - glsl_analyzer +--- __Status__: Works +--- __Site__: https://github.com/nolanderc/glsl_analyzer +--- __Installation__: https://github.com/nolanderc/glsl_analyzer?tab=readme-ov-file#installation +lspconfig.glsl_analyzer = add_lsp { + name = "glsl_analyzer", + language = "glsl", + file_patterns = { "%.glsl$" }, + command = { "glsl_analyzer" }, + verbose = false +} + +---# Go - gopls +--- __Status__: Works +--- __Site__: https://pkg.go.dev/golang.org/x/tools/gopls +--- __Installation__: https://pkg.go.dev/golang.org/x/tools/gopls#readme-installation +lspconfig.gopls = add_lsp { + name = "gopls", + language = "go", + file_patterns = { "%.go$" }, + command = { "gopls" }, + verbose = false +} + +---# Groovy - groovy_ls +--- __Status__: Untested +--- __Site__: https://github.com/prominic/groovy-language-server +--- __Installation__: either install from your OS's package manager or build from source +--- __Note__: how to build from source: https://github.com/GroovyLanguageServer/groovy-language-server?tab=readme-ov-file#build +lspconfig.groovy_ls = add_lsp { + name = "groovy_ls", + language = "groovy", + file_patterns = { "%.groovy$", "%.gvy$", "%.gy$", "%.gsh$" }, + -- command = { "java", "-jar", "/path/to/groovy-language-server-all.jar" }, + command = { "groovy-language-server" }, + verbose = false +} + +---# Haskell - haskell_ls +--- __Status__: Untested +--- __Site__: https://github.com/haskell/haskell-language-server +--- __Installation__: https://haskell-language-server.readthedocs.io/en/latest/installation.html +lspconfig.haskell_ls = add_lsp { + name = "haskell_ls", + language = "haskell", + file_patterns = { "%.hs$", "%.lhs$" }, + command = { "haskell-language-server-wrapper", "--lsp" }, + verbose = false +} + +---# HTML - vscode_html_ls +--- __Status__: Works +--- __Site__: https://github.com/vscode-langservers/vscode-html-languageserver-bin +--- __Installation__: https://github.com/vscode-langservers/vscode-html-languageserver-bin?tab=readme-ov-file#installing +lspconfig.vscode_html_ls = add_lsp { + name = "vscode_html_ls", + language = "html", + file_patterns = { "%.html$" }, + command = { + { + 'vscode-html-languageserver', + 'vscode-html-language-server', + 'html-languageserver' + }, + '--stdio' + }, + verbose = false +} + +---# Java - jdtls +--- __Status__: Works +--- __Site__: https://github.com/eclipse/eclipse.jdt.ls +--- __Installation__: https://github.com/eclipse-jdtls/eclipse.jdt.ls?tab=readme-ov-file#installation +lspconfig.jdtls = add_lsp { + name = "jdtls", + language = "java", + file_patterns = { "%.java$" }, + command = { "jdtls" }, + verbose = false +} + +---# Javascript - flow +--- __Status__: Untested +--- __Site__: https://flow.org/ +--- __Installation__: https://flow.org/en/docs/install/ +lspconfig.flow = add_lsp { + name = "flow", + language = "javascript", + file_patterns = { "%.js$", "%.jsx$" }, + command = { "flow", "lsp" }, + verbose = false +} + +---# Javascript - quick_lint_js +--- __Status__: Works +--- __Site__: https://github.com/quick-lint/quick-lint-js +--- __Installation__: https://github.com/quick-lint/quick-lint-js?tab=readme-ov-file#installing +lspconfig.quick_lint_js = add_lsp { + name = "quick_lint_js", + language = { + { id = "javascriptreact", pattern = "%.jsx$" }, + { id = "javascript", pattern = "%.js$" }, + { id = "typescriptdefinition", pattern = "%.d%.ts$" }, + { id = "typescriptsource", pattern = "%.ts$" }, + { id = "typescriptreact", pattern = "%.tsx$" }, + { id = "typescript", pattern = ".*" }, + }, + file_patterns = { "%.[mc]?jsx?$", "%.tsx?$" }, + command = { "quick-lint-js", "--lsp-server" }, + verbose = false +} + +---# JSON - vscode_json_ls +--- __Status__: Works +--- __Site__: https://www.npmjs.com/package/vscode-json-languageserver +--- __Installation__: https://www.npmjs.com/package/vscode-json-languageserver#integrate +lspconfig.vscode_json_ls = add_lsp { + name = "vscode_json_ls", + language = "json", + file_patterns = { "%.json$", "%.jsonc$" }, + command = { + { + 'vscode-json-languageserver', + 'vscode-json-language-server', + 'json-languageserver', + }, + '--stdio' + }, + verbose = false +} + +---# Kotlin - kotlin_ls +--- __Status__: Works +--- __Site__: https://github.com/fwcd/kotlin-language-server +--- __Installation__: https://github.com/fwcd/kotlin-language-server?tab=readme-ov-file#getting-started +lspconfig.kotlin_ls = add_lsp { + name = "kotlin_ls", + language = "kotlin", + file_patterns = { "%.kt$", "%.kts$", "%.ktm$" }, + command = { "kotlin-language-server" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.kotlin_language_server = lspconfig.kotlin_ls + +---# LaTeX - texlab +--- __Status__: Works +--- __Site__: https://github.com/latex-lsp/texlab +--- __Installation__: https://github.com/latex-lsp/texlab?tab=readme-ov-file#requirements +lspconfig.texlab = add_lsp { + name = "texlab", + language = "latex", + file_patterns = { "%.tex$", "%.bib$" , "%.dtx$", "%.sty$", "%.ins$", "%.cls$" }, + command = { "texlab" } +} + +---# Lua - lua_ls +--- __Status__: Works +--- __Site__: https://github.com/sumneko/lua-language-server +--- __Installation__: https://github.com/sumneko/lua-language-server/wiki/Build-and-Run-(Standalone) +lspconfig.lua_ls = add_lsp { + name = "lua_ls", + language = "lua", + file_patterns = { "%.lua$" }, + command = { "lua-language-server" }, + verbose = false, + settings = { + Lua = { + completion = { + enable = true, + callSnippet = snippets and "Replace" or "Disable", + keywordSnippet = snippets and "Replace" or "Disable" + }, + develop = { + enable = false, + debuggerPort = 11412, + debuggerWait = false + }, + diagnostics = { + enable = true, + }, + hover = { + enable = true, + viewNumber = true, + viewString = true, + viewStringMax = 1000 + }, + runtime = { + version = 'Lua 5.4', + path = { + "?.lua", + "?/init.lua", + "?/?.lua", + "/usr/share/5.4/?.lua", + "/usr/share/lua/5.4/?/init.lua" + } + }, + signatureHelp = { + enable = true + }, + workspace = { + library = { + DATADIR, + USERDIR + }, + maxPreload = 2000, + preloadFileSize = 1000 + }, + telemetry = { + enable = false + } + } + } +} + +---# Markdown - marksman +--- __Status__: Works +--- __Site__: https://github.com/artempyanykh/marksman +--- __Installation__: https://github.com/artempyanykh/marksman/blob/main/docs/install.md +lspconfig.marksman = add_lsp { + name = "marksman", + language = "markdown", + file_patterns = { "%.md$" }, + command = { "marksman" }, + verbose = false +} + +---# Nix - nil_ls +--- __Status__: Works +--- __Site__: https://github.com/oxalica/nil +--- __Installation__: https://github.com/oxalica/nil?tab=readme-ov-file#installation +lspconfig.nil_ls = add_lsp { + name = "nil_ls", + language = "nix", + file_patterns = { "%.nix$" }, + command = { "nil" }, + verbose = false +} + +---# Nim - nimlsp +--- __Status__: Works +--- __Site__: https://github.com/PMunch/nimlsp +--- __Installation__: https://github.com/PMunch/nimlsp?tab=readme-ov-file#installing-nimlsp +lspconfig.nimlsp = add_lsp { + name = "nimlsp", + language = "nim", + file_patterns = { "%.nim$" }, + command = { "nimlsp" }, + requests_per_second = 25, + incremental_changes = false, + verbose = false +} + +---# Ocaml - ocaml_lsp +--- __Status__: Reported working on https://github.com/jgmdev/lite-xl-lsp/issues/17 +--- __Site__: https://github.com/ocaml/ocaml-lsp +--- __Installation__: https://github.com/ocaml/ocaml-lsp#installation +lspconfig.ocaml_lsp = add_lsp { + name = "ocaml_lsp", + language = "ocaml", + file_patterns = { "%.ml$", "%.mli$" }, + command = { "ocamllsp" }, + verbose = false +} + +---# Odin - ols +--- __Status__: Works +--- __Site__: https://github.com/DanielGavin/ols +--- __Installation__: https://github.com/DanielGavin/ols?tab=readme-ov-file#installation +lspconfig.ols = add_lsp { + name = "ols", + language = "odin", + file_patterns = { "%.odin$" }, + command = { "ols" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.odinls = lspconfig.ols + +---# Perl - perlnavigator +--- __Status__: Works +--- __Site__: https://github.com/bscan/PerlNavigator +--- __Installation__: https://github.com/bscan/PerlNavigator?tab=readme-ov-file#installation-for-other-editors +lspconfig.perlnavigator = add_lsp { + name = "perlnavigator", + language = "perl", + file_patterns = { "%.pl$", "%.pm$" }, + command = { "perlnavigator" }, + settings = { + perlnavigator = { + -- The following setting is only needed if you want to set a custom perl path. It already defaults to "perl" + perlPath = "perl" + } + } +} + +---# PHP - intelephense +--- __Status__: Works +--- __Site__: https://github.com/bmewburn/intelephense-docs +--- __Installation__: https://github.com/bmewburn/intelephense-docs/blob/master/installation.md +lspconfig.intelephense = add_lsp { + name = "intelephense", + language = "php", + file_patterns = { "%.php$" }, + command = { "intelephense", "--stdio" }, + verbose = false +} + +---# Python - python_ls_palantir +--- __Status__: Works (deprecated in favor of python-lsp-server) +--- __Site__: https://github.com/palantir/python-language-server +--- __Installation__: https://github.com/palantir/python-language-server?tab=readme-ov-file#installation +lspconfig.python_ls_palantir = add_lsp { + name = "python_ls_palantir", + language = "python", + file_patterns = { "%.py$" }, + command = { "pyls" }, + verbose = false +} + +---# Python - python_ls +--- __Status__: Works +--- __Site__: https://github.com/python-lsp/python-lsp-server +--- __Installation__: https://github.com/python-lsp/python-lsp-server?tab=readme-ov-file#installation +lspconfig.python_ls = add_lsp { + name = "python_ls", + language = "python", + file_patterns = { "%.py$" }, + command = { "pylsp" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.pylsp = lspconfig.python_ls + +--# Python - basedpyright +--- __Status__: Works +--- __Site__: https://github.com/DetachHead/basedpyright +--- __Installation__: `pip install basedpyright` or `npm install -g basedpyright` +lspconfig.basedpyright = add_lsp { + name = "basedpyright", + language = "python", + file_patterns = { "%.py$" }, + command = { "basedpyright-langserver", "--stdio" }, + verbose = false +} + +--# Python - pyright +--- __Status__: Works +--- __Site__: https://github.com/microsoft/pyright +--- __Installation__: https://microsoft.github.io/pyright/#/installation +lspconfig.pyright = add_lsp { + name = "pyright", + language = "python", + file_patterns = { "%.py$" }, + command = { "pyright-langserver", "--stdio" }, + verbose = false +} + +--# Python- ruff +--- __Status__: Works +--- __Site__: https://github.com/astral-sh/ruff +--- __Installation__: `pip install ruff` or `uv tool install ruff` +lspconfig.ruff = add_lsp { + name = "ruff", + language = "python", + file_patterns = { "%.py$" }, + command = { "ruff", "server" }, + verbose = false +} + +---# R - r_ls +-- __Status__: Works +-- __Site__: https://github.com/REditorSupport/languageserver +-- __Installation__: https://github.com/REditorSupport/languageserver#installation +lspconfig.r_ls = add_lsp { + name = "r_ls", + language = "r", + file_patterns = { "%.r$", "%.R$" }, + command = {"R", "--slave", "-e", "languageserver::run()"}, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.rlanguageserver = lspconfig.r_ls + +---# Ruby - ruby_lsp +--- __Status__: Works +--- __Site__: https://github.com/Shopify/ruby-lsp +--- __Installation__: Use `rvm` to install a version of ruby and then use `gem install ruby-lsp` +--- __Note__: to ensure ruby-lsp works properly, read the following: https://shopify.github.io/ruby-lsp/editors.html +lspconfig.ruby_lsp = add_lsp { + name = "ruby_lsp", + language = "ruby", + file_patterns = { "%.rb$" }, + command = { 'ruby-lsp' }, + -- Use the command below if you want to run ruby_lsp with bundler + -- command = { 'bundler', 'exec', 'ruby-lsp'}, + incremental_changes = true, + init_options = { + enabledFeatures = { + "codeActions", + "completion", + "diagnostics", + "documentHighlights", + "documentLink", + "documentSymbols", + "foldingRanges", + "formatting", + "hover", + "inlayHint", + "onTypeFormatting", + "selectionRanges", + -- semanticHighlighting is not currently supported by Lite XL + -- "semanticHighlighting" + }, + -- enableExperimentalFeatures = true, + -- rubyVersionManager = "", + }, + verbose = false +} + +---# Ruby - solargraph +--- __Status__: Untested +--- __Site__: https://github.com/castwide/solargraph +--- __Installation__: https://github.com/castwide/solargraph?tab=readme-ov-file#installation +lspconfig.solargraph = add_lsp { + name = "solargraph", + language = "ruby", + file_patterns = { "%.rb$" }, + command = { "solargraph", "stdio" }, + verbose = false +} + +---# Rust - rust_ls +--- __Status__: Works +--- __Site__: https://github.com/rust-lang/rls +--- __Installation__: https://github.com/rust-lang/rls?tab=readme-ov-file#setup +lspconfig.rust_ls = add_lsp { + name = "rust_ls", + language = "rust", + file_patterns = { "%.rs$" }, + command = { "rls" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.rls = lspconfig.rust_ls + +---# Rust - rust_analyzer +--- __Status__: Works +--- __Site__: https://rust-analyzer.github.io/ +--- __Installation__: https://rust-analyzer.github.io/manual.html#installation +lspconfig.rust_analyzer = add_lsp { + name = "rust_analyzer", + language = "rust", + file_patterns = { "%.rs$" }, + command = { "rust-analyzer" }, + verbose = false +} + +---# Scala - metals +--- __Status__: Works +--- __Site__: https://scalameta.org/metals/ +--- __Installation__: https://scalameta.org/metals/docs#installation +lspconfig.metals = add_lsp { + name = "metals", + language = "scala", + file_patterns = { "%.scala$" }, + command = { "metals" }, + verbose = false +} + +---# SQL - sql_ls +--- __Status__: Works +--- __Site__: https://github.com/joe-re/sql-language-server +--- __Installation__: https://github.com/joe-re/sql-language-server?tab=readme-ov-file#installation--how-to-setup +lspconfig.sql_ls = add_lsp { + name = "sql_ls", + language = "sql", + file_patterns = { "%.sql$" }, + command = { "sql-language-server", "up", "--method", "stdio" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.sqlls = lspconfig.sql_ls + +---# Svelte - svelte_ls +--- __Status__: Works +--- __Site__: https://github.com/sveltejs/language-tools/tree/master/packages/language-server +--- __Installation__: `npm install -g svelte-language-server` +--- __Note__: https://github.com/sveltejs/language-tools/tree/master/packages/language-server#how-can-i-use-it +lspconfig.svelte_ls = add_lsp { + name = "svelte_ls", + language = "svelte", + file_patterns = { "%.svelte$" }, + command = { "svelteserver", "--stdio" }, + verbose = false +} + +---# Tailwind CSS - tailwind_css_ls +--- __Status__: Broken (freezes when writing class names inside html doc, requires new implementation of json.lua) +--- __Site__: https://github.com/tailwindlabs/tailwindcss-intellisense +--- __Installation__: https://github.com/tailwindlabs/tailwindcss-intellisense?tab=readme-ov-file#installation +lspconfig.tailwind_css_ls = add_lsp { + name = "tailwind_css_ls", + language = "html", + file_patterns = { "%.html$"}, + command = {"tailwindcss-language-server", "--stdio"}, + fake_snippets = true, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.tailwindcss = lspconfig.tailwind_css_ls + +---# TOML - taplo +--- __Status__: Works +--- __Site__: https://github.com/tamasfe/taplo +--- __Installation__: https://taplo.tamasfe.dev/cli/installation/binary.html +lspconfig.taplo = add_lsp { + name = "taplo", + language = "toml", + file_patterns = { "%.toml$" }, + command = { "taplo", "lsp", "stdio" }, + verbose = false +} + +---# Typescript - typescript_ls +--- __Status__: Works +--- __Site__: https://github.com/typescript-language-server/typescript-language-server +--- __Installation__: https://github.com/typescript-language-server/typescript-language-server?tab=readme-ov-file#installing +lspconfig.typescript_ls = add_lsp { + name = "typescript_ls", + language = { + { id = "javascript", pattern = "%.[cm]?js$" }, + { id = "javascriptreact", pattern = "%.jsx$" }, + { id = "typescript", pattern = "%.ts$" }, + { id = "typescriptreact", pattern = "%.tsx$" }, + }, + file_patterns = { "%.jsx?$", "%.[cm]js$", "%.tsx?$" }, + command = { "typescript-language-server", "--stdio" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.tsserver = lspconfig.typescript_ls + +---# Typst - typst_lsp +--- __Status: Works +--- __Site__: https://github.com/nvarner/typst-lsp +--- __Installation__: https://github.com/nvarner/typst-lsp?tab=readme-ov-file#installation-guide +lspconfig.typst_lsp = add_lsp { + name = "typst_lsp", + language = "typst", + file_patterns = { "%.typ$" }, + command = { "typst-lsp" }, + verbose = false, + settings = { + exportPdf = "never", -- Choose onType, onSave or never. + experimentalFormatterMode = "on" -- Choose on, or off + } +} + +---# Typst - tinymist +--- __Status: Works +--- __Site__: https://github.com/Myriad-Dreamin/tinymist +--- __Instalation__: https://github.com/Myriad-Dreamin/tinymist?tab=readme-ov-file#installation +lspconfig.tinymist = add_lsp { + name = "tinymist", + language = "typst", + file_patterns = { "%.typ$" }, + command = { "tinymist" }, + verbose = false +} + +---# V - v_analyzer +--- __Status__: Works +--- __Site__: https://github.com/vlang/v-analyzer +--- __Installation__: https://github.com/vlang/v-analyzer?tab=readme-ov-file#installation +lspconfig.v_analyzer = add_lsp { + name = "v_analyzer", + language = "v", + file_patterns = { "%.vv?$", "%.vsh$" }, + command = { "v-analyzer", "--stdio" }, + verbose = false +} + +---# V - v_ls +--- __Status__: doesn't respond to completion requests (no longer officially maintained in favor of v-analyzer) +--- __Site__: https://github.com/vlang/vls +--- __Installation__: https://github.com/vlang/vls?tab=readme-ov-file#installation +lspconfig.v_ls = add_lsp { + name = "v_ls", + language = "v", + file_patterns = { "%.vv?$", "%.vsh$" }, + command = { "vlang-vls" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.vls = lspconfig.v_ls + +---# Vala - vala_ls +--- __Status__: Works +--- __Site__: https://github.com/vala-lang/vala-language-server +--- __Installation__: https://github.com/vala-lang/vala-language-server?tab=readme-ov-file#installation +lspconfig.vala_ls = add_lsp { + name = "vala_ls", + language = "vala", + file_patterns = { "%.vala$" }, + command = { "vala-language-server" }, + verbose = false +} + +---# Vim - vim_ls +--- __Status__: Untested +--- __Site__: https://github.com/iamcco/vim-language-server +--- __Installation__: https://github.com/iamcco/vim-language-server?tab=readme-ov-file#install +lspconfig.vim_ls = add_lsp { + name = "vim_ls", + language = "vim", + file_patterns = { "%.vim$" }, + command = { "vim-language-server", "--stdio" }, + verbose = false +} + +---# XML - lemminx +--- __Status__: Works +--- __Site__: https://github.com/eclipse/lemminx +--- __Installation__: https://github.com/eclipse-lemminx/lemminx?tab=readme-ov-file#generating-a-native-binary +lspconfig.lemminx = add_lsp { + name = "lemminx", + language = "xml", + file_patterns = { "%.xml$" }, + command = { "lemminx" }, + verbose = false +} + +---# YAML - yaml_ls +--- __Status__: Untested +--- __Site__: https://github.com/redhat-developer/yaml-language-server +--- __Installation__: https://github.com/redhat-developer/yaml-language-server?tab=readme-ov-file#getting-started +lspconfig.yaml_ls = add_lsp { + name = "yaml_ls", + language = "yaml", + file_patterns = { "%.yml$", "%.yaml$" }, + command = { "yaml-language-server", "--stdio" }, + verbose = false +} +-- NOTE: for retro-compatibility +lspconfig.yamlls = lspconfig.yaml_ls + +---# Zig - zls +--- __Status__: Untested +--- __Site__: https://github.com/zigtools/zls +--- __Installation__: https://zigtools.org/zls/install/ +lspconfig.zls = add_lsp { + name = "zls", + language = "zig", + file_patterns = { "%.zig$" }, + command = { "zls" }, + verbose = false +} + +return lspconfig diff --git a/debian/extra/plugins/lsp/diagnostics.lua b/debian/extra/plugins/lsp/diagnostics.lua new file mode 100644 index 0000000..c06bec4 --- /dev/null +++ b/debian/extra/plugins/lsp/diagnostics.lua @@ -0,0 +1,311 @@ +-- Store diagnostic messages received by an LSP. +-- @copyright Jefferson Gonzalez +-- @license MIT + +local core = require "core" +local config = require "core.config" +local util = require "plugins.lsp.util" +local Timer = require "plugins.lsp.timer" + +---@class lsp.diagnostics +local diagnostics = {} + +---@class lsp.diagnostics.position +---@field line integer +---@field character integer + +---@class lsp.diagnostics.range +---@field start lsp.diagnostics.position +---@field end lsp.diagnostics.position + +---@class lsp.diagnostics.severity +---@field ERROR integer +---@field WARNING integer +---@field INFO integer +---@field HINT integer +diagnostics.severity = { + ERROR = 1, + WARNING = 2, + INFO = 3, + HINT = 4 +} + +---@alias lsp.diagnostics.severity_code +---|>`diagnostics.severity.ERROR` +---| `diagnostics.severity.WARNING` +---| `diagnostics.severity.INFO` +---| `diagnostics.severity.HINT` + +---@class lsp.diagnostics.code_description +---@field href string + +---@class lsp.diagnostics.tag +---@field UNNECESSARY integer +---@field DEPRECATED integer +diagnostics.tag = { + UNNECESSARY = 1, + DEPRECATED = 2 +} + +---@alias lsp.diagnostics.tag_code +---|>`diagnostics.tag.UNNECESSARY` +---| `diagnostics.tag.DEPRECATED` + +---@class lsp.diagnostics.location +---@field uri string +---@field range lsp.diagnostics.range + +---@class lsp.diagnostics.related_information +---@field location lsp.diagnostics.location +---@field message string + +---A diagnostic message. +---@class lsp.diagnostics.message +---@field range lsp.diagnostics.position +---@field severity? lsp.diagnostics.severity_code | integer +---@field code? integer | string +---@field codeDescription? lsp.diagnostics.code_description +---@field source? string +---@field message string +---@field tags? lsp.diagnostics.tag_code[] +---@field relatedInformation? lsp.diagnostics.related_information[] +---@field data? any + +---A diagnostic item. +---@class lsp.diagnostics.item +---@field filename string +---@field messages lsp.diagnostics.message[] + +---@type table +diagnostics.list = {} + +---@type integer +diagnostics.count = 0 + +-- Try to load lintplus plugin if available for diagnostics rendering +local lintplus_found, lintplus = nil, nil +if config.plugins.lintplus ~= false then + lintplus_found, lintplus = pcall(require, "plugins.lintplus") +end +local lintplus_kinds = { "error", "warning", "info", "hint" } + +---List of linplus coroutines to delay messages population +---@type table +local lintplus_delays = {} + +---Used to set proper diagnostic type on lintplus +---@type table +diagnostics.lintplus_kinds = lintplus_kinds + +---@type boolean +diagnostics.lintplus_found = lintplus_found + +---@param a lsp.diagnostics.message +---@param b lsp.diagnostics.message +local function sort_helper(a, b) + local a_severity = a.severity or diagnostics.severity.ERROR + local b_severity = b.severity or diagnostics.severity.ERROR + return a_severity < b_severity +end + +---Helper to catch some trange occurances where nil is given as filename +---@param filename string|nil +---@return string | nil +local function get_absolute_path(filename) + if not filename then + core.error( + "[LSP Diagnostics]: nil filename given", + tostring(filename) + ) + return nil + end + return core.project_absolute_path(filename) +end + +---Get the position of diagnostics associated to a file. +---@param filename string +---@return integer | nil +function diagnostics.get_index(filename) + ---@cast filename +nil + filename = get_absolute_path(filename) + if not filename then return nil end + for index, diagnostic in ipairs(diagnostics.list) do + if diagnostic.filename == filename then + return index + end + end + return nil +end + +---Get the diagnostics associated to a file. +---@param filename string +---@param severity? lsp.diagnostics.severity_code | integer +---@return lsp.diagnostics.message[] | nil +function diagnostics.get(filename, severity) + ---@cast filename +nil + filename = get_absolute_path(filename) + if not filename then return nil end + for _, diagnostic in ipairs(diagnostics.list) do + if diagnostic.filename == filename then + if not severity then return diagnostic.messages end + + local results = {} + for _, message in ipairs(diagnostic.messages) do + if (message.severity or diagnostics.severity.ERROR) == severity then + table.insert(results, message) + end + end + + return #results > 0 and results or nil + end + end + return nil +end + +---Adds a new list of diagnostics associated to a file replacing previous one. +---@param filename string +---@param messages lsp.diagnostics.message[] +---@return boolean +function diagnostics.add(filename, messages) + local index = diagnostics.get_index(filename) + + ---@cast filename +nil + filename = get_absolute_path(filename) + if not filename then return false end + + table.sort(messages, sort_helper) + + if not index then + diagnostics.count = diagnostics.count + 1 + table.insert(diagnostics.list, { + filename = filename, messages = messages + }) + else + diagnostics.list[index].messages = messages + end + + return true +end + +---Removes all diagnostics associated to a file. +---@param filename string +function diagnostics.clear(filename) + local index = diagnostics.get_index(filename) + + if index then + table.remove(diagnostics.list, index) + diagnostics.count = diagnostics.count - 1 + end +end + +---Get the amount of diagnostics associated to a file. +---@param filename string +---@param severity? lsp.diagnostics.severity_code | integer +function diagnostics.get_messages_count(filename, severity) + local index = diagnostics.get_index(filename) + + if not index then return 0 end + + if not severity then return #diagnostics.list[index].messages end + + local count = 0 + for _, message in ipairs(diagnostics.list[index].messages) do + if (message.severity or diagnostics.severity.ERROR) == severity then + count = count + 1 + end + end + + return count +end + +---@param doc core.doc +function diagnostics.lintplus_init_doc(doc) + if lintplus_found then + lintplus.init_doc(doc.filename, doc) + end +end + +---Remove registered diagnostics from lintplus for the given file or for +---all files if no filename is given. +---@param filename? string +---@param force boolean +function diagnostics.lintplus_clear_messages(filename, force) + if lintplus_found then + if + not force and lintplus_delays[filename] + and + lintplus_delays[filename]:running() + then + return + end + if filename then + lintplus.clear_messages(filename) + else + for fname, _ in pairs(lintplus.messages) do + if lintplus_delays[fname] then + lintplus_delays[fname]:stop() + lintplus_delays[fname] = nil + end + lintplus.clear_messages(fname) + end + end + end +end + +---@param filename string +function diagnostics.lintplus_populate(filename) + if lintplus_found then + diagnostics.lintplus_clear_messages(filename, true) + + if not filename then + for _, diagnostic in ipairs(diagnostics.list) do + local fname = core.normalize_to_project_dir(diagnostic.filename) + for _, message in pairs(diagnostic.messages) do + local line, col = util.toselection(message.range) + local text = message.message + local kind = lintplus_kinds[message.severity or diagnostics.severity.ERROR] + + lintplus.add_message(fname, line, col, kind, text) + end + end + else + local messages = diagnostics.get(filename) + if messages then + for _, message in pairs(messages) do + local line, col = util.toselection(message.range) + local text = message.message + local kind = lintplus_kinds[message.severity or diagnostics.severity.ERROR] + + lintplus.add_message( + core.normalize_to_project_dir(filename), + line, col, kind, text + ) + end + end + end + end +end + +---@param filename string +---@param user_typed boolean +function diagnostics.lintplus_populate_delayed(filename) + if lintplus_found then + if not lintplus_delays[filename] then + lintplus_delays[filename] = Timer( + config.plugins.lsp.diagnostics_delay or 500, + true + ) + lintplus_delays[filename].on_timer = function() + diagnostics.lintplus_populate(filename) + lintplus_delays[filename] = nil + end + lintplus_delays[filename]:start() + else + lintplus_delays[filename]:reset() + lintplus_delays[filename]:start() + end + end +end + + +return diagnostics diff --git a/debian/extra/plugins/lsp/fonts/README.md b/debian/extra/plugins/lsp/fonts/README.md new file mode 100644 index 0000000..450ea0c --- /dev/null +++ b/debian/extra/plugins/lsp/fonts/README.md @@ -0,0 +1,29 @@ +# Fonts used by the LSP Plugin + +This directory holds fonts to enhance the LSP expirience. They are +generated by copying only the desired glyphs from other known fonts +([Nerd Fonts](https://www.nerdfonts.com/)). + +## Requirements + +* Symbols-2048-em Nerd Font Complete Mono.ttf - symbols.ttf + +**Resources:** +* https://www.nerdfonts.com/font-downloads +* https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.0/NerdFontsSymbolsOnly.zip + +## How to generate + +Copy all the required base fonts into this directory and run: + +```sh +./generate-fonts.py +``` +or +```sh +fontforge -script generate-fonts.py +``` + +## Generated Fonts + +* `symbols.ttf` - LSP symbols font used as icons on the autocomplete plugin diff --git a/debian/extra/plugins/lsp/fonts/generate-fonts.py b/debian/extra/plugins/lsp/fonts/generate-fonts.py new file mode 100755 index 0000000..01b8365 --- /dev/null +++ b/debian/extra/plugins/lsp/fonts/generate-fonts.py @@ -0,0 +1,101 @@ +#!/usr/bin/fontforge -script +# +# Generates a small LSP symbol icons font using 'Symbols Nerd Font' +# +# Usage: +# fontforge -script generate-font.py +# +# References: +# https://www.nerdfonts.com/font-downloads +# https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.0/NerdFontsSymbolsOnly.zip +# +import fontforge + +# Define the path to the source font file +# Recommended font from the Symbols Nerd Font package is: +# Symbols-2048-em Nerd Font Complete Mono.ttf +src_font_path = "Symbols-2048-em Nerd Font Complete Mono.ttf" + +# List of symbols to copy +# The symbol mappings were taken from: +# * https://github.com/onsails/lspkind.nvim +# * https://github.com/TorchedSammy/lite-xl-lspkind +symbols = [ + # + # Nerdicons Preset + # + '', # 0xF77E Text + '', # 0xF6A6 Method + '', # 0xF794 Function + '', # 0xF423 Constructor + 'ﰠ', # 0xFC20 Field + '', # 0xF52A Variable + 'ﴯ', # 0xFD2F Class + '', # 0xF0E8 Interface + '', # 0xF487 Module + 'ﰠ', # 0xFC20 Property + '塞', # 0xF96C Unit + '', # 0xF89F Value + '', # 0xF15D Enum + '', # 0xF80A Keyword + '', # 0xF44F Snippet + '', # 0xF8D7 Color + '', # 0xF718 File + '', # 0xF706 Reference + '', # 0xF74A Folder + '', # 0xF15D EnumMember + '', # 0xF8FE Constant + 'פּ', # 0xFB44 Struct + '', # 0xF0E7 Event + '', # 0xF694 Operator + '', # 0xF128 Unknown + '', # TypeParameter + # + # Codicons Preset + # + '', # Text + '', # Method + '', # Function + '', # Constructor + '', # Field + '', # Variable + '', # Class + '', # Interface + '', # Module + '', # Property + '', # Unit + '', # Value + '', # Enum + '', # Keyword + '', # Snippet + '', # Color + '', # File + '', # Reference + '', # Folder + '', # EnumMember + '', # Constant + '', # Struct + '', # Event + '', # Operator + '', # Unknown + '' # TypeParameter +] + +# Convert symbols list to an integers list a.k.a. unicode values +unicode_values = [] +for char in symbols: + unicode_values.append(ord(char)) + +# Load the source font into FontForge +src_font = fontforge.open(src_font_path) + +# Remove unwanted glyph +src_font.selection.select(*unicode_values) +src_font.selection.invert() +src_font.clear() + +# Save as new font +src_font.fontname = "LSPSymbols" +src_font.familyname = "LSP Symbols" +src_font.fullname = "LSP Symbols" +src_font.generate("symbols.ttf") diff --git a/debian/extra/plugins/lsp/fonts/symbols.ttf b/debian/extra/plugins/lsp/fonts/symbols.ttf new file mode 100644 index 0000000000000000000000000000000000000000..371c161a5aff0261f783d6c6957623a2213923ad GIT binary patch literal 9400 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 +lsp.servers = {} + +---List of running servers +---@type table +lsp.servers_running = {} + +---Flag that indicates if last autocomplete request was a trigger +---to prevent requesting another autocompletion request until the +---autocomplete box is hidden since some lsp servers loose context +---and return wrong results (eg: lua-language-server) +---@type boolean +lsp.in_trigger = false + +---Flag that indicates if the user typed something on the editor to try and +---call autocomplete only when neccesary. +---@type boolean +lsp.user_typed = false + +---Used on the hover timer to display hover info +---@class lsp.hover_position +---@field doc core.doc | nil +---@field x number +---@field y number +---@field triggered boolean +---@field utf8_range table | nil +lsp.hover_position = {doc = nil, x = -1, y = -1, triggered = false, utf8_range = nil} + +---@type lsp.timer +lsp.hover_timer = Timer(300, true) +lsp.hover_timer.on_timer = function() + local doc, line, col = lsp.get_hovered_location(lsp.hover_position.x, lsp.hover_position.y) + if not doc then return end + lsp.hover_position.triggered = true + lsp.hover_position.utf8_range = nil + lsp.hover_position.doc = doc + lsp.request_hover(doc, line, col) +end + +-- +-- Private functions +-- + +---Generate an lsp location object +---@param doc core.doc +---@param line integer +---@param col integer +local function get_buffer_position_params(doc, line, col) + return { + textDocument = { + uri = util.touri(core.project_absolute_path(doc.filename)), + }, + position = { + line = line - 1, + character = util.doc_utf8_to_utf16(doc, line, col) - 1 + } + } +end + +---Recursive function to generate a list of symbols ready +---to use for the lsp.request_document_symbols() action. +---@param list table +---@param parent? string +local function get_symbol_lists(list, parent) + local symbols = {} + local symbol_names = {} + parent = parent or "" + parent = #parent > 0 and (parent .. "/") or parent + + for _, symbol in pairs(list) do + -- Include symbol kind to be able to filter by it + local symbol_name = parent + .. symbol.name + .. "||" .. Server.get_symbol_kind(symbol.kind) + + table.insert(symbol_names, symbol_name) + + symbols[symbol_name] = { kind = symbol.kind } + + if symbol.location then + symbols[symbol_name].location = symbol.location + else + if symbol.range then + symbols[symbol_name].range = symbol.range + end + if symbol.uri then + symbols[symbol_name].uri = symbol.uri + end + end + + if symbol.children and #symbol.children > 0 then + local child_symbols, child_names = get_symbol_lists( + symbol.children, parent .. symbol.name + ) + + for _, name in pairs(child_names) do + table.insert(symbol_names, name) + symbols[name] = child_symbols[name] + end + end + end + + return symbols, symbol_names +end + +local function log(server, message, ...) + if server.verbose then + core.log("["..server.name.."] " .. message, ...) + else + core.log_quiet("["..server.name.."] " .. message, ...) + end +end + +---Check if active view is a DocView and return it +---@return core.docview|nil +local function get_active_docview() + local av = core.active_view + if getmetatable(av) == DocView and av.doc and av.doc.filename then + return av + end + return nil +end + +---Generates a code preview of a location +---@param location table +local function get_location_preview(location) + local line1, col1 = util.toselection( + location.range or location.targetRange + ) + local filename = core.normalize_to_project_dir( + util.tofilename(location.uri or location.targetUri) + ) + local abs_filename = core.project_absolute_path(filename) + + local file = io.open(abs_filename) + + if not file then + return "", filename .. ":" .. tostring(line1) .. ":" .. tostring(col1) + end + + local preview = "" + + -- sometimes the lsp can send the location of a definition where the + -- doc comments should be written but if no docs are written the line + -- is empty and subsequent line is the one we are interested in. + local line_count = 1 + for line in file:lines() do + if line_count >= line1 then + preview = line:gsub("^%s+", "") + :gsub("%s+$", "") + + if preview ~= "" then + break + else + -- change also the location table + if location.range then + location.range.start.line = location.range.start.line + 1 + location.range['end'].line = location.range['end'].line + 1 + elseif location.targetRange then + location.targetRange.start.line = location.targetRange.start.line + 1 + location.targetRange['end'].line = location.targetRange['end'].line + 1 + end + end + end + line_count = line_count + 1 + end + file:close() + + local position = filename .. ":" .. tostring(line1) .. ":" .. tostring(col1) + + return preview, position +end + +---Generate a list ready to use for the lsp.request_references() action. +---@param locations table +local function get_references_lists(locations) + local references, reference_names = {}, {} + + for _, location in pairs(locations) do + local preview, position = get_location_preview(location) + local name = preview .. "||" .. position + table.insert(reference_names, name) + references[name] = location + end + + return references, reference_names +end + +---Apply an lsp textEdit to a document if possible. +---@param server lsp.server +---@param doc core.doc +---@param text_edit table +---@param is_snippet boolean +---@param update_cursor_position boolean +---@return boolean True on success +local function apply_edit(server, doc, text_edit, is_snippet, update_cursor_position) + local range = nil + + if text_edit.range then + range = text_edit.range + elseif text_edit.insert then + range = text_edit.insert + elseif text_edit.replace then + range = text_edit.replace + end + + if not range then return false end + + local text = text_edit.newText + local line1, col1, line2, col2 + local current_text = "" + + if + not server.capabilities.positionEncoding + or + server.capabilities.positionEncoding == Server.position_encoding_kind.UTF16 + then + line1, col1, line2, col2 = util.toselection(range, doc) + else + line1, col1, line2, col2 = util.toselection(range) + core.error( + "[LSP] Unsupported position encoding: ", + server.capabilities.positionEncoding + ) + end + + if lsp.in_trigger then + local cline2, ccol2 = doc:get_selection() + local cline1, ccol1 = doc:position_offset(line2, col2, translate.start_of_word) + current_text = doc:get_text(cline1, ccol1, cline2, ccol2) + end + + doc:remove(line1, col1, line2, col2+#current_text) + + if is_snippet and snippets_found and config.plugins.lsp.snippets then + doc:set_selection(line1, col1, line1, col1) + snippets.execute {format = 'lsp', template = text} + return true + end + + doc:insert(line1, col1, text) + if update_cursor_position then + doc:move_to_cursor(nil, #text) + end + + return true +end + +---Callback given to autocomplete plugin which is executed once for each +---element of the autocomplete box which is hovered with the idea of providing +---better description of the selected element by requesting the LSP server for +---detailed information/documentation. +---@param index integer +---@param item table +local function autocomplete_onhover(index, item) + local completion_item = item.data.completion_item + + if item.data.server.verbose then + item.data.server:log( + "Resolve item: %s", util.jsonprettify(json.encode(completion_item)) + ) + end + + -- Only send resolve request if data field (which should contain + -- the item id) is available. + if completion_item.data then + item.data.server:push_request('completionItem/resolve', { + params = completion_item, + callback = function(server, response) + if response.result then + local symbol = response.result + if symbol.detail and #item.desc <= 0 then + item.desc = symbol.detail + end + if symbol.documentation then + if #item.desc > 0 then + item.desc = item.desc .. "\n\n" + end + if + type(symbol.documentation) == "table" + and + symbol.documentation.value + then + item.desc = item.desc .. symbol.documentation.value + if + symbol.documentation.kind + and + symbol.documentation.kind == "markdown" + then + item.desc = util.strip_markdown(item.desc) + end + else + item.desc = item.desc .. symbol.documentation + end + end + item.desc = item.desc:gsub("[%s\n]+$", "") + :gsub("^[%s\n]+", "") + :gsub("\n\n\n+", "\n\n") + if symbol.additionalTextEdits then + completion_item.additionalTextEdits = symbol.additionalTextEdits + end + + if server.verbose then + server:log( + "Resolve response: %s", util.jsonprettify(json.encode(symbol)) + ) + end + elseif server.verbose then + server:log("Resolve returned empty response") + end + end + }) + end +end + +---Callback that handles insertion of an autocompletion item that has +---the information of insertion +---@param index integer +---@param item table +local function autocomplete_onselect(index, item) + local completion = item.data.completion_item + local dv = get_active_docview() + local edit_applied = false + if completion.textEdit then + if dv then + local is_snippet = completion.insertTextFormat + and completion.insertTextFormat == Server.insert_text_format.Snippet + edit_applied = apply_edit(item.data.server, dv.doc, completion.textEdit, is_snippet, true) + if edit_applied then + -- Retrigger code completion if last char is a trigger + -- this is useful for example with clangd when autocompleting + -- a #include, if user types < a list of paths will appear + -- when selecting a path that ends with / as 0 then + -- TODO: do we need to sort this? Or is it expected to be already sorted? + -- TODO: are the edit ranges considered as if the "main" textEdit was applied already? + + -- Apply the edits in reverse order, so that their ranges are not shifted + -- around by previous edits + for i=#completion.additionalTextEdits,1,-1 do + local edit = completion.additionalTextEdits[i] + apply_edit(item.data.server, dv.doc, edit, false, false) + end + end + return edit_applied +end + +-- +-- Public functions +-- + +---Open a document location returned by LSP +---@param location table +function lsp.goto_location(location) + local doc_view = core.root_view:open_doc( + core.open_doc( + common.home_expand( + util.tofilename(location.uri or location.targetUri) + ) + ) + ) + local line1, col1 = util.toselection( + location.range or location.targetRange, doc_view.doc + ) + doc_view.doc:set_selection(line1, col1, line1, col1) +end + +lsp.get_location_preview = get_location_preview + +---Register an LSP server to be launched on demand +---@param options lsp.server.options +function lsp.add_server(options) + local required_fields = { + "name", "language", "file_patterns", "command" + } + + for _, field in pairs(required_fields) do + if not options[field] then + core.error( + "[LSP] You need to provide a '%s' field for the server.", + field + ) + return false + end + end + + if snippets_found and config.plugins.lsp.snippets then + options.snippets = true + end + + if #options.command <= 0 then + core.error("[LSP] Provide a command table list with the lsp command.") + return false + end + + -- On Windows using cmd.exe allows us to take advantage of its ability to run + -- the correct executable, as well as running scripts. + if PLATFORM == "Windows" and not options.windows_skip_cmd then + local escaped_commands = { } + if type(options.command) == "string" then + options.command = { options.command } + end + -- We need to escape `"` as `"""` + for _, v in ipairs(options.command) do + table.insert(escaped_commands, '"' .. string.gsub(v, '"', '"""') .. '"') + end + -- The result should be something like `cmd.exe /C ""first" "second" "third""` + options.command = 'cmd.exe /C "' .. table.concat(escaped_commands, " ") .. '"' + end + + if config.plugins.lsp.force_verbosity_off then + options.verbose = false + end + + lsp.servers[options.name] = options + + return true +end + +---Get valid running lsp servers for a given filename +---@param filename string +---@param initialized boolean +---@return table active_servers +function lsp.get_active_servers(filename, initialized) + local servers = {} + for name, server in pairs(lsp.servers) do + if common.match_pattern(filename, server.file_patterns) then + if lsp.servers_running[name] then + local add_server = true + if + initialized + and + ( + not lsp.servers_running[name].initialized + or + not lsp.servers_running[name].capabilities + ) + then + add_server = false + end + if add_server then + table.insert(servers, name) + end + end + end + end + return servers +end + +-- Used on lsp.get_workspace_settings() +local cached_workspace_settings = {} +local cached_workspace_settings_timestamp = 0 + +---Get table of configuration settings in the following way: +---1. Scan the USERDIR for .lite_lsp.lua or .lite_lsp.json (in that order) +---2. Merge server.settings +---4. Scan workspace if set also for .lite_lsp.lua/json and merge them or +---3. Scan server.path also for .lite_lsp.lua/json and merge them +---Note: settings are cached for 5 seconds for faster retrieval +--- on repetitive calls to this function. +---@param server lsp.server +---@param workspace? string +---@return table +function lsp.get_workspace_settings(server, workspace) + -- Search settings on the following directories, subsequent settings + -- overwrite the previous ones + local paths = { USERDIR } + local cached_index = USERDIR + local settings = {} + + if not workspace and server.path then + table.insert(paths, server.path) + cached_index = cached_index .. tostring(server.path) + elseif workspace then + table.insert(paths, workspace) + cached_index = cached_index .. tostring(workspace) + end + + if + cached_workspace_settings_timestamp > os.time() + and + cached_workspace_settings[cached_index] + then + return cached_workspace_settings[cached_index] + else + local position = 1 + for _, path in pairs(paths) do + if path then + local settings_new = nil + path = path:gsub("\\+$", ""):gsub("/+$", "") + if util.file_exists(path .. "/.lite_lsp.lua") then + local settings_lua = dofile(path .. "/.lite_lsp.lua") + if type(settings_lua) == "table" then + settings_new = settings_lua + end + elseif util.file_exists(path .. "/.lite_lsp.json") then + local file = io.open(path .. "/.lite_lsp.json", "r") + if file then + local settings_json = file:read("*a") + settings_new = json.decode(settings_json) + file:close() + end + end + + -- overwrite global settings by those specified in the server if any + if position == 1 and server.settings then + if settings_new then + settings_new = util.deep_merge(settings_new, server.settings) + else + settings_new = server.settings + end + end + + -- overwrite previous settings with new ones + if settings_new then + settings = util.deep_merge(settings, settings_new) + end + end + + position = position + 1 + end + + -- store settings on cache for 5 seconds for fast repeated calls + cached_workspace_settings[cached_index] = settings + cached_workspace_settings_timestamp = os.time() + 5 + end + + return settings +end + +-- TODO Update workspace folders of already running lsp servers if required +--- Start all applicable lsp servers for a given file. +--- @param filename string +--- @param project_directory string +function lsp.start_server(filename, project_directory) + for name, server in pairs(lsp.servers) do + if common.match_pattern(filename, server.file_patterns) then + if not lsp.servers_running[name] then + core.log("[LSP]: Starting " .. name) + ---@type boolean, lsp.server + local success, client = pcall(function() return Server(server) end) + if not success then + core.error("[LSP]: Unable to start %s:\nCommand: %s\nError: %s", name, common.serialize(server.command), client) + goto continue + end + client.yield_on_reads = config.plugins.lsp.more_yielding + + lsp.servers_running[name] = client + + -- We overwrite the default log function to log messages on lite + function client:log(message, ...) + core.log_quiet( + "[LSP/%s]: " .. message .. "\n", + self.name, + ... + ) + end + + function client:on_shutdown() + local sname = self.name + core.log( + "[LSP]: %s was shutdown, revise your configuration", + sname + ) + local last_shutdown = lsp.servers_running[sname].last_shutdown or 0 + lsp.servers_running = util.table_remove_key( + lsp.servers_running, + sname + ) + if system.get_time() - last_shutdown >= 5 then + lsp.start_servers() + if lsp.servers_running[sname] then + lsp.servers_running[sname].last_shutdown = system.get_time() + core.log( + "[LSP]: %s automatically restarted", + sname + ) + end + end + end + + -- Respond to workspace/configuration request + client:add_request_listener( + "workspace/configuration", + function(server, request) + local settings_default = lsp.get_workspace_settings(server) + + local settings_list = {} + for _, item in pairs(request.params.items) do + local value = nil + if item.section then + -- No workspace was specified so we return from default settings + if not item.scopeUri then + value = util.table_get_field(settings_default, item.section) + -- A workspace was specified so we return from that workspace + else + local settings_workspace = lsp.get_workspace_settings( + server, util.tofilename(item.scopeUri) + ) + value = util.table_get_field(settings_workspace, item.section) + end + + if not value then + server:log("Asking for '%s' config but not set", item.section) + else + server:log("Asking for '%s' config", item.section) + end + end + + table.insert(settings_list, value or json.null) + end + server:push_response(request.method, request.id, settings_list) + end + ) + + -- Respond to window/showDocument request + client:add_request_listener( + "window/showDocument", + function(server, request) + if request.params.external then + MessageBox.info( + server.name .. " LSP Server", + "Wants to externally open:\n'" .. request.params.uri .. "'", + function(_, button_id) + if button_id == 1 then + util.open_external(request.params.uri) + end + end, + MessageBox.BUTTONS_YES_NO + ) + else + local document = util.tofilename(request.params.uri) + ---@type core.docview + local doc_view = core.root_view:open_doc( + core.open_doc(common.home_expand(document)) + ) + if request.params.selection then + local line1, col1, line2, col2 = util.toselection( + request.params.selection, doc_view.doc + ) + doc_view.doc:set_selection(line1, col1, line2, col2) + end + if request.params.takeFocus then + system.raise_window() + end + end + + server:push_response(request.method, request.id, {success=true}) + end + ) + + -- Display server messages on lite UI + client:add_message_listener( + "window/logMessage", + function(server, params) + if core.log then + log(server, "%s", params.message) + end + end + ) + + -- Register/unregister diagnostic messages + client:add_message_listener( + "textDocument/publishDiagnostics", + function(server, params) + local abs_filename = util.tofilename(params.uri) + local filename = core.normalize_to_project_dir(abs_filename) + + if server.verbose then + core.log_quiet( + "["..server.name.."] %s diagnostics for: %s", + filename, + params.diagnostics and #params.diagnostics or 0 + ) + end + + if params.diagnostics and #params.diagnostics > 0 then + local added = diagnostics.add(filename, params.diagnostics) + + if + added and diagnostics.lintplus_found + and + config.plugins.lsp.show_diagnostics + and + util.doc_is_open(abs_filename) + then + -- we delay rendering of diagnostics for 2 seconds to prevent + -- the constant reporting of errors while typing. + diagnostics.lintplus_populate_delayed(filename) + end + else + diagnostics.clear(filename) + diagnostics.lintplus_clear_messages(filename) + end + end + ) + + -- Register/unregister diagnostic messages + client:add_message_listener( + "window/showMessage", + function(server, params) + local log_func = "log_quiet" + if params.type == Server.message_type.Error then + log_func = "error" + elseif params.type == Server.message_type.Warning then + log_func = "warn" + elseif params.type == Server.message_type.Info then + log_func = "log" + elseif params.type == Server.message_type.Debug then + log_func = "log_quiet" + end + core[log_func]("["..server.name.."] message: %s", params.message) + end + ) + + -- Send settings table after initialization if available. + client:add_event_listener("initialized", function(server) + if config.plugins.lsp.force_verbosity_off then + core.log_quiet("["..server.name.."] " .. "Initialized") + else + log(server, "Initialized") + end + local settings = lsp.get_workspace_settings(server) + if not util.table_empty(settings) then + server:push_notification("workspace/didChangeConfiguration", { + params = {settings = settings} + }) + end + + -- Send open document request if needed + for _, docu in ipairs(core.docs) do + if docu.filename then + if common.match_pattern(docu.filename, server.file_patterns) then + lsp.open_document(docu) + end + end + end + end) + + -- Start the server initialization process + client:initialize(project_directory, "Lite XL", VERSION) + end + end + ::continue:: + end +end + +---Stops all running servers. +function lsp.stop_servers() + for name, _ in pairs(lsp.servers) do + if lsp.servers_running[name] then + lsp.servers_running[name]:exit() + core.log("[LSP] stopped %s", name) + lsp.servers_running = util.table_remove_key(lsp.servers_running, name) + end + end +end + +---Start only the needed servers by current opened documents. +function lsp.start_servers() + for _, doc in ipairs(core.docs) do + if doc.filename then + lsp.start_server(doc.filename, core.project_dir) + end + end +end + +---Returns the hovered doc and the hovered position. +---Returns nil if no doc with an LSP activated is under the provided coordinates. +---@param x number +---@param y number +---@return core.doc|nil doc +---@return integer|nil line +---@return integer|nil col +function lsp.get_hovered_location(x, y) + local n = core.root_view.root_node:get_child_overlapping_point(x, y) + if not n then return end + local av = n.active_view + if not av:extends(DocView) then return end + if av and av.doc.lsp_open then + ---@type core.doc + local doc = av.doc + local line, col = av:resolve_screen_position(x, y) + local last_x = av:get_col_x_offset(line, #av.doc.lines[line]) + local lx, ly = av:get_line_screen_position(line) + if x > last_x + lx or y > ly + av:get_line_height() then return end + return doc, line, col + end +end + +---Send notification to applicable LSP servers that a document was opened +---@param doc core.doc +function lsp.open_document(doc) + -- in some rare ocassions this function may return nil when the + -- user closed lite-xl with files opened, removed the files from system + -- and opens lite-xl again which loads the non existent files. + local doc_path = core.project_absolute_path(doc.filename) + local file_info = system.get_file_info(doc_path) + if not file_info then + core.error("[LSP] could not open: %s", tostring(doc.filename)) + return + end + + local active_servers = lsp.get_active_servers(doc.filename, true) + + if #active_servers > 0 then + doc.disable_symbols = true -- disable symbol parsing on autocomplete plugin + for _, name in pairs(active_servers) do + local server = lsp.servers_running[name] + if server.capabilities.textDocumentSync.openClose then + if server.exit_timer then + server.exit_timer:stop() + server.exit_timer = nil + end + if file_info.size / 1024 <= 50 then + -- file size is in range so push the notification as usual. + server:push_notification('textDocument/didOpen', { + params = { + textDocument = { + uri = util.touri(doc_path), + languageId = server:get_language_id(doc), + version = doc.clean_change_id, + text = table.concat(doc.lines) + } + }, + callback = function() doc.lsp_open = true end + }) + else + -- big files too slow for json encoder, also sending a huge file + -- without yielding would stall the ui, and some lsp servers have + -- issues with receiving big files in a single chunk. + local text = table.concat(doc.lines) + :gsub('\\', '\\\\'):gsub("\n", "\\n"):gsub("\r", "\\r") + :gsub("\t", "\\t"):gsub('"', '\\"'):gsub('\b', '\\b') + :gsub('\f', '\\f') + + server:push_raw("textDocument/didOpen", { + raw_data = '{\n' + .. '"jsonrpc": "2.0",\n' + .. '"method": "textDocument/didOpen",\n' + .. '"params": {\n' + .. '"textDocument": {\n' + .. '"uri": "'..util.touri(doc_path)..'",\n' + .. '"languageId": "'..server:get_language_id(doc)..'",\n' + .. '"version": '..doc.clean_change_id..',\n' + .. '"text": "'..text..'"\n' + .. '}\n' + .. '}\n' + .. '}\n', + callback = function(server) + doc.lsp_open = true + log(server, "Big file '%s' ready for completion!", doc.filename) + end + }) + + log(server, "Processing big file '%s'...", doc.filename) + end + else + doc.lsp_open = true + end + end + end +end + +--- Send notification to applicable LSP servers that a document was saved +---@param doc core.doc +function lsp.save_document(doc) + if not doc.lsp_open then return end + + local active_servers = lsp.get_active_servers(doc.filename, true) + if #active_servers > 0 then + for _, name in pairs(active_servers) do + local server = lsp.servers_running[name] + local save = server.capabilities.textDocumentSync.save + if save then + -- Send document content only if required by lsp server + if save.includeText then + -- If save should include file content then raw is faster for + -- huge files that would take too much to encode. + local text = table.concat(doc.lines) + :gsub('\\', '\\\\'):gsub("\n", "\\n"):gsub("\r", "\\r") + :gsub("\t", "\\t"):gsub('"', '\\"'):gsub('\b', '\\b') + :gsub('\f', '\\f') + + server:push_raw("textDocument/didSave", { + raw_data = '{\n' + .. '"jsonrpc": "2.0",\n' + .. '"method": "textDocument/didSave",\n' + .. '"params": {\n' + .. '"textDocument": {\n' + .. '"uri": "'..util.touri(core.project_absolute_path(doc.filename))..'"\n' + .. '},\n' + .. '"text": "'..text..'"\n' + .. '}\n' + .. '}\n' + }) + else + server:push_notification('textDocument/didSave', { + params = { + textDocument = { + uri = util.touri(core.project_absolute_path(doc.filename)) + } + } + }) + end + end + end + end +end + +--- Send notification to applicable LSP servers that a document was closed +---@param doc core.doc +function lsp.close_document(doc) + if not doc.lsp_open then return end + + local active_servers = lsp.get_active_servers(doc.filename, true) + if #active_servers > 0 then + for _, name in pairs(active_servers) do + local server = lsp.servers_running[name] + if server.capabilities.textDocumentSync.openClose then + server:push_notification('textDocument/didClose', { + params = { + textDocument = { + uri = util.touri(core.project_absolute_path(doc.filename)), + languageId = server:get_language_id(doc), + version = doc.clean_change_id + } + } + }) + end + end + end +end + +--- Helper for lsp.update_document +---@param doc core.doc +local function request_signature_completion(doc) + local line1, col1, line2, col2 = doc:get_selection() + + if line1 == line2 and col1 == col2 then + -- First try to display a function signatures and if not possible + -- do normal code autocomplete + lsp.request_signature( + doc, + line1, + col1, + false, + lsp.request_completion + ) + end +end + +---Send document updates to applicable running LSP servers. +---@param doc core.doc +---@param request_completion? boolean +function lsp.update_document(doc, request_completion) + if not doc.lsp_open or not doc.lsp_changes or util.table_empty(doc.lsp_changes) then + return + end + + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + if not doc.lsp_changes[server] or #doc.lsp_changes[server] <= 0 then + goto continue + end + local sync_kind = server.capabilities.textDocumentSync.change + if + sync_kind ~= Server.text_document_sync_kind.None + and + server:can_push() -- ensure we don't loose incremental changes + then + local completion_callback = nil + if request_completion then + completion_callback = function() request_signature_completion(doc) end + end + + if + sync_kind == Server.text_document_sync_kind.Full + and + not server.incremental_changes + then + -- If sync should be done by sending full file content then lets do + -- it raw which is faster for big files. + local text = table.concat(doc.lines) + :gsub('\\', '\\\\'):gsub("\n", "\\n"):gsub("\r", "\\r") + :gsub("\t", "\\t"):gsub('"', '\\"'):gsub('\b', '\\b') + :gsub('\f', '\\f') + + server:push_raw("textDocument/didChange", { + overwrite = true, + raw_data = '{\n' + .. '"jsonrpc": "2.0",\n' + .. '"method": "textDocument/didChange",\n' + .. '"params": {\n' + .. '"textDocument": {\n' + .. '"uri": "'..util.touri(core.project_absolute_path(doc.filename))..'",\n' + .. '"version": '..doc.lsp_version .. "\n" + .. '},\n' + .. '"contentChanges": [\n' + .. '{"text": "'..text..'"}\n' + .. "]\n" + .. '}\n' + .. '}\n', + callback = function() + doc.lsp_changes[server] = nil + if completion_callback then + completion_callback() + end + end + }) + else + lsp.servers_running[name]:push_notification('textDocument/didChange', { + overwrite = true, + params = { + textDocument = { + uri = util.touri(core.project_absolute_path(doc.filename)), + version = doc.lsp_version, + }, + contentChanges = doc.lsp_changes[server] + }, + callback = function() + doc.lsp_changes[server] = nil + if completion_callback then + completion_callback() + end + end + }) + end + end + ::continue:: + end +end + +--- Enable or disable diagnostic messages +function lsp.toggle_diagnostics() + config.plugins.lsp.show_diagnostics = not config.plugins.lsp.show_diagnostics + + if not config.plugins.lsp.show_diagnostics then + diagnostics.lintplus_clear_messages() + core.log("[LSP] Diagnostics disabled") + else + diagnostics.lintplus_populate() + core.log("[LSP] Diagnostics enabled") + end +end + +--- Send to applicable LSP servers a request for code completion +function lsp.request_completion(doc, line, col, forced) + if lsp.in_trigger or not doc.lsp_open then + return + end + + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + if server.capabilities.completionProvider then + local capabilities = lsp.servers_running[name].capabilities + local char = doc:get_char(line, col-1) + local trigger_char = false + + local request = get_buffer_position_params(doc, line, col) + + -- without providing context some language servers like the + -- lua-language-server behave poorly and return garbage. + if + capabilities.completionProvider.triggerCharacters + and + #capabilities.completionProvider.triggerCharacters > 0 + and + char:match("%p") + and + util.intable(char, capabilities.completionProvider.triggerCharacters) + then + request.context = { + triggerKind = Server.completion_trigger_Kind.TriggerCharacter, + triggerCharacter = char + } + trigger_char = true; + end + + if + not trigger_char + and + not autocomplete.can_complete() + and + not forced + then + return false + end + + server:push_request('textDocument/completion', { + params = request, + overwrite = true, + callback = function(server, response) + lsp.user_typed = false + + -- don't autocomplete if caret position changed + local cline, cchar = doc:get_selection() + if cline ~= line or cchar ~= col then + return + end + + if server.verbose then + server:log( + "Completion response received." + ) + end + + if not response.result then + return + end + + local result = response.result + local complete_result = true + if result.isIncomplete then + if server.verbose then + core.log_quiet( + "["..server.name.."] " .. "Completion list incomplete" + ) + end + complete_result = false + end + + if not result.items or #result.items <= 0 then + -- Workaround for some lsp servers that don't return results + -- in the items property but instead on the results it self + if #result > 0 then + local items = result + result = {items = items} + else + return + end + end + + local symbols = { + name = lsp.servers_running[name].name, + files = lsp.servers_running[name].file_patterns, + items = {} + } + + local symbol_count = 1 + for _, symbol in ipairs(result.items) do + local label = symbol.label + or ( + symbol.textEdit + and symbol.textEdit.newText + or symbol.insertText + ) + + local info = server.get_completion_item_kind(symbol.kind) + + local desc = symbol.detail or "" + + -- TODO: maybe we should give priority to insertText above + if + symbol.label and + symbol.insertText and + #symbol.label > #symbol.insertText + then + label = symbol.insertText + if symbol.label ~= label then + desc = symbol.label + end + if symbol.detail then + desc = desc .. ": " .. symbol.detail + end + end + + if desc ~= "" then + desc = desc .. "\n" + end + + if + type(symbol.documentation) == "table" + and + symbol.documentation.value + then + desc = desc .. "\n" .. symbol.documentation.value + if + symbol.documentation.kind + and + symbol.documentation.kind == "markdown" + then + desc = util.strip_markdown(desc) + if symbol_count % 10 == 0 then + coroutine.yield() + end + end + elseif symbol.documentation then + desc = desc .. "\n" .. symbol.documentation + end + + desc = desc:gsub("[%s\n]+$", "") + :gsub("\n\n\n+", "\n\n") + + symbols.items[label] = { + info = info, + desc = desc, + data = { + server = server, completion_item = symbol + }, + onselect = autocomplete_onselect + } + + if + server.capabilities.completionProvider.resolveProvider + and + not symbol.documentation + then + symbols.items[label].onhover = autocomplete_onhover + end + + symbol_count = symbol_count + 1 + end + + if trigger_char and complete_result then + lsp.in_trigger = true + autocomplete.complete(symbols, function() + lsp.in_trigger = false + end) + else + autocomplete.complete(symbols) + end + end + }) + end + end +end + +--- Send to applicable LSP servers a request for info about a function +--- signatures and display them on a tooltip. +function lsp.request_signature(doc, line, col, forced, fallback) + if not doc.lsp_open then return end + + local char = doc:get_char(line, col-1) + local prev_char = doc:get_char(line, col-2) -- to support ', ' + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + if + server.capabilities.signatureHelpProvider + and + ( + forced + or + ( + server.capabilities.signatureHelpProvider.triggerCharacters + and + #server.capabilities.signatureHelpProvider.triggerCharacters > 0 + and + ( + util.intable( + char, server.capabilities.signatureHelpProvider.triggerCharacters + ) + or + util.intable( + prev_char, + server.capabilities.signatureHelpProvider.triggerCharacters + ) + ) + ) + ) + then + server:push_request('textDocument/signatureHelp', { + params = get_buffer_position_params(doc, line, col), + overwrite = true, + callback = function(server, response) + -- don't show signature if caret position changed + local cline, cchar = doc:get_selection() + if cline ~= line or cchar ~= col then + return + end + + if + response.result + and + response.result.signatures + and + #response.result.signatures > 0 + then + autocomplete.close() + listbox.show_signatures(response.result) + lsp.user_typed = false + elseif fallback then + fallback(doc, line, col) + end + end + }) + break + elseif fallback then + fallback(doc, line, col) + end + end +end + +---Returns the "selection" for the token that includes the provided position. +---@param doc core.doc +---@param line integer +---@param col integer +---@return integer line1 +---@return integer col2 +---@return integer line2 +---@return integer col2 +local function get_token_range(doc, line, col) + local col1 = 0 + for _, _, text in doc.highlighter:each_token(line) do + local text_len = #text + local col2 = col1 + text_len + if col2 >= col then + return line, col1 + 1, line, col2 + 1 + end + col1 = col2 + end + return line, col, line, col+1 +end + +---@type core.node +local help_active_node = nil +---@type core.node +local help_bottom_node = nil +--- Sends a request to applicable LSP servers for information about the +--- symbol where the cursor is placed and shows it on a tooltip. +function lsp.request_hover(doc, line, col, in_tab) + if not doc.lsp_open then return end + + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + if server.capabilities.hoverProvider then + server:push_request('textDocument/hover', { + params = get_buffer_position_params(doc, line, col), + callback = function(server, response) + if response.result and response.result.contents then + local range = response.result.range + local line1, col1, line2, col2 + if range then + line1, col1, line2, col2 = util.toselection(range, doc) + else + line1, col1, line2, col2 = get_token_range(doc, line, col) + end + lsp.hover_position.utf8_range = { line1 = line1, col1 = col1, + line2 = line2, col2 = col2 } + + local content = response.result.contents + local kind = nil + local text = "" + if type(content) == "table" then + if content.value then + text = content.value + if content.kind then kind = content.kind end + else + local texts = {} + for _, element in pairs(content) do + if type(element) == "string" then + table.insert(texts, element) + elseif type(element) == "table" and element.value then + table.insert(texts, element.value) + if not kind and element.kind then kind = element.kind end + end + end + text = table.concat(texts, "\n\n") + end + else -- content should be a string + text = content + end + if text and #text > 0 then + text = text:gsub("^[\n%s]+", ""):gsub("[\n%s]+$", "") + if not in_tab then + if kind == "markdown" then text = util.strip_markdown(text) end + listbox.show_text( + text, + { line = line, col = col } + ) + else + local line1, col1 = translate.start_of_word(doc, line, col) + local line2, col2 = translate.end_of_word(doc, line1, col1) + local title = doc:get_text(line1, col1, line2, col2):gsub("%s*", "") + title = "Help:" .. title .. ".md" + ---@type lsp.helpdoc + local helpdoc = HelpDoc(title, title) + helpdoc:set_text(text) + local helpview = DocView(helpdoc) + helpview.context = "application" + helpview.wrapping_enabled = true + if LineWrapping then + LineWrapping.update_docview_breaks(helpview) + end + if + not help_bottom_node + or + ( + #help_bottom_node.views == 1 + and + not help_active_node:get_node_for_view(help_bottom_node.views[1]) + ) + then + help_active_node = core.root_view:get_active_node_default() + help_bottom_node = help_active_node:split("down", helpview) + else + help_bottom_node:add_view(helpview) + end + end + end + end + end + }) + break + end + end +end + +--- Sends a request to applicable LSP servers for a symbol references +function lsp.request_references(doc, line, col) + if not doc.lsp_open then return end + + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + if server.capabilities.hoverProvider then + local request_params = get_buffer_position_params(doc, line, col) + request_params.context = {includeDeclaration = true} + server:push_request('textDocument/references', { + params = request_params, + callback = function(server, response) + if response.result and #response.result > 0 then + local references, reference_names = get_references_lists(response.result) + core.command_view:enter("Filter References", { + submit = function(text, item) + if item then + local reference = references[item.name] + lsp.goto_location(reference) + end + end, + suggest = function(text) + local res = common.fuzzy_match(reference_names, text) + for i, name in ipairs(res) do + local reference_info = util.split(name, "||") + res[i] = { + text = reference_info[1], + info = reference_info[2], + name = name + } + end + return res + end + }) + else + core.log("[LSP] No references found.") + end + end + }) + break + end + break + end +end + +---Sends a request to applicable LSP servers to retrieve the +---hierarchy of calls for the given function under the cursor. +function lsp.request_call_hierarchy(doc, line, col) + if not doc.lsp_open then return end + + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + if server.capabilities.callHierarchyProvider then + server:push_request('textDocument/prepareCallHierarchy', { + params = get_buffer_position_params(doc, line, col), + callback = function(server, response) + if response.result and #response.result > 0 then + -- TODO: Finish implement call hierarchy functionality + return + end + end + }) + return + end + end + + core.log("[LSP] Call hierarchy not supported.") +end + +---Sends a request to applicable LSP servers to rename a symbol. +---@param doc core.doc +---@param line integer +---@param col integer +---@param new_name string +function lsp.request_symbol_rename(doc, line, col, new_name) + if not doc.lsp_open then return end + + local servers_found = false + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + servers_found = true + local server = lsp.servers_running[name] + if server.capabilities.renameProvider then + local request_params = get_buffer_position_params(doc, line, col) + request_params.newName = new_name + server:push_request('textDocument/rename', { + params = request_params, + callback = function(server, response) + if response.result and #response.result.changes then + for file_uri, changes in pairs(response.result.changes) do + core.log(file_uri .. " " .. #changes) + -- TODO: Finish implement textDocument/rename + end + end + + core.log("%s", json.prettify(json.encode(response))) + end + }) + return + end + end + + if not servers_found then + core.log("[LSP] " .. "No server ready or running") + else + core.log("[LSP] " .. "Symbols rename not supported") + end +end + +---Sends a request to applicable LSP servers to search for symbol on workspace. +---@param doc core.doc +---@param symbol string +function lsp.request_workspace_symbol(doc, symbol) + if not doc.lsp_open then return end + + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + if server.capabilities.workspaceSymbolProvider then + local rs = SymbolResults(symbol) + core.root_view:get_active_node_default():add_view(rs) + server:push_request('workspace/symbol', { + params = { + query = symbol, + -- TODO: implement status notifications but seems not supported + -- by tested lsp servers so far. + -- workDoneToken = "some-identifier", + -- partialResultToken = "some-other-identifier" + }, + callback = function(server, response) + if response.result and #response.result > 0 then + for index, result in ipairs(response.result) do + rs:add_result(result) + if index % 100 == 0 then + coroutine.yield() + rs.list:resize_to_parent() + end + end + rs.list:resize_to_parent() + end + rs:stop_searching() + end + }) + break + end + break + end +end + +--- Request a list of symbols for the given document for easy document +-- navigation and displays them using core.command_view:enter() +function lsp.request_document_symbols(doc) + if not doc.lsp_open then return end + + local servers_found = false + local symbols_retrieved = false + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + servers_found = true + local server = lsp.servers_running[name] + if server.capabilities.documentSymbolProvider then + log(server, "Retrieving document symbols...") + server:push_request('textDocument/documentSymbol', { + params = { + textDocument = { + uri = util.touri(core.project_absolute_path(doc.filename)), + } + }, + callback = function(server, response) + if response.result and response.result and #response.result > 0 then + local symbols, symbol_names = get_symbol_lists(response.result) + core.command_view:enter("Find Symbol", { + submit = function(text, item) + if item then + local symbol = symbols[item.name] + -- The lsp may return a location object with range + -- and uri inside of it or just range as part of + -- the symbol it self. + symbol = symbol.location and symbol.location or symbol + if not symbol.uri then + local line1, col1 = util.toselection(symbol.range, doc) + doc:set_selection(line1, col1, line1, col1) + else + lsp.goto_location(symbol) + end + end + end, + suggest = function(text) + local res = common.fuzzy_match(symbol_names, text) + for i, name in ipairs(res) do + res[i] = { + text = util.split(name, "||")[1], + info = Server.get_symbol_kind(symbols[name].kind), + name = name + } + end + return res + end + }) + end + end + }) + symbols_retrieved = true + break + end + end + + if not servers_found then + core.log("[LSP] " .. "No server running") + elseif not symbols_retrieved then + core.log("[LSP] " .. "Document symbols not supported") + end +end + +--- Format current document if supported by one of the running lsp servers. +function lsp.request_document_format(doc) + if not doc.lsp_open then return end + + local servers_found = false + local format_executed = false + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + servers_found = true + local server = lsp.servers_running[name] + if server.capabilities.documentFormattingProvider then + local trim_trailing_whitespace = false + local trim_newlines = false + if type(config.plugins.trimwhitespace) == "table" + and config.plugins.trimwhitespace.enabled + then + trim_trailing_whitespace = true + trim_newlines = config.plugins.trimwhitespace.trim_empty_end_lines + elseif config.plugins.trimwhitespace then -- Plugin enabled with true + trim_trailing_whitespace = true + trim_newlines = true + end + local indent_type, indent_size, indent_confirmed = doc:get_indent_info() + if not indent_confirmed then + indent_type, indent_size = config.tab_type, config.indent_size + end + server:push_request('textDocument/formatting', { + params = { + textDocument = { + uri = util.touri(core.project_absolute_path(doc.filename)), + }, + options = { + tabSize = indent_size, + insertSpaces = indent_type == "soft", + trimTrailingWhitespace = trim_trailing_whitespace, + insertFinalNewline = false, + trimFinalNewlines = trim_newlines + } + }, + callback = function(server, response) + if response.error and response.error.message then + log(server, "Error formatting: " .. response.error.message) + elseif response.result and #response.result > 0 then + -- Apply edits in reverse, as the ranges don't consider + -- the intermediate states. + -- Consider the TextEdits as already sorted. + -- If there are servers that don't sort their TextEdits, + -- we'll add sorting code. + for i=#response.result,1,-1 do + apply_edit(server, doc, response.result[i], false, false) + end + log(server, "Formatted document") + else + log(server, "Formatting not required") + end + end + }) + format_executed = true + break + end + end + + if not servers_found then + core.log("[LSP] " .. "No server running") + elseif not format_executed then + core.log("[LSP] " .. "Formatting not supported") + end +end + +function lsp.view_document_diagnostics(doc) + local diagnostic_messages = diagnostics.get(core.project_absolute_path(doc.filename)) + if not diagnostic_messages or #diagnostic_messages <= 0 then + core.log("[LSP] %s", "No diagnostic messages found.") + return + end + + local diagnostic_labels = { "Error", "Warning", "Info", "Hint" } + + local indexes, captions = {}, {} + for index, diagnostic in pairs(diagnostic_messages) do + local line1, col1 = util.toselection(diagnostic.range) + local label = diagnostic_labels[diagnostic.severity or diagnostics.severity.ERROR] + .. ": " .. diagnostic.message .. " " + .. tostring(line1) .. ":" .. tostring(col1) + captions[index] = label + indexes[label] = index + end + + core.command_view:enter("Filter Diagnostics", { + submit = function(text, item) + if item then + local diagnostic = diagnostic_messages[item.index] + local line1, col1 = util.toselection(diagnostic.range, doc) + doc:set_selection(line1, col1, line1, col1) + end + end, + suggest = function(text) + local res = common.fuzzy_match(captions, text) + for i, name in ipairs(res) do + local diagnostic = diagnostic_messages[indexes[name]] + local line1, col1 = util.toselection(diagnostic.range) + res[i] = { + text = diagnostics.lintplus_kinds[diagnostic.severity or diagnostics.severity.ERROR] + .. ": " .. diagnostic.message, + info = tostring(line1) .. ":" .. tostring(col1), + index = indexes[name] + } + end + return res + end + }) +end + +function lsp.view_all_diagnostics() + if diagnostics.count <= 0 then + core.log("[LSP] %s", "No diagnostic messages found.") + return + end + + local captions = {} + for _, diagnostic in ipairs(diagnostics.list) do + table.insert( + captions, + core.normalize_to_project_dir(diagnostic.filename) + ) + end + + core.command_view:enter("Filter Files", { + submit = function(text, item) + if item then + core.root_view:open_doc( + core.open_doc( + common.home_expand( + text + ) + ) + ) + end + end, + suggest = function(text) + local res = common.fuzzy_match(captions, text, true) + for i, name in ipairs(res) do + local diagnostics_count = diagnostics.get_messages_count( + core.project_absolute_path(name) + ) + res[i] = { + text = name, + info = "Messages: " .. diagnostics_count + } + end + return res + end + }) +end + +--- Jumps to the definition or implementation of the symbol where the cursor +-- is placed if the LSP server supports it +function lsp.goto_symbol(doc, line, col, implementation) + if not doc.lsp_open then return end + + for _, name in pairs(lsp.get_active_servers(doc.filename, true)) do + local server = lsp.servers_running[name] + + local method = "" + if not implementation then + if server.capabilities.definitionProvider then + method = method .. "definition" + elseif server.capabilities.declarationProvider then + method = method .. "declaration" + elseif server.capabilities.typeDefinitionProvider then + method = method .. "typeDefinition" + else + log(server, "Goto definition not supported") + return + end + else + if server.capabilities.implementationProvider then + method = method .. "implementation" + else + log(server, "Goto implementation not supported") + return + end + end + + -- Send document updates first + lsp.update_document(doc) + + server:push_request("textDocument/" .. method, { + params = get_buffer_position_params(doc, line, col), + callback = function(server, response) + local location = response.result + + if not location or not location.uri and #location == 0 then + core.log("[LSP] No %s found.", method) + return + end + + if not location.uri and #location > 1 then + listbox.clear() + for _, loc in pairs(location) do + local preview, position = get_location_preview(loc) + listbox.append { + text = preview, + info = position, + location = loc + } + end + listbox.show_list(nil, function(doc, item) + lsp.goto_location(item.location) + end) + else + if not location.uri then + location = location[1] + end + lsp.goto_location(location) + end + end + }) + end +end + +-- +-- Thread to process server requests and responses +-- without blocking entirely the editor. +-- +core.add_thread(function() + while true do + local servers_running = false + for _,server in pairs(lsp.servers_running) do + -- Send raw data to server which is usually big and slow in a + -- non blocking way by creating a coroutine just for it. + if #server.raw_list > 0 then + local raw_send = coroutine.create(function() + server:process_raw() + end) + coroutine.resume(raw_send) + while coroutine.status(raw_send) ~= "dead" do + -- while sending raw request we only read from lsp to not + -- conflict with the written raw data so remember no calls + -- here to: server:process_client_responses() + -- or server:process_notifications() + server:process_errors(config.plugins.lsp.log_server_stderr) + server:process_responses() + coroutine.yield() + coroutine.resume(raw_send) + end + end + + if not config.plugins.lsp.more_yielding then + server:process_notifications() + server:process_requests() + server:process_responses() + server:process_client_responses() + else + server:process_notifications() + coroutine.yield() + server:process_requests() + coroutine.yield() + server:process_responses() + server:process_client_responses() + coroutine.yield() + end + + server:process_errors(config.plugins.lsp.log_server_stderr) + + servers_running = true + end + + if servers_running then + local wait = 0.01 + if config.plugins.lsp.more_yielding then wait = 0 end + coroutine.yield(wait) + else + coroutine.yield(2) + end + end +end) + +-- +-- Events patching +-- +local doc_load = Doc.load +local doc_save = Doc.save +local doc_on_close = Doc.on_close +local doc_raw_insert = Doc.raw_insert +local doc_raw_remove = Doc.raw_remove +local root_view_on_text_input = RootView.on_text_input +local root_view_on_mouse_moved = RootView.on_mouse_moved + +function Doc:load(...) + local res = doc_load(self, ...) + -- skip new files + if self.filename and config.plugins.lsp.autostart_server then + diagnostics.lintplus_init_doc(self) + core.add_thread(function() + lsp.start_server(self.filename, core.project_dir) + lsp.open_document(self) + end) + end + return res +end + +function Doc:save(...) + local old_filename = self.filename + local res = doc_save(self, ...) + if old_filename ~= self.filename then + -- seems to be a new document so we send open notification + diagnostics.lintplus_init_doc(self) + core.add_thread(function() + lsp.open_document(self) + end) + else + core.add_thread(function() + lsp.update_document(self) + lsp.save_document(self) + end) + end + return res +end + +function Doc:on_close() + doc_on_close(self) + + -- skip new files + if not self.filename then return end + core.add_thread(function() + lsp.close_document(self) + end) + + if not config.plugins.lsp.stop_unneeded_servers then + return + end + + -- Check if any running lsp servers is not needed anymore and stop it + for name, server in pairs(lsp.servers_running) do + local doc_found = false + for _, docu in ipairs(core.docs) do + if docu.filename then + if common.match_pattern(docu.filename, server.file_patterns) then + doc_found = true + break + end + end + end + + if not doc_found and not server.exit_timer then + local t = Timer(server.quit_timeout * 1000, true) + t.on_timer = function() + server:exit() + core.log("[LSP] stopped %s", name) + lsp.servers_running = util.table_remove_key(lsp.servers_running, name) + end + t:start() + server.exit_timer = t + end + end +end + +local function add_change(self, text, line1, col1, line2, col2) + if not self.lsp_changes then + self.lsp_changes = {} + self.lsp_version = 0 + end + + local change = { range = {}, text = text} + change.range["start"] = {line = line1-1, character = col1-1} + change.range["end"] = {line = line2-1, character = col2-1} + + for _, name in pairs(lsp.get_active_servers(self.filename, true)) do + local server = lsp.servers_running[name] + if not self.lsp_changes[server] then + self.lsp_changes[server] = {} + end + table.insert(self.lsp_changes[server], change) + end + + -- TODO: this should not be needed but changing documents rapidly causes this + if type(self.lsp_version) ~= 'nil' then + self.lsp_version = self.lsp_version + 1 + else + self.lsp_version = 1 + end +end + +function Doc:raw_insert(line, col, text, undo_stack, time) + doc_raw_insert(self, line, col, text, undo_stack, time) + + -- skip new files + if not self.filename then return end + + col = util.doc_utf8_to_utf16(self, line, col) + + if self.lsp_open then + add_change(self, text, line, col, line, col) + lsp.update_document(self) + elseif #lsp.get_active_servers(self.filename, true) > 0 then + add_change(self, text, line, col, line, col) + end +end + +function Doc:raw_remove(line1, col1, line2, col2, undo_stack, time) + local lcol1 = util.doc_utf8_to_utf16(self, line1, col1) + local lcol2 = util.doc_utf8_to_utf16(self, line2, col2) + + doc_raw_remove(self, line1, col1, line2, col2, undo_stack, time) + + -- skip new files + if not self.filename then return end + + if self.lsp_open then + add_change(self, "", line1, lcol1, line2, lcol2) + lsp.update_document(self) + elseif #lsp.get_active_servers(self.filename, true) > 0 then + add_change(self, "", line1, lcol1, line2, lcol2) + end +end + +function RootView:on_text_input(text) + root_view_on_text_input(self, text) + + -- this part should actually trigger after Doc:raw_insert and Doc:raw_remove + -- so it is safe to trigger autocompletion from here. + local av = get_active_docview() + + if av then + lsp.user_typed = true + lsp.update_document(av.doc, true) + end +end + +function RootView:on_mouse_moved(x, y, dx, dy) + root_view_on_mouse_moved(self, x, y, dx, dy) + + if not config.plugins.lsp.mouse_hover then return end + + lsp.hover_position.x = x + lsp.hover_position.y = y + if lsp.hover_position.triggered then + local doc, line, col = lsp.get_hovered_location(x, y) + if doc == lsp.hover_position.doc and lsp.hover_position.utf8_range then + local utf8_range = lsp.hover_position.utf8_range + local line1, col1, line2, col2 = utf8_range.line1, utf8_range.col1, + utf8_range.line2, utf8_range.col2 + if (line > line1 or (line == line1 and col >= col1)) and + (line < line2 or (line == line2 and col <= col2)) then + return + end + end + listbox.hide() + lsp.hover_position.triggered = false + end + lsp.hover_timer:set_interval(config.plugins.lsp.mouse_hover_delay) + lsp.hover_timer:restart() +end + +-- +-- Add status view item to show document diagnostics count +-- +core.status_view:add_item({ + predicate = function() + local dv = get_active_docview() + if dv then + local filename = core.project_absolute_path(dv.doc.filename) + local diagnostic_messages = diagnostics.get(filename) + if diagnostic_messages and #diagnostic_messages > 0 then + return true + end + end + return false + end, + name = "lsp:diagnostics", + alignment = StatusView.Item.RIGHT, + get_item = function() + local dv = get_active_docview() + if dv then + local filename = core.project_absolute_path(dv.doc.filename) + local diagnostic_messages = diagnostics.get(filename) + + if diagnostic_messages and #diagnostic_messages > 0 then + return { + style.warn, + style.icon_font, "!", + style.font, " " .. tostring(#diagnostic_messages) + } + end + end + + return {} + end, + command = "lsp:view-document-diagnostics", + position = 1, + tooltip = "LSP Diagnostics", + separator = core.status_view.separator2 +}) + +-- +-- Register autocomplete icons +-- +if autocomplete.add_icon then + local autocomplete_icons = { + { name = "Text", color = "keyword", icon = '' }, -- U+F77E + { name = "Method", color = "function", icon = '' }, -- U+F6A6 + { name = "Function", color = "function", icon = '' }, -- U+F794 + { name = "Constructor", color = "literal", icon = '' }, -- U+F423 + { name = "Field", color = "keyword2", icon = 'ﰠ' }, -- U+FC20 + { name = "Variable", color = "keyword2", icon = '' }, -- U+F52A + { name = "Class", color = "literal", icon = 'ﴯ' }, -- U+FD2F + { name = "Interface", color = "literal", icon = '' }, -- U+F0E8 + { name = "Module", color = "literal", icon = '' }, -- U+F487 + { name = "Property", color = "keyword2", icon = 'ﰠ' }, -- U+FC20 + { name = "Unit", color = "number", icon = '塞' }, -- U+F96C + { name = "Value", color = "string", icon = '' }, -- U+F89F + { name = "Enum", color = "keyword2", icon = '' }, -- U+F15D + { name = "Keyword", color = "keyword", icon = '' }, -- U+F80A + { name = "Snippet", color = "keyword", icon = '' }, -- U+F44F + { name = "Color", color = "string", icon = '' }, -- U+F8D7 + { name = "File", color = "string", icon = '' }, -- U+F718 + { name = "Reference", color = "string", icon = '' }, -- U+F706 + { name = "Folder", color = "string", icon = '' }, -- U+F74A + { name = "EnumMember", color = "number", icon = '' }, -- U+F15D + { name = "Constant", color = "number", icon = '' }, -- U+F8FE + { name = "Struct", color = "keyword2", icon = 'פּ' }, -- U+FB44 + { name = "Event", color = "keyword", icon = '' }, -- U+F0E7 + { name = "Operator", color = "operator", icon = '' }, -- U+F694 + { name = "Unknown", color = "keyword", icon = '' }, -- U+F128 + { name = "TypeParameter", color = "literal", icon = '' } -- U+EA92 + } + + -- We add the font here to let it automatically scale by the scale plugin + style.syntax_fonts["lsp_symbols"] = renderer.font.load( + USERDIR .. "/plugins/lsp/fonts/symbols.ttf", + 15 * SCALE + ) + + for _, icon in ipairs(autocomplete_icons) do + autocomplete.add_icon( + icon.name, icon.icon, style.syntax_fonts["lsp_symbols"], icon.color + ) + end +end + +-- +-- Commands +-- +command.add( + function() + local dv = get_active_docview() + return dv ~= nil and dv.doc.lsp_open, dv and dv.doc or nil + end, { + + ["lsp:complete"] = function(doc) + local line1, col1, line2, col2 = doc:get_selection() + if line1 == line2 and col1 == col2 then + lsp.request_completion(doc, line1, col1, true) + end + end, + + ["lsp:goto-definition"] = function(doc) + local line1, col1, line2 = doc:get_selection() + if line1 == line2 then + lsp.goto_symbol(doc, line1, col1) + end + end, + + ["lsp:goto-implementation"] = function(doc) + local line1, col1, line2 = doc:get_selection() + if line1 == line2 then + lsp.goto_symbol(doc, line1, col1, true) + end + end, + + ["lsp:show-signature"] = function(doc) + local line1, col1, line2, col2 = doc:get_selection() + if line1 == line2 and col1 == col2 then + lsp.request_signature(doc, line1, col1, true) + end + end, + + ["lsp:show-symbol-info"] = function(doc) + local line1, col1, line2 = doc:get_selection() + if line1 == line2 then + lsp.request_hover(doc, line1, col1) + end + end, + + ["lsp:show-symbol-info-in-tab"] = function(doc) + local line1, col1, line2 = doc:get_selection() + if line1 == line2 then + lsp.request_hover(doc, line1, col1, true) + end + end, + + ["lsp:view-call-hierarchy"] = function(doc) + local line1, col1, line2 = doc:get_selection() + if line1 == line2 then + lsp.request_call_hierarchy(doc, line1, col1) + end + end, + + ["lsp:view-document-symbols"] = function(doc) + lsp.request_document_symbols(doc) + end, + + ["lsp:format-document"] = function(doc) + lsp.request_document_format(doc) + end, + + ["lsp:view-document-diagnostics"] = function(doc) + lsp.view_document_diagnostics(doc) + end, + + ["lsp:rename-symbol"] = function(doc) + local symbol = doc:get_text(doc:get_selection()) + local line1, col1, line2 = doc:get_selection() + if #symbol > 0 and line1 == line2 then + core.command_view:enter("New Symbol Name", { + text = symbol, + submit = function(new_name) + lsp.request_symbol_rename(doc, line1, col1, new_name) + end + }) + else + core.log("Please select a symbol on the document to rename.") + end + end, + + ["lsp:find-references"] = function(doc) + local line1, col1, line2 = doc:get_selection() + if line1 == line2 then + lsp.request_references(doc, line1, col1) + end + end +}) + +command.add(nil, { + ["lsp:view-all-diagnostics"] = function() + lsp.view_all_diagnostics() + end, + + ["lsp:find-workspace-symbol"] = function() + local dv = get_active_docview() + local doc = dv and dv.doc or nil + local symbol = doc and doc:get_text(doc:get_selection()) or "" + core.command_view:enter("Find Workspace Symbol", { + text = symbol, + submit = function(query) + lsp.request_workspace_symbol(doc, query) + end + }) + end, + + ["lsp:toggle-diagnostics"] = function() + if not diagnostics.lintplus_found then + core.error("[LSP] Please install lintplus for diagnostics rendering.") + return + end + lsp.toggle_diagnostics() + end, + + ["lsp:stop-servers"] = function() + lsp.stop_servers() + end, + + ["lsp:start-servers"] = function() + lsp.start_servers() + end, + + ["lsp:restart-servers"] = function() + lsp.stop_servers() + lsp.start_servers() + end +}) + +-- +-- Default Keybindings +-- +keymap.add { + ["ctrl+space"] = "lsp:complete", + ["ctrl+shift+space"] = "lsp:show-signature", + ["alt+a"] = "lsp:show-symbol-info", + ["alt+shift+a"] = "lsp:show-symbol-info-in-tab", + ["alt+d"] = "lsp:goto-definition", + ["alt+shift+d"] = "lsp:goto-implementation", + ["alt+s"] = "lsp:view-document-symbols", + ["alt+shift+s"] = "lsp:find-workspace-symbol", + ["alt+f"] = "lsp:find-references", + ["alt+shift+f"] = "lsp:format-document", + ["alt+e"] = "lsp:view-document-diagnostics", + ["ctrl+alt+e"] = "lsp:view-all-diagnostics", + ["alt+shift+e"] = "lsp:toggle-diagnostics", + ["alt+c"] = "lsp:view-call-hierarchy", + ["alt+r"] = "lsp:rename-symbol", +} + +-- +-- Register context menu items +-- +local function lsp_predicate(_, _, also_in_symbol) + local dv = get_active_docview() + if dv then + local doc = dv.doc + + if #lsp.get_active_servers(doc.filename, true) < 1 then + return false + elseif not also_in_symbol then + return true + end + + -- Make sure the cursor is place near a document symbol (word) + local linem, colm = doc:get_selection() + local linel, coll = doc:position_offset(linem, colm, translate.start_of_word) + local liner, colr = doc:position_offset(linem, colm, translate.end_of_word) + + local word_left = doc:get_text(linel, coll, linem, colm) + local word_right = doc:get_text(linem, colm, liner, colr) + + if #word_left > 0 or #word_right > 0 then + return true + end + end + return false +end + +local function lsp_predicate_symbols() + return lsp_predicate(nil, nil, true) +end + +local menu_found, menu = pcall(require, "plugins.contextmenu") +if menu_found then + menu:register(lsp_predicate_symbols, { + menu.DIVIDER, + { text = "Show Symbol Info", command = "lsp:show-symbol-info" }, + { text = "Show Symbol Info in Tab", command = "lsp:show-symbol-info-in-tab" }, + { text = "Goto Definition", command = "lsp:goto-definition" }, + { text = "Goto Implementation", command = "lsp:goto-implementation" }, + { text = "Find References", command = "lsp:find-references" } + }) + + menu:register(lsp_predicate, { + menu.DIVIDER, + { text = "Document Symbols", command = "lsp:view-document-symbols" }, + { text = "Document Diagnostics", command = "lsp:view-document-diagnostics" }, + { text = "Toggle Diagnostics", command = "lsp:toggle-diagnostics" }, + { text = "Format Document", command = "lsp:format-document" }, + }) + + local menu_show = menu.show + function menu:show(...) + lsp.hover_timer:stop() + lsp.hover_timer:reset() + listbox.hide() + lsp.hover_position.triggered = false + menu_show(self, ...) + end +end + + +return lsp + diff --git a/debian/extra/plugins/lsp/json.lua b/debian/extra/plugins/lsp/json.lua new file mode 100644 index 0000000..eb36b8f --- /dev/null +++ b/debian/extra/plugins/lsp/json.lua @@ -0,0 +1,532 @@ +-- +-- json.lua +-- Origin: https://github.com/rxi/json.lua +-- +-- Copyright (c) 2020 rxi +-- +-- Permission is hereby granted, free of charge, to any person obtaining a copy of +-- this software and associated documentation files (the "Software"), to deal in +-- the Software without restriction, including without limitation the rights to +-- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +-- of the Software, and to permit persons to whom the Software is furnished to do +-- so, subject to the following conditions: +-- +-- The above copyright notice and this permission notice shall be included in all +-- copies or substantial portions of the Software. +-- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +-- SOFTWARE. +-- + +local json = { _version = "0.1.2" } + +local error_message = "" + +-- Lets us explicitly add null values to table elements +json.null = "{{json::null}}" + +-- Treat numbers longer than 14 digits as a string by adding this to the +-- beginning of the string for encoder to recognize. This prevents any data +-- loss due to lua 5.2 not supporting big integer numbers and converting big +-- integers to floats. The drawback is that the user should manually convert +-- these strings to a number. Numbers with less than 15 digits are not affected. +json.number_flag = "{{json::num}}" +local number_flag_len = #json.number_flag + +------------------------------------------------------------------------------- +-- Encode +------------------------------------------------------------------------------- + +local encode + +local escape_char_map = { + [ "\\" ] = "\\", + [ "\"" ] = "\"", + [ "\b" ] = "b", + [ "\f" ] = "f", + [ "\n" ] = "n", + [ "\r" ] = "r", + [ "\t" ] = "t", +} + +local escape_char_map_inv = { [ "/" ] = "/" } +for k, v in pairs(escape_char_map) do + escape_char_map_inv[v] = k +end + + +local function escape_char(c) + return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte())) +end + + +local function encode_nil(val) + return "null" +end + + +local function encode_table(val, stack) + local res = {} + stack = stack or {} + + -- Circular reference? + if stack[val] then error("circular reference") end + + stack[val] = true + + if rawget(val, 1) ~= nil or next(val) == nil then + -- Treat as array -- check keys are valid and it is not sparse + local n = 0 + for k in pairs(val) do + if type(k) ~= "number" then + error("invalid table: mixed or invalid key types") + end + n = n + 1 + end + if n ~= #val then + error("invalid table: sparse array") + end + -- Encode + for i, v in ipairs(val) do + table.insert(res, encode(v, stack)) + end + stack[val] = nil + if #res > 0 then + return "[" .. table.concat(res, ",") .. "]" + else + return "{}" + end + + else + -- Treat as an object + for k, v in pairs(val) do + if type(k) ~= "string" then + error("invalid table: mixed or invalid key types") + end + table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) + end + stack[val] = nil + return "{" .. table.concat(res, ",") .. "}" + end +end + + +local function encode_string(val) + if val == json.null then + return "null" + elseif + #val > number_flag_len + and + string.sub(val, 1, number_flag_len) == json.number_flag + then + local num = string.sub(val, number_flag_len+1) + return num + end + return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' +end + + +local function encode_number(val) + -- Check for NaN, -inf and inf + if val ~= val or val <= -math.huge or val >= math.huge then + error("unexpected number value '" .. tostring(val) .. "'") + end + return string.format("%.14g", val) +end + + +local type_func_map = { + [ "nil" ] = encode_nil, + [ "table" ] = encode_table, + [ "string" ] = encode_string, + [ "number" ] = encode_number, + [ "boolean" ] = tostring, +} + + +encode = function(val, stack) + local t = type(val) + local f = type_func_map[t] + if f then + return f(val, stack) + end + error("unexpected type '" .. t .. "'") +end + + +function json.encode(val, prettify) + local out = ( encode(val) ) + if prettify then + return json.prettify(out) + end + return out +end + + +------------------------------------------------------------------------------- +-- Decode +------------------------------------------------------------------------------- + +local parse + +local function create_set(...) + local res = {} + for i = 1, select("#", ...) do + res[ select(i, ...) ] = true + end + return res +end + +local space_chars = create_set(" ", "\t", "\r", "\n") +local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") +local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") +local literals = create_set("true", "false", "null") + +local literal_map = { + [ "true" ] = true, + [ "false" ] = false, + [ "null" ] = nil, +} + +local function decode_error(str, idx, msg) + local line_count = 1 + local col_count = 1 + for i = 1, idx - 1 do + col_count = col_count + 1 + if str:sub(i, i) == "\n" then + line_count = line_count + 1 + col_count = 1 + end + end + error_message = string.format("%s at line %d col %d", msg, line_count, col_count) +end + + +local function next_char(str, idx, set, negate) + if type(idx) ~= "number" then + decode_error(str, #str, "invalid json string") + return #str + 1 + end + for i = idx, #str do + if set[str:sub(i, i)] ~= negate then + return i + end + end + return #str + 1 +end + + +local function codepoint_to_utf8(n) + -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa + local f = math.floor + if n <= 0x7f then + return string.char(n) + elseif n <= 0x7ff then + return string.char(f(n / 64) + 192, n % 64 + 128) + elseif n <= 0xffff then + return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) + elseif n <= 0x10ffff then + return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, + f(n % 4096 / 64) + 128, n % 64 + 128) + end + error( string.format("invalid unicode codepoint '%x'", n) ) +end + + +local function parse_unicode_escape(s) + local n1 = tonumber( s:sub(1, 4), 16 ) + local n2 = tonumber( s:sub(7, 10), 16 ) + -- Surrogate pair? + if n2 then + return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) + else + return codepoint_to_utf8(n1) + end +end + + +local function parse_string(str, i) + local res = "" + local j = i + 1 + local k = j + + while j <= #str do + local x = str:byte(j) + + if x < 32 then + decode_error(str, j, "control character in string") + + elseif x == 92 then -- `\`: Escape + res = res .. str:sub(k, j - 1) + j = j + 1 + local c = str:sub(j, j) + if c == "u" then + local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1) + or str:match("^%x%x%x%x", j + 1) + or decode_error(str, j - 1, "invalid unicode escape in string") + res = res .. parse_unicode_escape(hex) + j = j + #hex + else + if not escape_chars[c] then + decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string") + end + res = res .. escape_char_map_inv[c] + end + k = j + 1 + + elseif x == 34 then -- `"`: End of string + res = res .. str:sub(k, j - 1) + return res, j + 1 + end + + j = j + 1 + end + + decode_error(str, i, "expected closing quote for string") +end + + +local function parse_number(str, i) + local x = next_char(str, i, delim_chars) + local s = str:sub(i, x - 1) + local n = nil + if #s > 14 then + n = json.number_flag .. s + else + n = tonumber(s) + end + if not n then + decode_error(str, i, "invalid number '" .. s .. "'") + end + return n, x +end + + +local function parse_literal(str, i) + local x = next_char(str, i, delim_chars) + local word = str:sub(i, x - 1) + if not literals[word] then + decode_error(str, i, "invalid literal '" .. word .. "'") + end + return literal_map[word], x +end + + +local function parse_array(str, i) + local res = {} + local n = 1 + i = i + 1 + while 1 do + local x + i = next_char(str, i, space_chars, true) + -- Empty / end of array? + if str:sub(i, i) == "]" then + i = i + 1 + break + end + -- Read token + x, i = parse(str, i) + res[n] = x + n = n + 1 + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "]" then break end + if chr ~= "," then decode_error(str, i, "expected ']' or ','") end + end + return res, i +end + + +local function parse_object(str, i) + local res = {} + i = i + 1 + while 1 do + local key, val + i = next_char(str, i, space_chars, true) + -- Empty / end of object? + if str:sub(i, i) == "}" then + i = i + 1 + break + end + -- Read key + if str:sub(i, i) ~= '"' then + decode_error(str, i, "expected string for key") + end + key, i = parse(str, i) + -- Read ':' delimiter + i = next_char(str, i, space_chars, true) + if str:sub(i, i) ~= ":" then + decode_error(str, i, "expected ':' after key") + end + i = next_char(str, i + 1, space_chars, true) + -- Read value + val, i = parse(str, i) + -- Set + res[key] = val + -- Next token + i = next_char(str, i, space_chars, true) + local chr = str:sub(i, i) + i = i + 1 + if chr == "}" then break end + if chr ~= "," then decode_error(str, i, "expected '}' or ','") end + end + return res, i +end + + +local char_func_map = { + [ '"' ] = parse_string, + [ "0" ] = parse_number, + [ "1" ] = parse_number, + [ "2" ] = parse_number, + [ "3" ] = parse_number, + [ "4" ] = parse_number, + [ "5" ] = parse_number, + [ "6" ] = parse_number, + [ "7" ] = parse_number, + [ "8" ] = parse_number, + [ "9" ] = parse_number, + [ "-" ] = parse_number, + [ "t" ] = parse_literal, + [ "f" ] = parse_literal, + [ "n" ] = parse_literal, + [ "[" ] = parse_array, + [ "{" ] = parse_object, +} + + +parse = function(str, idx) + local chr = str:sub(idx, idx) + local f = char_func_map[chr] + if f then + return f(str, idx) + end + decode_error(str, idx, "unexpected character '" .. chr .. "'") +end + +function json.last_error() + return error_message +end + +function json.decode(str) + if type(str) ~= "string" then + error("expected argument of type string, got " .. type(str)) + end + error_message = "" + local res, idx = parse(str, next_char(str, 1, space_chars, true)) + idx = next_char(str, idx, space_chars, true) + if idx <= #str then + decode_error(str, idx, "trailing garbage") + end + if error_message ~= "" then + return false + end + return res +end + +local function indent(code, level, indent_width) + return string.rep(" ", level * indent_width) .. code +end + +--- Implemented some json prettifier but not a parser so +--- don't expect it to give you parsing errors :D +--- @param text string The json string +--- @param indent_width? integer The amount of spaces per indentation +--- @return string +function json.prettify(text, indent_width) + if type(text) ~= "string" then + return "" + end + + local out = "" + indent_width = indent_width or 2 + + local indent_level = 0 + local reading_literal = false + local previous_was_escape = false + local inside_string = false + local in_value = false + local last_was_bracket = false + local string_char = "" + local last_char = "" + + for char in text:gmatch(".") do + if (char == "{" or char == "[") and not inside_string then + if not in_value or last_was_bracket then + out = out .. indent(char, indent_level, indent_width) .. "\n" + else + out = out .. char .. "\n" + end + last_was_bracket = true + in_value = false + indent_level = indent_level + 1 + elseif (char == '"' or char == "'") and not inside_string then + inside_string = true + string_char = char + if not in_value then + out = out .. indent(char, indent_level, indent_width) + else + out = out .. char + end + elseif inside_string then + local pe_set = false + if char == "\\" and previous_was_escape then + previous_was_escape = false + elseif char == "\\" then + previous_was_escape = true + pe_set = true + end + out = out .. char + if char == string_char and not previous_was_escape then + inside_string = false + elseif previous_was_escape and not pe_set then + previous_was_escape = false + end + elseif char == ":" then + in_value = true + last_was_bracket = false + out = out .. char .. " " + elseif char == "," then + in_value = false + reading_literal = false + out = out .. char .. "\n" + elseif char == "}" or char == "]" then + indent_level = indent_level - 1 + if + (char == "}" and last_char == "{") + or + (char == "]" and last_char == "[") + then + out = out:gsub("%s*\n$", "") .. char + else + out = out .. "\n" .. indent(char, indent_level, indent_width) + end + elseif not char:match("%s") and not reading_literal then + reading_literal = true + if not in_value or last_was_bracket then + out = out .. indent(char, indent_level, indent_width) + last_was_bracket = false + else + out = out .. char + end + elseif not char:match("%s") then + out = out .. char + end + + if not char:match("%s") then + last_char = char + end + end + + return out +end + + +return json diff --git a/debian/extra/plugins/lsp/listbox.lua b/debian/extra/plugins/lsp/listbox.lua new file mode 100644 index 0000000..33284b0 --- /dev/null +++ b/debian/extra/plugins/lsp/listbox.lua @@ -0,0 +1,580 @@ +-- A configurable listbox that can be used as tooltip, selection box and +-- selection box with fuzzy search, this may change in the future. +-- +-- @note This code is a readaptation of autocomplete plugin from rxi :) +-- +-- TODO implement select box with fuzzy search + +local core = require "core" +local common = require "core.common" +local command = require "core.command" +local style = require "core.style" +local keymap = require "core.keymap" +local util = require "plugins.lsp.util" +local RootView = require "core.rootview" +local DocView = require "core.docview" + +---@class lsp.listbox.item +---@field text string +---@field info string +---@field on_draw fun(item:lsp.listbox.item, x:number, y:number, calc_only?:boolean):number + +---@alias lsp.listbox.callback fun(doc: core.doc, item: lsp.listbox.item) + +---@class lsp.listbox.signature_param +---@field label string + +---@class lsp.listbox.signature +---@field label string +---@field activeParameter? integer +---@field activeSignature? integer +---@field parameters lsp.listbox.signature_param[] + +---@class lsp.listbox.signature_list +---@field activeParameter? integer +---@field activeSignature? integer +---@field signatures lsp.listbox.signature[] + +---@class lsp.listbox.position +---@field line integer +---@field col integer + +---@class lsp.listbox +local listbox = {} + +---@class lsp.listbox.settings +---@field items lsp.listbox.item[] +---@field shown_items lsp.listbox.item[] +---@field selected_item_idx integer +---@field show_items_count boolean +---@field max_height integer +---@field active_view core.docview | nil +---@field line integer | nil +---@field col integer | nil +---@field last_line integer | nil +---@field last_col integer | nil +---@field callback lsp.listbox.callback | nil +---@field is_list boolean +---@field has_fuzzy_search boolean +---@field above_text boolean +local settings = { + items = {}, + shown_items = {}, + selected_item_idx = 1, + show_items_count = false, + max_height = 6, + active_view = nil, + line = nil, + col = nil, + last_line = nil, + last_col = nil, + callback = nil, + is_list = false, + has_fuzzy_search = false, + above_text = false, +} + +local mt = { __tostring = function(t) return t.text end } + +-------------------------------------------------------------------------------- +-- Private functions +-------------------------------------------------------------------------------- + +---@return core.docview | nil +local function get_active_view() + if getmetatable(core.active_view) == DocView then + return core.active_view + end +end + +---@param active_view core.docview +---@return number x +---@return number y +---@return number width +---@return number height +local function get_suggestions_rect(active_view) + if #settings.shown_items == 0 then + listbox.hide() + return 0, 0, 0, 0 + end + + local line, col + if settings.line then + line, col = settings.line, settings.col + else + line, col = active_view.doc:get_selection() + end + + -- Validate line against current view because there can be cases + -- when user rapidly switches between tabs causing the deferred draw + -- to be called late and the current document view already changed. + if line > #active_view.doc.lines then + listbox.hide() + return 0, 0, 0, 0 + end + + local x, y = active_view:get_line_screen_position(line) + + -- This function causes tokenizer to fail if given line is greater than + -- the amount of lines the document holds, so validation above is needed. + x = x + active_view:get_col_x_offset(line, col) + + local padding_x = style.padding.x + local padding_y = style.padding.y + + if settings.above_text and line > 1 then + y = y - active_view:get_line_height() - style.padding.y + else + y = y + active_view:get_line_height() + style.padding.y + end + + local font = settings.is_list and active_view:get_font() or style.font + local text_height = font:get_height() + + local max_width = 0 + for _, item in ipairs(settings.shown_items) do + local w = 0 + if item.on_draw then + w = item.on_draw(item, 0, 0, true) + else + w = font:get_width(item.text) + if item.info then + w = w + style.font:get_width(item.info) + style.padding.x + end + end + max_width = math.max(max_width, w) + end + + local max_items = #settings.shown_items + if settings.is_list and max_items > settings.max_height then + max_items = settings.max_height + end + + -- additional line to display total items + if settings.show_items_count then + max_items = max_items + 1 + end + + if max_width < 150 then + max_width = 150 + end + + local height = max_items * (text_height + (padding_y/4)) + (padding_y*2) + local width = max_width + padding_x * 2 + + x = x - padding_x + y = y - padding_y + + local win_w = core.root_view.size.x + if (width/win_w*100) >= 85 and (width+style.padding.x*4) < win_w then + x = win_w - width - style.padding.x*2 + elseif width > (win_w - x) then + x = x - (width - (win_w - x)) + if x < 0 then + x = 0 + end + end + + return x, y, width, height +end + +---@param av core.docview +local function draw_listbox(av) + if #settings.shown_items <= 0 then + return + end + + -- draw background rect + local rx, ry, rw, rh = get_suggestions_rect(av) + + -- draw border + if not settings.is_list then + local border_width = 1 + renderer.draw_rect( + rx - border_width, + ry - border_width, + rw + (border_width * 2), + rh + (border_width * 2), + style.divider + ) + end + + renderer.draw_rect(rx, ry, rw, rh, style.background3) + + local padding_x = style.padding.x + local padding_y = style.padding.y + + -- draw text + local font = settings.is_list and av:get_font() or style.font + local line_height = font:get_height() + (padding_y / 4) + local y = ry + padding_y + + local max_height = settings.max_height + + local show_count = ( + #settings.shown_items <= max_height or not settings.is_list + ) and + #settings.shown_items or max_height + + local start_index = settings.selected_item_idx > max_height and + (settings.selected_item_idx-(max_height-1)) or 1 + + for i=start_index, start_index+show_count-1, 1 do + if not settings.shown_items[i] then + break + end + + local item = settings.shown_items[i] + + if item.on_draw then + item.on_draw(item, rx + padding_x, y) + else + local color = (i == settings.selected_item_idx and settings.is_list) and + style.accent or style.text + + common.draw_text( + font, color, item.text, "left", + rx + padding_x, y, rw, line_height + ) + + if item.info then + color = (i == settings.selected_item_idx and settings.is_list) and + style.text or style.dim + + common.draw_text( + style.font, color, item.info, "right", + rx, y, rw - padding_x, line_height + ) + end + end + y = y + line_height + end + + if settings.show_items_count then + renderer.draw_rect(rx, y, rw, 2, style.caret) + renderer.draw_rect(rx, y+2, rw, line_height, style.background) + common.draw_text( + style.font, + style.accent, + "Items", + "left", + rx + padding_x, y, rw, line_height + ) + common.draw_text( + style.font, + style.accent, + tostring(settings.selected_item_idx) .. "/" .. tostring(#settings.shown_items), + "right", + rx, y, rw - padding_x, line_height + ) + end +end + +---Set the document position where the listbox will be draw. +---@param position? lsp.listbox.position +local function set_position(position) + if type(position) == "table" then + settings.line = position.line + settings.col = position.col + else + settings.line = nil + settings.col = nil + end +end + +-------------------------------------------------------------------------------- +-- Public functions +-------------------------------------------------------------------------------- + +---@param elements lsp.listbox.item[] +function listbox.add(elements) + if type(elements) == "table" and #elements > 0 then + local items = {} + for _, element in pairs(elements) do + table.insert(items, setmetatable(element, mt)) + end + settings.items = items + end +end + +function listbox.clear() + settings.items = {} + settings.selected_item_idx = 1 + settings.shown_items = {} + settings.line = nil + settings.col = nil +end + +---@param element lsp.listbox.item +function listbox.append(element) + table.insert(settings.items, setmetatable(element, mt)) +end + +function listbox.hide() + settings.active_view = nil + settings.line = nil + settings.col = nil + settings.selected_item_idx = 1 + settings.shown_items = {} + core.redraw = true +end + +---@param is_list? boolean +---@param position? lsp.listbox.position +function listbox.show(is_list, position) + set_position(position) + + local active_view = get_active_view() + if active_view then + settings.active_view = active_view + settings.last_line, settings.last_col = active_view.doc:get_selection() + if settings.items and #settings.items > 0 then + settings.is_list = is_list or false + settings.shown_items = settings.items + end + end + core.redraw = true +end + +---@param text string +---@param position? lsp.listbox.position +function listbox.show_text(text, position) + if text and type("text") == "string" then + local win_w = core.root_view.size.x - style.padding.x * 6 + text = util.wrap_text(text, style.font, win_w) + + local items = {} + for result in string.gmatch(text.."\n", "(.-)\n") do + table.insert(items, {text = result}) + end + listbox.add(items) + end + + listbox.show(false, position) +end + +---@param items lsp.listbox.item[] +---@param callback lsp.listbox.callback +---@param position? lsp.listbox.position +function listbox.show_list(items, callback, position) + listbox.add(items) + + if callback then + settings.callback = callback + end + + listbox.show(true, position) +end + +---@param signatures lsp.listbox.signature_list +---@param position? lsp.listbox.position +function listbox.show_signatures(signatures, position) + local active_parameter = nil + local active_signature = nil + + if signatures.activeParameter then + active_parameter = signatures.activeParameter + 1 + end + + if signatures.activeSignature then + active_signature = signatures.activeSignature + 1 + end + + local signatures_count = #signatures.signatures + + local items = {} + for index, signature in ipairs(signatures.signatures) do + table.insert(items, { + text = signature.label, + signature = signature, + on_draw = function(item, x, y, calc_only) + local width = 0 + local height = style.font:get_height() + + if item.signature.parameters then + if signatures_count > 1 then + if index == active_signature then + width = style.font:get_width("> ") + else + width = style.font:get_width("> ") + x = x + style.font:get_width("> ") + end + end + + width = width + + style.font:get_width("(") + + style.font:get_width(")") + + if not calc_only then + if signatures_count > 1 and index == active_signature then + x = renderer.draw_text(style.font, "> ", x, y, style.caret) + end + x = renderer.draw_text(style.font, "(", x, y, style.text) + end + + local params_count = #item.signature.parameters + for pindex, param in ipairs(item.signature.parameters) do + local label = "" + if type(param.label) == "table" then + label = signature.label:sub(param.label[1]+1, param.label[2]) + else + label = param.label + end + if label and pindex ~= params_count then + label = label .. ", " + end + width = width + style.font:get_width(label) + if not calc_only then + local color = style.text + if + ( + signature.activeParameter + and + (signature.activeParameter + 1) == pindex + ) + or + (index == active_signature and active_parameter == pindex) + then + color = style.accent + end + x = renderer.draw_text( + style.font, + label, + x, y, + color + ) + end + end + + if not calc_only then + renderer.draw_text(style.font, ")", x, y, style.text) + end + else + width = style.font:get_width(item.signature.label) + if not calc_only then + renderer.draw_text( + style.font, + item.signature.label, + x, y, + style.text + ) + end + end + return width, width > 0 and height or 0 + end + }) + end + + listbox.add(items) + + listbox.show(false, position) +end + +function listbox.toggle_above(enable) + if enable then + settings.above_text = true + else + settings.above_text = false + end +end + +-------------------------------------------------------------------------------- +-- Patch event logic into RootView +-------------------------------------------------------------------------------- +local root_view_update = RootView.update +local root_view_draw = RootView.draw + +RootView.update = function(...) + root_view_update(...) + + if not settings.active_view then return end + + local active_view = get_active_view() + if active_view then + -- reset suggestions if caret was moved or not same active view + local line, col = active_view.doc:get_selection() + if + settings.active_view ~= active_view + or + line ~= settings.last_line or col ~= settings.last_col + then + listbox.hide() + end + else + listbox.hide() + end +end + +RootView.draw = function(...) + if settings.active_view then + local active_view = get_active_view() + if + active_view and settings.active_view == active_view + and + #settings.shown_items > 0 + then + -- draw suggestions box after everything else + core.root_view:defer_draw(draw_listbox, active_view) + end + end + root_view_draw(...) +end + +-------------------------------------------------------------------------------- +-- Commands +-------------------------------------------------------------------------------- +local function predicate() + local av = get_active_view() + return av and settings.active_view and #settings.shown_items > 0, av +end + +command.add(predicate, { + ["listbox:select"] = function(av) + ---@cast av core.docview + if settings.is_list then + local doc = av.doc + local item = settings.shown_items[settings.selected_item_idx] + + if settings.callback then + settings.callback(doc, item) + end + + listbox.hide() + end + end, + + ["listbox:previous"] = function() + if settings.is_list then + settings.selected_item_idx = math.max(settings.selected_item_idx - 1, 1) + else + listbox.hide() + end + end, + + ["listbox:next"] = function() + if settings.is_list then + settings.selected_item_idx = math.min( + settings.selected_item_idx + 1, #settings.shown_items + ) + else + listbox.hide() + end + end, + + ["listbox:cancel"] = function() + listbox.hide() + end, +}) + +-------------------------------------------------------------------------------- +-- Keymaps +-------------------------------------------------------------------------------- +keymap.add { + ["tab"] = "listbox:select", + ["up"] = "listbox:previous", + ["down"] = "listbox:next", + ["escape"] = "listbox:cancel", +} + + +return listbox diff --git a/debian/extra/plugins/lsp/manifest.json b/debian/extra/plugins/lsp/manifest.json new file mode 100644 index 0000000..0d37eec --- /dev/null +++ b/debian/extra/plugins/lsp/manifest.json @@ -0,0 +1,19 @@ +{ + "addons": [ + { + "id": "lsp", + "name": "Language Server Protocol", + "description": "Provides intellisense by leveraging the LSP protocol.", + "version": "0.10", + "mod_version": "3", + "dependencies": { + "widget": { "version": ">=0.1" }, + "lintplus": { "version": ">=0.2", "optional": true }, + "lsp_snippets": { "optional": true } + }, + "tags": [ + "language server protocol" + ] + } + ] +} diff --git a/debian/extra/plugins/lsp/server.lua b/debian/extra/plugins/lsp/server.lua new file mode 100644 index 0000000..33c8cca --- /dev/null +++ b/debian/extra/plugins/lsp/server.lua @@ -0,0 +1,1662 @@ +-- Class in charge of establishing communication with an LSP server and +-- managing requests, notifications and responses from both the server +-- and the client that is establishing the connection. +-- +-- @copyright Jefferson Gonzalez +-- @license MIT +-- @inspiration: https://github.com/orbitalquark/textadept-lsp +-- +-- LSP Documentation: +-- https://microsoft.github.io/language-server-protocol/specifications/specification-3-17 + +local json = require "plugins.lsp.json" +local util = require "plugins.lsp.util" +local diagnostics = require "plugins.lsp.diagnostics" +local Object = require "core.object" + +---@alias lsp.server.callback fun(server: lsp.server, ...) +---@alias lsp.server.timeoutcb fun(server: lsp.server, ...) +---@alias lsp.server.notificationcb fun(server: lsp.server, params: table) +---@alias lsp.server.responsecb fun(server: lsp.server, response: table, request?: lsp.server.request) + +---@class lsp.server.languagematch +---@field id string +---@field pattern string + +---@class lsp.server.request +---@field id integer +---@field method string +---@field data table|nil +---@field params table +---@field callback lsp.server.responsecb | nil +---@field overwritten boolean +---@field overwritten_callback lsp.server.responsecb | nil +---@field sending boolean +---@field raw_data string +---@field timeout number +---@field timeout_callback lsp.server.timeoutcb | nil +---@field timestamp number +---@field times_sent integer + +---LSP Server communication library. +---@class lsp.server : core.object +---@field public name string +---@field public language string | lsp.server.languagematch[] +---@field public file_patterns table +---@field public current_request integer +---@field public init_options table +---@field public settings table | nil +---@field public event_listeners table +---@field public message_listeners table +---@field public request_listeners table +---@field public request_list lsp.server.request[] +---@field public response_list table +---@field public notification_list lsp.server.request[] +---@field public raw_list lsp.server.request[] +---@field public command table +---@field public write_fails integer +---@field public write_fails_before_shutdown integer +---@field public verbose boolean +---@field public initialized boolean +---@field public hitrate_list table +---@field public requests_per_second integer +---@field public proc process | nil +---@field public quit_timeout number +---@field public exit_timer lsp.timer | nil +---@field public capabilities table +---@field public custom_capabilities table +---@field public yield_on_reads boolean +---@field public running boolean +local Server = Object:extend() + +---LSP Server constructor options +---@class lsp.server.options +---@field name string +---@field language string | lsp.server.languagematch[] +---@field file_patterns table +---@field string|command table +---@field quit_timeout number +---@field windows_skip_cmd boolean +---@field env table +---@field settings table +---@field init_options table +---@field custom_capabilities table +---@field on_start? fun(server: lsp.server) +---@field requests_per_second number +---@field incremental_changes boolean +Server.options = { + ---Name of the server + name = "", + ---Programming language identifier. + ---Can be a string or a table. + ---If the table is empty, the file extension will be used instead. + ---The table should be an array of tables containing `id` and `pattern`. + ---The `pattern` will be matched with the file path. + ---Will use the `id` of the first `pattern` that matches. + ---If no pattern matches, the file extension will be used instead. + language = {}, + ---Patterns to match the language files + file_patterns = {}, + ---Command to launch LSP server and optional arguments + command = {}, + ---On Windows, avoid running the LSP server with cmd.exe + windows_skip_cmd = false, + ---Enviroment variables to set for the server command + env = {}, + ---Seconds before closing the server when not needed anymore + quit_timeout = 60, + ---Optional table of settings to pass into the LSP + ---Note that also having a settings.json or settings.lua in + ---your workspace directory is supported + settings = {}, + ---Optional table of initializationOptions for the LSP + init_options = {}, + ---Optional table of capabilities that will be merged with our default one + custom_capabilities = {}, + ---Function called when the server has been started + on_start = nil, + ---Set by default to 16 should only be modified if having issues with a server + requests_per_second = 32, + ---Some servers like bash language server support incremental changes + ---which are more performant but don't advertise it, set to true to force + ---incremental changes even if server doesn't advertise them + incremental_changes = false, + ---True to debug the lsp client when developing it + verbose = false, +} + +---Default timeout when sending a request to lsp server. +---@type integer Time in seconds +Server.DEFAULT_TIMEOUT = 10 + +---The maximum amount of data to retrieve when reading from server. +---@type integer Amount of bytes +Server.BUFFER_SIZE = 1024 * 10 + +---LSP Docs: /#errorCodes +Server.error_code = { + ParseError = -32700, + InvalidRequest = -32600, + MethodNotFound = -32601, + InvalidParams = -32602, + InternalError = -32603, + jsonrpcReservedErrorRangeStart = -32099, + serverErrorStart = -32099, + ServerNotInitialized = -32002, + UnknownErrorCode = -32001, + jsonrpcReservedErrorRangeEnd = -32000, + serverErrorEnd = -32000, + lspReservedErrorRangeStart = -32899, + ContentModified = -32801, + RequestCancelled = -32800, + lspReservedErrorRangeEnd = -32800, +} + +---LSP Docs: /#completionTriggerKind +Server.completion_trigger_Kind = { + Invoked = 1, + TriggerCharacter = 2, + TriggerForIncompleteCompletions = 3 +} + +---LSP Docs: /#diagnosticSeverity +Server.diagnostic_severity = { + Error = 1, + Warning = 2, + Information = 3, + Hint = 4 +} + +---LSP Docs: /#textDocumentSyncKind +Server.text_document_sync_kind = { + None = 0, + Full = 1, + Incremental = 2 +} + +---LSP Docs: /#completionItemKind +Server.completion_item_kind = { + 'Text', 'Method', 'Function', 'Constructor', 'Field', 'Variable', 'Class', + 'Interface', 'Module', 'Property', 'Unit', 'Value', 'Enum', 'Keyword', + 'Snippet', 'Color', 'File', 'Reference', 'Folder', 'EnumMember', + 'Constant', 'Struct', 'Event', 'Operator', 'TypeParameter' +} + +---LSP Docs: /#symbolKind +Server.symbol_kind = { + 'File', 'Module', 'Namespace', 'Package', 'Class', 'Method', 'Property', + 'Field', 'Constructor', 'Enum', 'Interface', 'Function', 'Variable', + 'Constant', 'String', 'Number', 'Boolean', 'Array', 'Object', 'Key', + 'Null', 'EnumMember', 'Struct', 'Event', 'Operator', 'TypeParameter' +} + +---LSP Docs: /#insertTextFormat +Server.insert_text_format = { + PlainText = 1, + Snippet = 2 +} + +---LSP Docs: /#messageType +---@enum +Server.message_type = { + Error = 1, + Warning = 2, + Info = 3, + Log = 4, + Debug = 5 +} + +---LSP Docs: /#positionEncodingKind +---@enum +Server.position_encoding_kind = { + UTF8 = 'utf-8', + UTF16 = 'utf-16', + UTF32 = 'utf-32' +} + +---@class lsp.server.requestoptions +---@field params? table +---@field data? table @Optional data appended to request. +---@field callback? lsp.server.responsecb @Default callback executed when a response is received. +---@field overwrite? boolean @Substitute same previous request with new one if not sent. +---@field overwritten_callback? lsp.server.responsecb @Executed in place of original response callback if the request should have been overwritten but was already sent. +---@field raw_data? string @Request body used when sending a raw request. +---@field timeout? number @Timeout in seconds to consider the request unanswered. +---@field timeout_callback? lsp.server.timeoutcb @Callback executed when the request times out. + +---Get a completion kind label from its id or empty string if not found. +---@param id integer +---@return string +function Server.get_completion_item_kind(id) + return Server.completion_item_kind[id] or "" +end + +---Get list of completion kinds. +---@return table +function Server.get_completion_items_kind_list() + local list = {} + for i = 1, #Server.completion_item_kind do + if i ~= 15 then --Disable snippets + table.insert(list, i) + end + end + + return list +end + +---Get a symbol kind label from its id or empty string if not found. +---@param id integer +---@return string +function Server.get_symbol_kind(id) + return Server.symbol_kind[id] or "" +end + +---Get list of symbol kinds. +---@return table +function Server.get_symbols_kind_list() + local list = {} + for i = 1, #Server.symbol_kind do + list[i] = i + end + + return list +end + +---Given a ServerCapabilities object, return a "normalized" version +---that simplifies capabilities checks. +---@param capabilities table +---returns table +function Server.normalize_server_capabilities(capabilities) + local cap = util.deep_merge({ }, capabilities) + local tds = { + openClose = false, + change = false, + willSave = false, + willSaveWaitUntil = false, + save = false + } + if cap.textDocumentSync then + if type(cap.textDocumentSync) ~= "table" then + -- Convert TextDocumentSyncKind into TextDocumentSyncOptions + tds = util.deep_merge(tds, { + openClose = true, + change = cap.textDocumentSync, + save = { + includeText = false + } + }) + cap.textDocumentSync = nil + else + tds = util.deep_merge(tds, cap.textDocumentSync) + if type(tds.save) ~= "table" and tds.save then + tds.save = { + includeText = false + } + end + end + end + cap.textDocumentSync = util.deep_merge(cap.textDocumentSync, tds) + return cap +end + +---Instantiates a new LSP server. +---@param options lsp.server.options +function Server:new(options) + Server.super.new(self) + + self.name = options.name + self.language = options.language + self.file_patterns = options.file_patterns + self.current_request = 0 + self.init_options = options.init_options or {} + self.settings = options.settings or nil + self.event_listeners = {} + self.message_listeners = {} + self.request_listeners = {} + self.request_list = {} + self.response_list = {} + self.notification_list = {} + self.raw_list = {} + self.command = options.command + self.write_fails = 0 + self.fatal_error = false + self.snippets = options.snippets + self.fake_snippets = options.fake_snippets or false + -- TODO: We may need to lower this but tests so far show that some servers + -- may actually fail to write many of the request sent to it if it is + -- indexing the workspace source code or other heavy tasks. + self.write_fails_before_shutdown = 60 + self.verbose = options.verbose or false + self.last_restart = system.get_time() + self.initialized = false + self.hitrate_list = {} + self.requests_per_second = options.requests_per_second or 16 + + self.proc = process.start( + options.command, { + stderr = process.REDIRECT_PIPE, + env = options.env + } + ) + self.quit_timeout = options.quit_timeout or 60 + self.exit_timer = nil + self.capabilities = nil + self.custom_capabilities = options.custom_capabilities + self.yield_on_reads = false + self.incremental_changes = options.incremental_changes or false + + self.read_responses_coroutine = nil + + if options.on_start then options.on_start(self) end +end + +---Starts the LSP server process, any listeners should be registered before +---calling this method and this method should be called before any pushes. +---@param workspace string +---@param editor_name? string +---@param editor_version? string +function Server:initialize(workspace, editor_name, editor_version) + local root_uri = util.touri(workspace); + + self.path = workspace or "" + self.editor_name = editor_name or "unknown" + self.editor_version = editor_version or "0.1" + + self:push_request('initialize', { + timeout = 10, + params = { + processId = system["get_process_id"] and system.get_process_id() or nil, + clientInfo = { + name = editor_name or "unknown", + version = editor_version or "0.1" + }, + -- TODO: locale + rootPath = workspace, + rootUri = root_uri, + workspaceFolders = { + {uri = root_uri, name = util.getpathname(workspace)} + }, + initializationOptions = self.init_options, + capabilities = util.deep_merge({ + workspace = { + configuration = true -- 'workspace/configuration' requests + }, + textDocument = { + synchronization = { + -- willSave = true, + -- willSaveWaitUntil = true, + didSave = true, + -- dynamicRegistration = false -- not supported + }, + completion = { + -- dynamicRegistration = false, -- not supported + completionItem = { + -- Snippets are required by css-languageserver + snippetSupport = self.snippets or self.fake_snippets, + -- commitCharactersSupport = true, + documentationFormat = {'plaintext'}, + -- deprecatedSupport = false, -- simple autocompletion list + -- preselectSupport = true + -- tagSupport = {valueSet = {}}, + insertReplaceSupport = true, + resolveSupport = {properties = {'documentation', 'detail', 'additionalTextEdits'}}, + -- insertTextModeSupport = {valueSet = {}} + }, + completionItemKind = { + valueSet = Server.get_completion_items_kind_list() + } + -- contextSupport = true + }, + hover = { + -- dynamicRegistration = false, -- not supported + contentFormat = {'markdown', 'plaintext'} + }, + signatureHelp = { + -- dynamicRegistration = false, -- not supported + signatureInformation = { + documentationFormat = {'plaintext'} + -- parameterInformation = {labelOffsetSupport = true}, + -- activeParameterSupport = true + } + -- contextSupport = true + }, + -- references = {dynamicRegistration = false}, -- not supported + -- documentHighlight = {dynamicRegistration = false}, -- not supported + documentSymbol = { + -- dynamicRegistration = false, -- not supported + symbolKind = {valueSet = Server.get_symbols_kind_list()} + -- hierarchicalDocumentSymbolSupport = true, + -- tagSupport = {valueSet = {}}, + -- labelSupport = true + }, + -- diagnostic = { + -- dynamicRegistration = true, + -- relatedDocumentSupport = false + -- }, + -- formatting = {dynamicRegistration = false},-- not supported + -- rangeFormatting = {dynamicRegistration = false}, -- not supported + -- onTypeFormatting = {dynamicRegistration = false}, -- not supported + -- declaration = { + -- dynamicRegistration = false, -- not supported + -- linkSupport = true + -- } + -- definition = { + -- dynamicRegistration = false, -- not supported + -- linkSupport = true + -- }, + -- typeDefinition = { + -- dynamicRegistration = false, -- not supported + -- linkSupport = true + -- }, + -- implementation = { + -- dynamicRegistration = false, -- not supported + -- linkSupport = true + -- }, + -- codeAction = { + -- dynamicRegistration = false, -- not supported + -- codeActionLiteralSupport = {valueSet = {}}, + -- isPreferredSupport = true, + -- disabledSupport = true, + -- dataSupport = true, + -- resolveSupport = {properties = {}}, + -- honorsChangeAnnotations = true + -- }, + -- codeLens = {dynamicRegistration = false}, -- not supported + -- documentLink = { + -- dynamicRegistration = false, -- not supported + -- tooltipSupport = true + -- }, + -- colorProvider = {dynamicRegistration = false}, -- not supported + -- rename = { + -- dynamicRegistration = false, -- not supported + -- prepareSupport = false + -- }, + publishDiagnostics = { + relatedInformation = true, + tagSupport = { + valueSet = { + diagnostics.tag.UNNECESSARY, + diagnostics.tag.DEPRECATED + } + }, + versionSupport = true, + codeDescriptionSupport = true, + dataSupport = false + }, + -- foldingRange = { + -- dynamicRegistration = false, -- not supported + -- rangeLimit = ?, + -- lineFoldingOnly = true + -- }, + -- selectionRange = {dynamicRegistration = false}, -- not supported + -- linkedEditingRange = {dynamicRegistration = false}, -- not supported + -- callHierarchy = {dynamicRegistration = false}, -- not supported + -- semanticTokens = { + -- dynamicRegistration = false, -- not supported + -- requests = {}, + -- tokenTypes = {}, + -- tokenModifiers = {}, + -- formats = {}, + -- overlappingTokenSupport = true, + -- multilineTokenSupport = true + -- }, + -- moniker = {dynamicRegistration = false} -- not supported + }, + window = { + -- workDoneProgress = true, + -- showMessage = {}, + showDocument = { support = true } + }, + general = { + -- regularExpressions = {}, + -- markdown = {}, + positionEncodings = { + Server.position_encoding_kind.UTF16 + } + }, + -- experimental = nil + }, self.custom_capabilities) + }, + callback = function(server, response) + if server.verbose then + server:log( + "Processing initialization response:\n%s", + util.jsonprettify(json.encode(response)) + ) + end + local result = response.result + if result then + server.capabilities = Server.normalize_server_capabilities(result.capabilities) + server.info = result.serverInfo + + if server.info then + server:log( + 'Connected to %s %s', + server.info.name, + server.info.version or '(unknown version)' + ) + end + + while not server:notify('initialized') do end -- required by protocol + + -- We wait a few seconds to prevent initialization issues + coroutine.yield(3) + server.initialized = true; + server:send_event_signal("initialized", server, result) + end + end + }) +end + +---Register an event listener. +---@param event_name string +---@param callback lsp.server.callback +function Server:add_event_listener(event_name, callback) + if self.verbose then + self:log( + "Listening for event '%s'", + event_name + ) + end + + if not self.event_listeners[event_name] then + self.event_listeners[event_name] = {} + end + table.insert(self.event_listeners[event_name], callback) +end + +function Server:send_event_signal(event_name, ...) + if self.event_listeners[event_name] then + for _, l in ipairs(self.event_listeners[event_name]) do + l(self, ...) + end + else + self:on_event(event_name) + end +end + +function Server:on_event(event_name) + if self.verbose then + self:log("Received event '%s'", event_name) + end +end + +---Send a message to the server that doesn't needs a response. +---@param method string +---@param params? table +---@return boolean sent +function Server:notify(method, params) + local message = { + jsonrpc = '2.0', + method = method, + params = params or {} + } + + local data = json.encode(message) + + if self.verbose then + self:log("Sending notification:\n%s", util.jsonprettify(data)) + end + + local sent, errmsg = self:write_request(data) + + if not sent and self.verbose then + self:log( + "Could not send '%s' notification with error: %s", + method, + errmsg or "unknown" + ) + end + + return sent +end + +---Reply to a server request. +---@param id integer +---@param result table +---@return boolean sent +function Server:respond(id, result) + local message = { + jsonrpc = '2.0', + id = id, + result = result + } + + local data = json.encode(message) + + if self.verbose then + self:log("Responding to '%d':\n%s", id, util.jsonprettify(data)) + end + + local sent, errmsg = self:write_request(data) + + if not sent and self.verbose then + self:log("Could not send response with error: %s", errmsg or "unknown") + end + + return sent +end + +---Respond to a an unknown server request with a method not found error code. +---@param id integer +---@param error_message? string +---@param error_code? integer +---@return boolean sent +function Server:respond_error(id, error_message, error_code) + local message = { + jsonrpc = '2.0', + id = id, + error = { + code = error_code or Server.error_code.MethodNotFound, + message = error_message or "method not found" + } + } + + local data = json.encode(message) + + if self.verbose then + self:log("Responding error to '%d':\n%s", id, util.jsonprettify(data)) + end + + local sent, errmsg = self:write_request(data) + + if not sent and self.verbose then + self:log("Could not send response with error: %s", errmsg or "unknown") + end + + return sent +end + +---Sends one of the queued notifications. +function Server:process_notifications() + if not self.initialized then return end + + -- Clone table as we remove elements while iterating it + local notifications = {} + for index, request in ipairs(self.notification_list) do + notifications[index] = request + end + + for index, request in ipairs(notifications) do + request.sending = true + local message = { + jsonrpc = '2.0', + method = request.method, + params = request.params or {} + } + + local data = json.encode(message) + + if self.verbose then + self:log( + "Sending notification '%s':\n%s", + request.method, + util.jsonprettify(data) + ) + end + + local written, errmsg = self:write_request(data) + + if self.verbose then + if not written then + self:log( + "Failed sending notification '%s' with error: %s", + request.method, + errmsg or "unknown" + ) + end + end + + if written then + if request.callback then + request.callback(self) + end + table.remove(self.notification_list, index) + self.write_fails = 0 + return request + else + self:shutdown_if_needed() + return + end + end +end + +---Sends one of the queued client requests. +function Server:process_requests() + if not self.proc then return end + + local remove_request = nil + for index, request in ipairs(self.request_list) do + if request.timestamp < os.time() then + -- only process when initialized or the initialize request + -- which should be the first one. + if not self.initialized and request.id ~= 1 then + return nil + end + + local message = { + jsonrpc = '2.0', + id = request.id, + method = request.method, + params = request.params or {} + } + + local data = json.encode(message) + + local written, errmsg = self:write_request(data) + + if self.verbose then + if written then + self:log( + "Sent request '%s':\n%s", + request.method, + util.jsonprettify(data) + ) + else + self:log( + "Failed sending request '%s' with error: %s\n%s", + request.method, + errmsg or "unknown", + util.jsonprettify(data) + ) + end + end + + if written then + local time = request.timeout or 1 + request.timestamp = os.time() + time + + self.write_fails = 0 + + -- if request has been sent more than 2 times remove them + request.times_sent = request.times_sent + 1 + if + request.times_sent > 1 + and + request.id ~= 1 -- Initialize request may take some time + then + remove_request = index + break + else + return request + end + else + request.timestamp = os.time() + 1 + self:shutdown_if_needed() + return nil + end + end + end + + if remove_request then + local request = table.remove(self.request_list, remove_request) + if self.verbose then + self:log("Request '%s' expired without response", remove_request) + end + if request.timeout_callback then + request.timeout_callback(request) + end + end + + return nil +end + +---Read the lsp server stdout, parse any responses, requests or +---notifications and properly dispatch signals to any listeners. +function Server:process_responses() + if not self.proc then return end + + local responses = self:read_responses(0) + + if type(responses) == "table" then + for _, response in pairs(responses) do + if self.verbose then + self:log( + "Processing Response:\n%s", + util.jsonprettify(json.encode(response)) + ) + end + if not response.id then + -- A notification, event or generic message was received + self:send_message_signal(response) + elseif + response.result + or + (not response.params and not response.method) + then + -- An actual request response was received + self:send_response_signal(response) + else + -- The server is making a request + self:send_request_signal(response) + end + end + end + + return responses +end + +---Sends all queued client responses to server. +function Server:process_client_responses() + if not self.initialized then return end + + ::send_responses:: + for index, response in ipairs(self.response_list) do + local message = { + jsonrpc = '2.0', + id = response.id + } + + if response.result then + message.result = response.result + else + message.error = response.error + end + + local data = json.encode(message) + + if self.verbose then + self:log("Sending client response:\n%s", util.jsonprettify(data)) + end + + local written, errmsg = self:write_request(data) + + if self.verbose then + if not written then + self:log( + "Failed sending client response '%s' with error: %s", + response.id, + errmsg or "unknown" + ) + end + end + + if written then + self.write_fails = 0 + table.remove(self.response_list, index) + -- restart loop after removing from table to prevent issues + goto send_responses + else + self:shutdown_if_needed() + return + end + end +end + +---Should be called periodically to prevent the server from stalling +---because of not flushing the stderr (especially true of clangd). +---@param log_errors boolean +function Server:process_errors(log_errors) + if not self.proc then return end + + local errors = self:read_errors(0) + + if #errors > 0 and log_errors then + self:log("Error: \n'%s'", errors) + end + + return errors +end + +---Sends raw data to the server process and ensures that all of it is written +---if no errors occur, otherwise it returns false and the error message. Notice +---that this function can perform yielding when ran inside of a coroutine. +---@param data string +---@return boolean sent +---@return string? errmsg +function Server:send_data(data) + local proc = self.proc -- save current process to avoid it changing + if not proc then return false end + + local failures, data_len = 0, #data + local written, errmsg = proc:write(data) + local total_written = written or 0 + + while total_written < data_len and not errmsg do + written, errmsg = proc:write(data:sub(total_written + 1)) + total_written = total_written + (written or 0) + + if (not written or written <= 0) and not errmsg and coroutine.running() then + -- with each consecutive fail the yield timeout is increased by 5ms + coroutine.yield((failures * 5) / 1000) + + failures = failures + 1 + if failures > 19 then -- after ~1000ms we error out + errmsg = "maximum amount of consecutive failures reached" + break + end + else + failures = 0 + end + end + + if errmsg then + self:log("Error sending data: '%s'\n%s", errmsg, data) + end + + return total_written == data_len, errmsg +end + +---Send one of the queued chunks of raw data to lsp server which are +---usually huge, like the textDocument/didOpen notification. +function Server:process_raw() + if not self.initialized then return end + + -- Wait until everything else is processed to prevent initialization issues + if + #self.notification_list > 0 + or + #self.request_list > 0 + or + #self.response_list > 0 + then + return + end + + if not self.proc or not self.proc:running() then + self.raw_list = {} + return + end + + local sent = false + for index, raw in ipairs(self.raw_list) do + raw.sending = true + + -- first send the header + if + not self:send_data(string.format( + 'Content-Length: %d\r\n\r\n', #raw.raw_data + )) + then + break + end + + if self.verbose then + self:log("Raw header written") + end + + -- send content in chunks + local chunks = 10 * 1024 + raw.raw_data = raw.raw_data + + while #raw.raw_data > 0 do + if not self.proc or not self.proc:running() then + self.raw_list = {} + return + end + + if #raw.raw_data > chunks then + -- TODO: perform proper error handling + self:send_data(raw.raw_data:sub(1, chunks)) + raw.raw_data = raw.raw_data:sub(chunks+1) + else + -- TODO: perform proper error handling + self:send_data(raw.raw_data) + raw.raw_data = "" + end + + self.write_fails = 0 + + coroutine.yield() + end + + if self.verbose then + self:log("Raw content written") + end + + if raw.callback then + raw.callback(self, raw) + end + + table.remove(self.raw_list, index) + sent = true + break + end + if sent then collectgarbage("collect") end +end + +---Help controls the amount of requests sent to the lsp server per second +---which prevents overloading it and causing a pipe hang. +---@param type string +---@return boolean true if max hitrate was reached +function Server:hitrate_reached(type) + if not self.hitrate_list[type] then + self.hitrate_list[type] = { + count = 1, + timestamp = os.time() + 1 + } + elseif self.hitrate_list[type].timestamp > os.time() then + if self.hitrate_list[type].count >= self.requests_per_second then + return true + end + self.hitrate_list[type].count = self.hitrate_list[type].count + 1 + else + self.hitrate_list[type].timestamp = os.time() + 1 + self.hitrate_list[type].count = 1 + end + return false +end + +---Check if it is possible to queue a new request of any kind except +---raw ones. This is useful to delay a request and not loose it in case +---the lsp reached maximum amount of hit rate per second. +function Server:can_push() + local type = "request" + if not self.hitrate_list[type] then + return self.initialized + elseif self.hitrate_list[type].timestamp > os.time() then + if self.hitrate_list[type].count >= self.requests_per_second then + return false + end + end + return self.initialized +end + +-- Notifications that should bypass the hitrate limit +local notifications_whitelist = { + "textDocument/didOpen", + "textDocument/didSave", + "textDocument/didClose" +} + +---Queue a new notification but ignores new ones if the hit rate was reached. +---@param method string +---@param options lsp.server.requestoptions +function Server:push_notification(method, options) + assert(options.params, "please provide the parameters for the notification") + + if options.overwrite then + for _, notification in ipairs(self.notification_list) do + if notification.method == method and not notification.sending then + if self.verbose then + self:log("Overwriting notification %s", tostring(method)) + end + notification.params = options.params + notification.callback = options.callback + notification.data = options.data + return + end + end + end + + if + method ~= "textDocument/didOpen" + and + self:hitrate_reached("request") + and + not util.intable(method, notifications_whitelist) + then + return + end + + if self.verbose then + self:log( + "Pushing notification '%s':\n%s", + method, + util.jsonprettify(json.encode(options.params)) + ) + end + + -- Store the notification for later processing on responses_loop + table.insert(self.notification_list, { + method = method, + params = options.params, + callback = options.callback, + data = options.data, + }) +end + +-- Requests that should bypass the hitrate limit +local requests_whitelist = { + "completionItem/resolve" +} + +---Queue a new request but ignores new ones if the hit rate was reached. +---@param method string +---@param options lsp.server.requestoptions +function Server:push_request(method, options) + if not self.initialized and method ~= "initialize" then + return + end + + assert(options.params, "please provide the parameters for the request") + + if options.overwrite then + for _, request in ipairs(self.request_list) do + if request.method == method then + if request.times_sent > 0 then + request.overwritten = true + break + else + request.params = options.params + request.callback = options.callback + request.overwritten_callback = options.overwritten_callback + request.data = options.data + request.timeout = options.timeout + request.timeout_callback = options.timeout_callback + request.timestamp = 0 + if self.verbose then + self:log("Overwriting request %s", tostring(method)) + end + return + end + end + end + end + + if + method ~= "initialize" + and + self:hitrate_reached("request") + and + not util.intable(method, requests_whitelist) + then + return + end + + if self.verbose then + self:log("Adding request %s", tostring(method)) + end + + -- Set the request id + self.current_request = self.current_request + 1 + + -- Store the request for later processing on responses_loop + table.insert(self.request_list, { + id = self.current_request, + method = method, + params = options.params, + callback = options.callback, + overwritten_callback = options.overwritten_callback, + data = options.data, + timeout = options.timeout, + timeout_callback = options.timeout_callback, + timestamp = 0, + times_sent = 0 + }) +end + +---Queue a client response to a server request which can be an error +---or a regular response, one of both. This may ignore new ones if +---the hit rate was reached. +---@param method string +---@param id integer +---@param result table|nil +---@param error table|nil +function Server:push_response(method, id, result, error) + if self:hitrate_reached("request") then + return + end + + if self.verbose then + self:log("Adding response %s to %s", tostring(id), tostring(method)) + end + + -- Store the response for later processing on loop + local response = { + id = id + } + if result then + response.result = result + else + response.error = error + end + + table.insert(self.response_list, response) +end + +---Send raw json strings to server in cases where the json encoder +---would be too slow to convert a lua table into a json representation. +---@param name string A name to identify the request when overwriting. +---@param options lsp.server.requestoptions +function Server:push_raw(name, options) + assert(options.raw_data, "please provide the raw_data for request") + + if options.overwrite then + for _, request in ipairs(self.raw_list) do + if request.method == name then + if not request.sending then + request.raw_data = options.raw_data + request.callback = options.callback + request.data = options.data + if self.verbose then + self:log("Overwriting raw request %s", tostring(name)) + end + return + end + break + end + end + end + + if self.verbose then + self:log("Adding raw request %s", name) + end + + -- Store the request for later processing on responses_loop + table.insert(self.raw_list, { + method = name, + raw_data = options.raw_data, + callback = options.callback, + data = options.data, + }) +end + +---Retrieve a request and removes it from the internal requests list +---@param id integer +---@return lsp.server.request | nil +function Server:pop_request(id) + for index, request in ipairs(self.request_list) do + if request.id == id then + table.remove(self.request_list, index) + return request + end + end + return nil +end + +---Try to fetch a server responses, notifications or requests +---in a specific amount of time. +---@param timeout integer Time in seconds, set to 0 to not wait +---@return table[]|boolean Responses list or false if failed +function Server:read_responses(timeout) + local proc = self.proc -- save current process to avoid it changing + if not proc or not proc:running() then + return false + end + + if not self.read_responses_coroutine then + self.read_responses_coroutine = coroutine.create(function() + local buffer = "" + while true do + -- Read out all the headers + local output = buffer .. (proc:read_stdout(Server.BUFFER_SIZE) or "") + local content_start = output:match("\r\n\r\n()") + local buf = output + while not content_start do + if #output > 1024 then + -- After a kilobyte, still no end in sight for headers. Error out. + return error(string.format("Can't find headers delimiter after %d bytes. ".. + "Something wrong with the server configuration?\nGot:\n%s", #output, output)) + end + coroutine.yield(#buf > 0) + buf = proc:read_stdout(Server.BUFFER_SIZE) + if not buf then + -- If we stopped in the middle of a read, error out + if #output > 0 then + return error(string.format("Can't continue reading stdout:\n%s", output)) + end + return + end + if #buf > 0 then + output = output .. buf + content_start = output:match("\r\n\r\n()") + end + end + + -- Parse headers + local headers_data = output:sub(1, content_start - 4 - 1) + local content_length = 0 + local headers = util.split(headers_data, "\r\n") + for _, header in ipairs(headers) do + -- We only care for Content-Length for now + local length = header:match("^Content%-Length: (%d+)$") + if length then + content_length = tonumber(length) + break + end + end + if not content_length then + return error(string.format("Bad header content:\n%s\n", headers_data)) + end + + -- Read all the expected content data + local content_data_t = { output:sub(content_start) } + buf = content_data_t[1] + local content_read_length = #buf + while content_read_length < content_length do + coroutine.yield(#buf > 0) + buf = proc:read_stdout(Server.BUFFER_SIZE) + if not buf then + return error(string.format("Can't continue reading stdout. Stopped at %d/%d.\n%s", + content_read_length, content_length, table.concat(content_data_t))) + end + content_read_length = content_read_length + #buf + table.insert(content_data_t, buf) + end + local content_data = table.concat(content_data_t) + -- We only need content_length bytes, so queue the rest for the next loop + buffer = content_data:sub(content_length + 1) + content_data = content_data:sub(1, content_length) + + if self.verbose then + self:log("Got data.\nHeaders:\n%s\n\nContent:\n%s", headers_data, content_data) + end + + coroutine.yield(#buffer > 0, content_data) + end + end) + end + + if coroutine.status(self.read_responses_coroutine) == "dead" then + self.fatal_error = true + self:shutdown_if_needed() + return false + end + + timeout = timeout or Server.DEFAULT_TIMEOUT + local max_time = timeout == 0 and math.huge or system.get_time() + timeout + + local responses = {} + repeat + local status, has_more_data, response = coroutine.resume(self.read_responses_coroutine) + if response then table.insert(responses, response) end + if not status then + local error_msg = has_more_data + self:log("Disconnecting from server:\n%s", error_msg) + self.fatal_error = true + self:shutdown_if_needed() + return false + end + until not has_more_data or (timeout > 0 and system.get_time() >= max_time) + + if #responses > 0 then + for index, data in ipairs(responses) do + local json_data = json.decode(data) + if json_data ~= false then + responses[index] = json_data + else + responses[index] = nil + self:log( + "JSON Parser Error: %s\n%s\n%s", + json.last_error(), + "-----", + data + ) + return false + end + end + + if #responses > 0 then + -- Reset write fails since server is sending responses + self.write_fails = 0 + + return responses + end + elseif self.verbose and timeout > 0 then + self:log("Could not read a response in %d seconds", timeout) + end + + return false +end + +---Get messages thrown by the stderr pipe of the server. +---@param timeout integer Time in seconds, set to 0 to not wait +---@return string|nil +function Server:read_errors(timeout) + local proc = self.proc -- save current process to avoid it changing + if not proc then return "" end + + timeout = timeout or Server.DEFAULT_TIMEOUT + local inside_coroutine = self.yield_on_reads and coroutine.running() or false + + local max_time = os.time() + timeout + if timeout == 0 then max_time = max_time + 1 end + local output = "" + while max_time > os.time() and output == "" do + output = proc:read_stderr(Server.BUFFER_SIZE) + if timeout == 0 then break end + if output == "" and inside_coroutine then + coroutine.yield() + end + end + + if timeout == 0 and output ~= "" then + local new_output = nil + while new_output ~= "" do + new_output = proc:read_stderr(Server.BUFFER_SIZE) + if new_output ~= "" then + if new_output == nil then + break + end + output = output .. new_output + if inside_coroutine then + coroutine.yield() + end + end + end + end + + return output or "" +end + +---Try to send a request to a server in a specific amount of time. +---@param data table | string Table or string with the json request +---@return boolean written +---@return string? errmsg +function Server:write_request(data) + if not self.proc or not self.proc:running() then + return false + end + + if type(data) == "table" then + data = json.encode(data) + end + + -- WARNING: send_data performs yielding which can pontentially cause a + -- race condition, in case of future issues this may be the root cause. + return self:send_data(string.format( + 'Content-Length: %d\r\n\r\n%s', + #data, + data + )) +end + +function Server:log(message, ...) + print (string.format("%s: " .. message .. "\n", self.name, ...)) +end + +---Call an apropriate signal handler for a given response. +---@param response table +function Server:send_response_signal(response) + local request = self:pop_request(response.id) + if request then + if not request.overwritten and request.callback then + request.callback(self, response, request) + elseif request.overwritten and request.overwritten_callback then + request.overwritten_callback(self, response, request) + end + return + end + self:on_response(response, request) +end + +---Called for each response that doesn't has a signal handler. +---@param response table +---@param request lsp.server.request | nil +function Server:on_response(response, request) + if self.verbose then + self:log( + "Received response '%s' with result:\n%s", + response.id, + util.jsonprettify(json.encode(response)) + ) + end +end + +---Register a request handler. +---@param method string +---@param callback lsp.server.responsecb +function Server:add_request_listener(method, callback) + if self.verbose then + self:log( + "Registering listener for '%s' requests", + method + ) + end + + if not self.request_listeners[method] then + self.request_listeners[method] = {} + end + table.insert(self.request_listeners[method], callback) +end + +---Call an apropriate signal handler for a given request. +---@param request table +function Server:send_request_signal(request) + if not request.method then + if self.verbose and request.id then + self:log( + "Received empty response for previous request '%s'", + request.id + ) + end + return + end + + if self.request_listeners[request.method] then + for _, l in ipairs(self.request_listeners[request.method]) do + l(self, request) + end + else + self:on_request(request) + end +end + +---Called for each request that doesn't has a signal handler. +---@param request table +function Server:on_request(request) + if self.verbose then + self:log( + "Received request '%s' with data:\n%s", + request.method, + util.jsonprettify(json.encode(request)) + ) + end + + self:push_response( + request.method, + request.id, + nil, + { + code = Server.error_code.MethodNotFound, + message = "Method not found" + } + ) +end + +---Register a specialized message or notification listener. +---Notice that if no specialized listener is registered the +---on_notification() method will be called instead. +---@param method string +---@param callback lsp.server.notificationcb +function Server:add_message_listener(method, callback) + if self.verbose then + self:log( + "Registering listener for '%s' messages", + method + ) + end + + if not self.message_listeners[method] then + self.message_listeners[method] = {} + end + table.insert(self.message_listeners[method], callback) +end + +---Call an apropriate signal handler for a given message or notification. +---@param message table +function Server:send_message_signal(message) + if self.message_listeners[message.method] then + for _, l in ipairs(self.message_listeners[message.method]) do + l(self, message.params) + end + else + self:on_message(message.method, message.params) + end +end + +---Called for every message or notification without a signal handler. +---@param method string +---@Param params table +function Server:on_message(method, params) + if self.verbose then + self:log( + "Received notification '%s' with params:\n%s", + method, + util.jsonprettify(json.encode(params)) + ) + end +end + +---Return the languageId for the specified doc. +---@param doc core.doc +---@return string +function Server:get_language_id(doc) + if type(self.language) == "string" then + return self.language + else + for _, l in ipairs(self.language) do + if string.match(doc.abs_filename, l.pattern) then + return l.id + end + end + end + return util.file_extension(doc.filename) +end + +---Kills the server process and deinitialize the server object state. +function Server:stop() + self.initialized = false + self.proc = nil + + self.request_list = {} + self.response_list = {} + self.notification_list = {} + self.raw_list = {} +end + +---Shutdown the server if not running or amount of write fails +---reached the maximum allowed. +function Server:shutdown_if_needed() + if + self.write_fails >= self.write_fails_before_shutdown + or + (self.proc and not self.proc:running()) + or + self.fatal_error + then + self:stop() + self:on_shutdown() + return + end + self.write_fails = self.write_fails + 1 +end + +---Can be overwritten to handle server shutdowns. +function Server:on_shutdown() + self:log("The server was shutdown.") +end + +---Sends a shutdown notification to lsp and then stop it. +function Server:exit() + self.initialized = false + + -- Send shutdown request + local message = { + jsonrpc = '2.0', + id = self.current_request + 1, + method = "shutdown", + params = {} + } + + self:write_request(json.encode(message)) + + -- send exit notification + self:notify('exit') + + self:stop() +end + + +return Server diff --git a/debian/extra/plugins/lsp/symbolresults.lua b/debian/extra/plugins/lsp/symbolresults.lua new file mode 100644 index 0000000..96c39cd --- /dev/null +++ b/debian/extra/plugins/lsp/symbolresults.lua @@ -0,0 +1,121 @@ +-- +-- SymbolResults Widget/View. +-- @copyright Jefferson Gonzalez +-- @license MIT +-- + +local style = require "core.style" +local Widget = require "libraries.widget" +local Label = require "libraries.widget.label" +local Line = require "libraries.widget.line" +local ListBox = require "libraries.widget.listbox" +local Server = require "plugins.lsp.server" + +local Lsp = {} + +---@class lsp.symbolresults : widget +---@field public searching boolean +---@field public symbol string +---@field private title widget.label +---@field private line widget.line +---@field private list_container widget +---@field private list widget.listbox +local SymbolResults = Widget:extend() + +function SymbolResults:new(symbol) + SymbolResults.super.new(self) + + Lsp = require "plugins.lsp" + + self.name = "Symbols Search" + self.defer_draw = false + + self.searching = true + self.symbol = symbol or "" + self.title = Label(self, "Searching symbols for: " .. symbol) + self.line = Line(self, 2, style.padding.x) + + self.list_container = Widget(self) + self.list_container.border.width = 0 + self.list_container:set_size(200, 200) + + self.list = ListBox(self.list_container) + self.list.border.width = 0 + + self.list:enable_expand(true) + self.list:add_column("Num.") + self.list:add_column("Symbol") + self.list:add_column("Kind") + self.list:add_column("Location") + + local list_on_row_click = self.list.on_row_click + self.list.on_row_click = function(this, idx, data) + list_on_row_click(this, idx, data) + self:on_selected(idx, data) + end + + self.num = 1 + + self.border.width = 0 + self:set_size(200, 200) + self:show() +end + +function SymbolResults:add_result(result) + local preview, position = Lsp.get_location_preview(result.location) + local container_name = result.containerName and + result.containerName .. "\n" or "" + + local row = { + tostring(self.num), + ListBox.COLEND, + style.syntax.keyword, container_name .. result.name, + ListBox.COLEND, + style.syntax.literal, Server.get_symbol_kind(result.kind), + ListBox.COLEND, + style.text, position, ListBox.NEWLINE, style.accent, preview + } + + self.num = self.num + 1 + + self.list:add_row(row, result) +end + +function SymbolResults:stop_searching() + self.searching = false +end + +function SymbolResults:on_selected(idx, data) + Lsp.goto_location(data.location) +end + +function SymbolResults:update() + if not SymbolResults.super.update(self) then return end + -- update the positions and sizes + self.background_color = style.background + self.title:set_position(style.padding.x, style.padding.y) + if not self.searching or #self.list.rows > 0 then + local label = "Finished: " + if self.searching then + label = "Searching: " + end + self.title:set_label( + label + .. #self.list.rows + .. " results found for " + .. '"' + .. self.symbol + .. '"' + ) + end + self.line:set_position(0, self.title:get_bottom() + 10) + self.list_container:set_position(style.padding.x, self.line:get_bottom() + 10) + self.list_container:set_size( + self.size.x - (style.padding.x * 2), + self.size.y - self.line:get_bottom() + ) +end + + +return SymbolResults + diff --git a/debian/extra/plugins/lsp/timer.lua b/debian/extra/plugins/lsp/timer.lua new file mode 100644 index 0000000..c25fefa --- /dev/null +++ b/debian/extra/plugins/lsp/timer.lua @@ -0,0 +1,101 @@ +local core = require "core" +local Object = require "core.object" + +---Timer class +---@class lsp.timer : core.object +---@field public interval integer +---@field public single_shot boolean +---@field private started boolean +---@field private last_run integer +local Timer = Object:extend() + +---Constructor +---@param interval integer The interval in milliseconds +---@param single_shot boolean Indicates if timer should only run once +function Timer:new(interval, single_shot) + Timer.super.new(self) + + self.single_shot = single_shot or false + self.started = false + self.cancel_thread_marker = { cancel = true } + self.last_run = 0 + + self:set_interval(interval or 1000) +end + +---Starts a non running timer. +function Timer:start() + if self.started then return end + + self.started = true + self.cancel_thread_marker = { cancel = false } + local this = self + + -- Save marker so that we keep this one and not an "updated" one + local marker = self.cancel_thread_marker + core.add_thread(function() + while true do + if marker.cancel == true then return end + this:reset() + local now = system.get_time() + local remaining = (this.last_run + this.interval) - now + if remaining > 0 then + repeat + if not this.started or marker.cancel then return end + coroutine.yield(remaining) + now = system.get_time() + remaining = (this.last_run + this.interval) - now + until remaining <= 0 + end + if not this.started or marker.cancel then return end + this:on_timer() + if this.single_shot then break end + end + this.started = false + end) +end + +---Stops a running timer. +function Timer:stop() + self.started = false +end + +---Resets the timer countdown for execution. +function Timer:reset() + self.last_run = system.get_time() +end + +---Restarts the timer countdown for execution. +function Timer:restart() + self:reset() + if not self.started then + self:start() + end +end + +---Check if the timer is running. +---@return boolean +function Timer:running() + return self.started +end + +---Appropriately set the timer interval by converting milliseconds to seconds. +---@param interval integer The interval in milliseconds +function Timer:set_interval(interval) + local new_interval = interval / 1000 + -- As this new interval might be shorter than the currently running one, and + -- because we might already be sleeping waiting for the old interval, we + -- mark the already running coroutine as cancelled, and create a new one. + if self.started and self.interval > new_interval then + self.cancel_thread_marker.cancel = true + self:stop() + self:start() + end + self.interval = new_interval +end + +---To be overwritten by the instantiated timer objects +function Timer:on_timer() end + + +return Timer diff --git a/debian/extra/plugins/lsp/util.lua b/debian/extra/plugins/lsp/util.lua new file mode 100644 index 0000000..588c101 --- /dev/null +++ b/debian/extra/plugins/lsp/util.lua @@ -0,0 +1,474 @@ +-- Some functions adapted from: https://github.com/orbitalquark/textadept-lsp +-- and others added as needed. +-- +-- @copyright Jefferson Gonzalez +-- @license MIT + +local core = require "core" +local common = require "core.common" +local config = require "core.config" +local json = require "plugins.lsp.json" + +local util = {} + +---Check if the given file is currently opened on the editor. +---@param abs_filename string +function util.doc_is_open(abs_filename) + -- Normalize path format to the one used by normal docs + abs_filename = common.normalize_path(abs_filename) or abs_filename + for _, doc in ipairs(core.docs) do + ---@cast doc core.doc + if doc.abs_filename == abs_filename then + return true; + end + end + return false +end + +---Converts a utf-8 column position into the equivalent utf-16 position. +---@param doc core.doc +---@param line integer +---@param column integer +---@return integer col_position +function util.doc_utf8_to_utf16(doc, line, column) + local ltext = doc.lines[line] + local ltext_len = ltext and #ltext or 0 + local ltext_ulen = ltext and utf8extra.len(ltext) or 0 + column = common.clamp(column, 1, ltext_len > 0 and ltext_len or 1) + -- no need for conversion so return column as is + if ltext_len == ltext_ulen then return column end + if column > 1 then + local col = 1 + for pos, code in utf8extra.next, ltext do + if pos >= column then + return col + end + -- Codepoints that high are encoded using surrogate pairs + if code < 0x010000 then + col = col + 1 + else + col = col + 2 + end + end + return col + end + return column +end + +---Converts a utf-16 column position into the equivalent utf-8 position. +---@param doc core.doc +---@param line integer +---@param column integer +---@return integer col_position +function util.doc_utf16_to_utf8(doc, line, column) + local ltext = doc.lines[line] + local ltext_len = ltext and #ltext or 0 + local ltext_ulen = ltext and utf8extra.len(ltext) or 0 + column = common.clamp(column, 1, ltext_len > 0 and ltext_len or 1) + -- no need for conversion so return column as is + if ltext_len == ltext_ulen then return column end + if column > 1 then + local col = 1 + local utf8_pos = 1 + for pos, code in utf8extra.next, ltext do + if col >= column then + return pos + end + utf8_pos = pos + -- Codepoints that high are encoded using surrogate pairs + if code < 0x010000 then + col = col + 1 + else + col = col + 2 + end + end + return utf8_pos + end + return column +end + +---Split a string by the given delimeter +---@param s string The string to split +---@param delimeter string Delimeter without lua patterns +---@param delimeter_pattern? string Optional delimeter with lua patterns +---@return table +---@return boolean ends_with_delimiter +function util.split(s, delimeter, delimeter_pattern) + if not delimeter_pattern then + delimeter_pattern = delimeter + end + + local last_idx = 1 + local result = {} + for match_idx, afer_match_idx in s:gmatch("()"..delimeter_pattern.."()") do + table.insert(result, string.sub(s, last_idx, match_idx - 1)) + last_idx = afer_match_idx + end + if last_idx > #s then + return result, true + else + table.insert(result, string.sub(s, last_idx)) + return result, false + end +end + +---Get the extension component of a filename. +---@param filename string +---@return string +function util.file_extension(filename) + local parts = util.split(filename, "%.") + if #parts > 1 then + return parts[#parts]:gsub("%%", "") + end + + return filename +end + +---Check if a file exists. +---@param file_path string +---@return boolean +function util.file_exists(file_path) + local file = io.open(file_path, "r") + if file ~= nil then + file:close() + return true + end + return false +end + +---Converts the given LSP DocumentUri into a valid filename path. +---@param uri string LSP DocumentUri to convert into a filename. +---@return string +function util.tofilename(uri) + local filename = "" + if PLATFORM == "Windows" then + filename = uri:gsub('^file:///', '') + else + filename = uri:gsub('^file://', '') + end + + filename = filename:gsub( + '%%(%x%x)', + function(hex) return string.char(tonumber(hex, 16)) end + ) + + if PLATFORM == "Windows" then filename = filename:gsub('/', '\\') end + + return filename +end + +---Convert a file path to a LSP valid uri. +---@param file_path string +---@return string +function util.touri(file_path) + local function char_escape(char) + if string.match(char, "[_.~-]") then return char end + if char == "/" then return char end + if char == "\\" and PLATFORM == "Windows" then return "/" end + return string.format("%%%02X", string.byte(char)) + end + + file_path = string.gsub(file_path, "([%W ])", char_escape) + if PLATFORM ~= "Windows" then + file_path = 'file://' .. file_path + else + file_path = 'file:///' .. file_path:gsub('\\', '/') + end + + return file_path +end + +---Converts a document range returned by lsp to a valid document selection. +---@param range table LSP Range. +---@param doc? core.doc +---@return integer line1 +---@return integer col1 +---@return integer line2 +---@return integer col2 +function util.toselection(range, doc) + local line1 = range.start.line + 1 + local col1 = range.start.character + 1 + local line2 = range['end'].line + 1 + local col2 = range['end'].character + 1 + + if doc then + col1 = util.doc_utf16_to_utf8(doc, line1, col1) + col2 = util.doc_utf16_to_utf8(doc, line2, col2) + end + + return line1, col1, line2, col2 +end + +---Opens the given location on a external application. +---@param location string +function util.open_external(location) + local filelauncher = "" + if PLATFORM == "Windows" then + filelauncher = "start" + elseif PLATFORM == "Mac OS X" then + filelauncher = "open" + else + filelauncher = "xdg-open" + end + + -- non-Windows platforms need the text quoted (%q) + if PLATFORM ~= "Windows" then + location = string.format("%q", location) + end + + system.exec(filelauncher .. " " .. location) +end + +---Prettify json output and logs it if config.lsp.log_file is set. +---@param code string +---@return string +function util.jsonprettify(code) + if config.plugins.lsp.prettify_json then + code = json.prettify(code) + end + + if config.plugins.lsp.log_file and #config.plugins.lsp.log_file > 0 then + local log = io.open(config.plugins.lsp.log_file, "a+") + log:write("Output: \n" .. tostring(code) .. "\n\n") + log:close() + end + + return code +end + +---Gets the last component of a path. For example: +---/my/path/to/somwhere would return somewhere. +---@param path string +---@return string +function util.getpathname(path) + local components = {} + if PLATFORM == "Windows" then + components = util.split(path, "\\") + else + components = util.split(path, "/") + end + + if #components > 0 then + return components[#components] + end + + return path +end + +---Check if a value is on a table. +---@param value any +---@param table_array table +---@return boolean +function util.intable(value, table_array) + for _, element in pairs(table_array) do + if element == value then + return true + end + end + + return false +end + +---Remove by key from a table and returns a new +---table with element removed. +---@param table_object table +---@param key_name string|integer +---@return table +function util.table_remove_key(table_object, key_name) + local new_table = {} + for key, data in pairs(table_object) do + if key ~= key_name then + new_table[key] = data + end + end + + return new_table +end + +---Get a table specific field or nil if not found. +---@param t table The table we are going to search for the field. +---@param fieldset string A field spec in the format +---"parent[.child][.subchild]" eg: "myProp.subProp.subSubProp" +---@return any|nil The value of the given field or nil if not found. +function util.table_get_field(t, fieldset) + local fields = util.split(fieldset, ".", "%.") + local field = fields[1] + local value = nil + + if field and #fields > 1 and t[field] then + local sub_fields = table.concat(fields, ".", 2) + value = util.table_get_field(t[field], sub_fields) + elseif field and #fields > 0 and t[field] then + value = t[field] + end + + return value +end + +---Merge the content of the tables into a new one. +---Arguments from the later tables take precedence. +---Doesn't touch the original tables. +---`nil` arguments are ignored. +---@param ... table? +---@return table +function util.deep_merge(...) + local t = {} + local args = table.pack(...) + for i=1,args.n do + local other = args[i] + if other then + assert(type(other) == "table", string.format("Argument %d must be a table", i)) + for k, v in pairs(other) do + if type(v) == "table" then + if type(t[k]) == "table" then + t[k] = util.deep_merge(t[k], v) + else + t[k] = util.deep_merge({}, v) + end + else + t[k] = v + end + end + end + end + return t +end + +---Check if a table is really empty. +---@param t table +---@return boolean +function util.table_empty(t) + return next(t) == nil +end + +---Convert markdown to plain text. +---@param text string +---@return string +function util.strip_markdown(text) + local clean_text = "" + local prev_line = "" + for match in (text.."\n"):gmatch("(.-)".."\n") do + match = match .. "\n" + + -- strip markdown + local new_line = match + -- Block quotes + :gsub("^>+(%s*)", "%1") + -- headings + :gsub("^(%s*)######%s(.-)\n", "%1%2\n") + :gsub("^(%s*)#####%s(.-)\n", "%1%2\n") + :gsub("^(%s*)####%s(.-)\n", "%1%2\n") + :gsub("^(%s*)####%s(.-)\n", "%1%2\n") + :gsub("^(%s*)###%s(.-)\n", "%1%2\n") + :gsub("^(%s*)##%s(.-)\n", "%1%2\n") + :gsub("^(%s*)#%s(.-)\n", "%1%2\n") + -- heading custom id + :gsub("{#.-}", "") + -- emoji + :gsub(":[%w%-_]+:", "") + -- bold and italic + :gsub("%*%*%*(.-)%*%*%*", "%1") + :gsub("___(.-)___", "%1") + :gsub("%*%*_(.-)_%*%*", "%1") + :gsub("__%*(.-)%*__", "%1") + :gsub("___(.-)___", "%1") + -- bold + :gsub("%*%*(.-)%*%*", "%1") + :gsub("__(.-)__", "%1") + -- strikethrough + :gsub("%-%-(.-)%-%-", "%1") + -- italic + :gsub("%*(.-)%*", "%1") + :gsub("%s_(.-)_%s", "%1") + :gsub("\\_(.-)\\_", "_%1_") + :gsub("^_(.-)_", "%1") + -- code + :gsub("^%s*```(%w+)%s*\n", "") + :gsub("^%s*```%s*\n", "") + :gsub("``(.-)``", "%1") + :gsub("`(.-)`", "%1") + -- lines + :gsub("^%-%-%-%-*%s*\n", "") + :gsub("^%*%*%*%**%s*\n", "") + -- reference links + :gsub("^%[[^%^](.-)%]:.-\n", "") + -- footnotes + :gsub("^%[%^(.-)%]:%s+", "[%1]: ") + :gsub("%[%^(.-)%]", "[%1]") + -- Images + :gsub("!%[(.-)%]%((.-)%)", "") + -- links + :gsub("%s<(.-)>%s", "%1") + :gsub("%[(.-)%]%s*%[(.-)%]", "%1") + :gsub("%[(.-)%]%((.-)%)", "%1: %2") + -- remove escaped punctuations + :gsub("\\(%p)", "%1") + + -- if paragraph put in same line + local is_paragraph = false + + local prev_spaces = prev_line:match("^%g+") + local prev_endings = prev_line:match("[ \t\r\n]+$") + local new_spaces = new_line:match("^%g+") + + if prev_spaces and new_spaces then + local new_lines = prev_endings ~= nil + and prev_endings:gsub("[ \t\r]+", "") or "" + + if #new_lines == 1 then + is_paragraph = true + clean_text = clean_text:gsub("[%s\n]+$", "") + .. " " .. new_line:gsub("^%s+", "") + end + end + + if not is_paragraph then + clean_text = clean_text .. new_line + end + + prev_line = new_line + end + return clean_text +end + +---@param text string +---@param font renderer.font +---@param max_width number +function util.wrap_text(text, font, max_width) + local lines = util.split(text, "\n") + local wrapped_text = "" + local longest_line = 0; + for _, line in ipairs(lines) do + local line_len = line:ulen() or 0 + if line_len > longest_line then + longest_line = line_len + local line_width = font:get_width(line) + if line_width > max_width then + local words = util.split(line, " ") + local new_line = words[1] and words[1] or "" + wrapped_text = wrapped_text .. new_line + for w=2, #words do + if font:get_width(new_line .. " " .. words[w]) <= max_width then + new_line = new_line .. " " .. words[w] + wrapped_text = wrapped_text .. " " .. words[w] + else + wrapped_text = wrapped_text .. "\n" .. words[w] + new_line = words[w] + end + end + wrapped_text = wrapped_text .. "\n" + else + wrapped_text = wrapped_text .. line .. "\n" + end + else + wrapped_text = wrapped_text .. line .. "\n" + end + end + + wrapped_text = wrapped_text:gsub("\n\n\n\n?", "\n\n"):gsub("%s*$", "") + + return wrapped_text +end + + +return util diff --git a/debian/extra/plugins/nerdicons.lua b/debian/extra/plugins/nerdicons.lua new file mode 100644 index 0000000..c26c8f2 --- /dev/null +++ b/debian/extra/plugins/nerdicons.lua @@ -0,0 +1,210 @@ +-- mod-version:3 +-- Orginal Author: Jipok +-- Modified by: techie-guy +-- Doesn't work well with scaling mode == "ui" + +-- This is an extension/modification of the nonicons plugin, https://github.com/lite-xl/lite-xl-plugins/blob/master/plugins/nonicons.lua + +-- Any icon can be searched with nerdfonts.com/cheat-sheet + +local common = require "core.common" +local config = require "core.config" +local style = require "core.style" +local TreeView = require "plugins.treeview" +local Node = require "core.node" + +local nerdfonts_symbols = require "libraries.font_symbols_nerdfont_mono_regular" + +-- Config +config.plugins.nerdicons = common.merge({ + use_default_dir_icons = false, + use_default_chevrons = false, + draw_treeview_icons = true, + draw_tab_icons = true, + -- The config specification used by the settings gui + config_spec = { + name = "Nerdicons", + { + label = "Use Default Directory Icons", + description = "When enabled does not use nerdicon directory icons.", + path = "use_default_dir_icons", + type = "toggle", + default = false + }, + { + label = "Use Default Chevrons", + description = "When enabled does not use nerdicon expand/collapse arrow icons.", + path = "use_default_chevrons", + type = "toggle", + default = false + }, + { + label = "Draw Treeview Icons", + description = "Enables file related icons on the treeview.", + path = "draw_treeview_icons", + type = "toggle", + default = true + }, + { + label = "Draw Tab Icons", + description = "Adds file related icons to tabs.", + path = "draw_tab_icons", + type = "toggle", + default = true + }, + } +}, config.plugins.nerdicons) + +local icon_font = renderer.font.load(nerdfonts_symbols.path, 18.5 * SCALE) +local map = nerdfonts_symbols.utf8 +local chevron_width = icon_font:get_width(map["oct-chevron_down"]) +local previous_scale = SCALE + + +local extension_icons = { + [".hxml"] = { "#d3d3d3", "seti-config" }, -- Haxe + [".hx"] = { "#f68712", "seti-haxe" }, + [".d"] = { "#ff3333", "dev-dlang" }, -- D + [".di"] = { "#ff6666", "dev-dlang" }, + [".lua"] = { "#405af0", "seti-lua" }, + [".md"] = { "#519aba", "dev-markdown" }, -- Markdown + [".powershell"] = { "#519aba", "cod-terminal_powershell" }, + [".bat"] = { "#cbcb41", "cod-terminal_cmd" }, + [".txt"] = { "#ffffff", "fa-file_text" }, + [".cpp"] = { "#519aba", "custom-cpp" }, + [".c"] = { "#599eff", "custom-c" }, + [".h"] = { "#79029b", "fa-header" }, + [".hpp"] = { "#79029b", "fa-header" }, + [".py"] = { "#3572A5", "md-language_python" }, -- Python + [".pyc"] = { "#519aba", "md-language_python" }, + [".pyd"] = { "#519aba", "md-language_python" }, + [".php"] = { "#a074c4", "md-language_php" }, + [".cs"] = { "#596706", "md-language_csharp" }, -- C# + [".conf"] = { "#6d8086", "seti-config" }, + [".cfg"] = { "#6d8086", "seti-config" }, + [".toml"] = { "#6d8086", "seti-config" }, + [".yaml"] = { "#6d8086", "seti-yml" }, + [".yml"] = { "#6d8086", "seti-yml" }, + [".json"] = { "#854CC7", "seti-json" }, + [".css"] = { "#519abc", "dev-css3" }, + [".html"] = { "#e34c26", "dev-html5" }, + [".js"] = { "#cbcb41", "dev-javascript_badge" }, + [".cjs"] = { "#cbcb41", "dev-javascript_badge" }, + [".mjs"] = { "#cbcb41", "dev-javascript_badge" }, -- JavaScript + [".ejs"] = { "#ffea7f", "seti-ejs" }, + [".pug"] = { "#a86454", "seti-pug" }, + [".go"] = { "#519aba", "seti-go" }, + [".jpg"] = { "#a074c4", "fa-image" }, + [".png"] = { "#a074c4", "fa-image" }, + [".sh"] = { "#4d5a5e", "cod-terminal_bash" }, + [".bash"] = { "#4d5a5e", "cod-terminal_bash" }, -- Shell + [".java"] = { "#cc3e44", "dev-java" }, + [".scala"] = { "#cc3e44", "dev-scala" }, + [".kt"] = { "#F88A02", "custom-kotlin" }, -- Kotlin + [".pl"] = { "#519aba", "dev-perl" }, -- Perl + [".pm"] = { "#519aba", "dev-perl" }, -- Perl + [".rb"] = { "#701516", "dev-ruby_rough" }, -- Ruby + [".rs"] = { "#c95625", "dev-rust" }, -- Rust + [".rss"] = { "#cc3e44", "fa-rss_square" }, + [".sql"] = { "#dad8d8", "dev-sqllite" }, + [".swift"] = { "#e37933", "dev-swift" }, + [".ts"] = { "#519aba", "md-language_typescript" }, -- TypeScript + [".diff"] = { "#41535b", "oct-diff" }, + [".exe"] = { "#cc3e55", "cod-file_binary" }, + [".make"] = { "#d0bf41", "dev-gnu" }, + [".svg"] = { "#f7ca39", "md-svg" }, + [".ttf"] = { "#dad8d4", "fa-font" }, + [".otf"] = { "#dad8d4", "fa-font" }, + [".vim"] = { "#8f00ff", "custom-vim" }, + [".pdf"] = { "#E53935", "fa-file_pdf_o" }, + [".jl"] = { "#4063d8", "seti-julia" }, + [".mp4"] = { "#e85e00", "oct-video" }, + [".jld2"] = { "#888888", "fa-database" }, + [".ipynb"] = { "#F37726", "seti-notebook" }, +} + + +local known_filenames_icons = { + ["dockerfile"] = { "#296478", "linux-docker" }, + [".gitignore"] = { "#cc3e55", "dev-git" }, + [".gitmodules"] = { "#cc3e56", "dev-git" }, + ["PKGBUILD"] = { "#6d8ccc", "md-package" }, + ["license"] = { "#d0bf41", "seti-license" }, + ["copying"] = { "#d0bf41", "seti-license" }, + ["makefile"] = { "#d0bf41", "dev-gnu" }, + ["cmakelists.txt"] = { "#cc3e55", "md-triangle_outline" }, +} + +-- Preparing colors +for _, v in pairs(extension_icons) do + v[1] = { common.color(v[1]) } +end +for _, v in pairs(known_filenames_icons) do + v[1] = { common.color(v[1]) } +end + +-- Override function to change default icons for dirs, special extensions and names +local TreeView_get_item_icon = TreeView.get_item_icon +function TreeView:get_item_icon(item, active, hovered) + local icon, font, color = TreeView_get_item_icon(self, item, active, hovered) + if previous_scale ~= SCALE then + icon_font:set_size( + icon_font:get_size() * (SCALE / previous_scale) + ) + chevron_width = icon_font:get_width(map["oct-chevron_down"]) + previous_scale = SCALE + end + if not config.plugins.nerdicons.use_default_dir_icons then + icon = map["cod-file"] -- hex ea7b + font = icon_font + color = style.text + if item.type == "dir" then + icon = item.expanded and map["fa-folder_open"] or map["fa-folder"] -- hex f07c and f07b + end + end + if config.plugins.nerdicons.draw_treeview_icons then + local custom_icon = known_filenames_icons[item.name:lower()] + if custom_icon == nil then + custom_icon = extension_icons[item.name:match("^.+(%..+)$")] + end + if custom_icon ~= nil then + color = custom_icon[1] + icon = map[custom_icon[2]] + font = icon_font + end + if active or hovered then + color = style.accent + end + end + return icon, font, color +end + +-- Override function to draw chevrons if setting is disabled +local TreeView_draw_item_chevron = TreeView.draw_item_chevron +function TreeView:draw_item_chevron(item, active, hovered, x, y, w, h) + if not config.plugins.nerdicons.use_default_chevrons then + if item.type == "dir" then + local chevron_icon = item.expanded and "oct-chevron_down" or "oct-chevron_right" + local chevron_color = hovered and style.accent or style.text + common.draw_text(icon_font, chevron_color, map[chevron_icon], nil, x+8, y, 0, h) -- added 8 to x to draw the chevron closer to the icon + end + return chevron_width + style.padding.x + end + return TreeView_draw_item_chevron(self, item, active, hovered, x, y, w, h) +end + +-- Override function to draw icons in tabs titles if setting is enabled +local Node_draw_tab_title = Node.draw_tab_title +function Node:draw_tab_title(view, font, is_active, is_hovered, x, y, w, h) + if config.plugins.nerdicons.draw_tab_icons then + local padx = chevron_width + style.padding.x/2 + local tx = x + padx/16 -- Space for icon + w = w + padx + Node_draw_tab_title(self, view, font, is_active, is_hovered, tx, y, w, h) + if (view == nil) or (view.doc == nil) then return end + local item = { type = "file", name = view.doc:get_name() } + TreeView:draw_item_icon(item, false, is_hovered, x, y, w, h) + else + Node_draw_tab_title(self, view, font, is_active, is_hovered, x, y, w, h) + end +end diff --git a/debian/extra/plugins/open_ext.lua b/debian/extra/plugins/open_ext.lua new file mode 100644 index 0000000..4c57d68 --- /dev/null +++ b/debian/extra/plugins/open_ext.lua @@ -0,0 +1,162 @@ +-- mod-version:3 + +-- The general idea is to check if the file opened is valid utf-8 +-- since lite-xl only supports UTF8 text, others can be safely assumed +-- to be binary +local core = require "core" +local common = require "core.common" +local style = require "core.style" +local DocView = require "core.docview" +local RootView = require "core.rootview" +local View = require "core.view" + + +local function validate_utf8(s, max_len) + local i, p, len = 1, 1, #s + while p <= len and i <= max_len do + if p == s:find("[%z\1-\127]", p) then p = p + 1 + elseif p == s:find("[\194-\223][\128-\191]", p) then p = p + 2 + elseif p == s:find( "\224[\160-\191][\128-\191]", p) + or p == s:find("[\225-\236][\128-\191][\128-\191]", p) + or p == s:find( "\237[\128-\159][\128-\191]", p) + or p == s:find("[\238-\239][\128-\191][\128-\191]", p) then p = p + 3 + elseif p == s:find( "\240[\144-\191][\128-\191][\128-\191]", p) + or p == s:find("[\241-\243][\128-\191][\128-\191][\128-\191]", p) + or p == s:find( "\244[\128-\143][\128-\191][\128-\191]", p) then p = p + 4 + else + return false + end + i = i + 1 + end + return true +end + + +local function replace_view(this, that) + local node = core.root_view.root_node:get_node_for_view(this) + local idx = node:get_view_idx(this) + node:remove_view(core.root_view.root_node, this) + node:add_view(that, idx) + core.root_view.root_node:update_layout() + core.redraw = true +end + + +local msg = "This file is not displayed because it is either binary or uses an unsupported text encoding." +local cmd -- here's evil code again... +if PLATFORM == "Windows" then + cmd = "start %q" +elseif PLATFORM == "Linux" then + cmd = "xdg-open %q" +else + cmd = "open %q" +end + +local opt = { "Open anyway", "Open with other program", "Close" } +local opt_actions = { + function(self) + -- open anyway + local view = DocView(core.open_doc(self.filename)) + replace_view(self, view) + end, + function(self) + -- open externally + local node = core.root_view.root_node:get_node_for_view(self) + node:close_view(core.root_view.root_node, self) + system.exec(string.format(cmd, self.filename)) + end, + function(self) + local node = core.root_view.root_node:get_node_for_view(self) + node:close_view(core.root_view.root_node, self) + end +} + + +local OpenExtView = View:extend() + + +function OpenExtView:new(filename) + OpenExtView.super.new(self) + self.filename = filename +end + + +function OpenExtView:get_name() + return common.basename(self.filename) +end + + +function OpenExtView:each_option() + return coroutine.wrap(function() + local w = (self.size.x - style.padding.x * (#opt + 1)) / #opt + local h = style.font:get_height() + style.padding.y + local x, y = self:get_content_offset() + x = x + style.padding.x + y = y + self.size.y / 2 + style.padding.y + for i, o in ipairs(opt) do + coroutine.yield(i, o, x, y, w, h) + x = x + w + style.padding.x + end + end) +end + + +function OpenExtView:on_mouse_moved(px, py, dx, dy) + OpenExtView.super.on_mouse_moved(self, px, py, dx, dy) + self.hovered = nil + for i, _, x, y, w, h in self:each_option() do + if px > x and px <= x + w and py > y and py <= y + h then + self.hovered = i + break + end + end +end + + +function OpenExtView:on_mouse_pressed(button, x, y, clicks) + if OpenExtView.super.on_mouse_pressed(self, button, x, y, clicks) then return end + if self.hovered then + opt_actions[self.hovered](self) + end +end + + +function OpenExtView:draw() + self:draw_background(style.background) + local x, y = self:get_content_offset() + local lh = style.font:get_height() + y = y + self.size.y / 2 - style.padding.y - lh + common.draw_text(style.font, style.text, msg, "center", x, y, self.size.x, lh) + for i, opt, x, y, w, h in self:each_option() do + local text_color = i == self.hovered and style.background or style.text + renderer.draw_rect(x, y, w, h, style.accent) + if i ~= self.hovered then + renderer.draw_rect(x + 1, y + 1, w - 2, h - 2, style.background) + end + common.draw_text(style.font, text_color, opt, "center", x, y, w, h) + end +end + + +local function validate_doc(doc) + local f = io.open(doc.abs_filename or "") + if not f then return true end + local str = f:read(128 * 4) -- max bytes for 128 codepoints + f:close() + return validate_utf8(str or "", 128) +end + + +local rootview_open_doc = RootView.open_doc +function RootView:open_doc(doc) + -- 128 * 4 == max number of bytes for 128 codepoints + if validate_doc(doc) then + return rootview_open_doc(self, doc) + else + local node = self:get_active_node_default() + local view = OpenExtView(doc.abs_filename or doc.filename) + node:add_view(view) + self.root_node:update_layout() + return view + end +end diff --git a/debian/extra/plugins/select_colorscheme.lua b/debian/extra/plugins/select_colorscheme.lua new file mode 100644 index 0000000..6fa45d4 --- /dev/null +++ b/debian/extra/plugins/select_colorscheme.lua @@ -0,0 +1,132 @@ +-- mod-version:3 +local core = require "core" +local command = require "core.command" +local common = require "core.common" +local style = require "core.style" +local CommandView = require "core.commandview" + +-- ---------------------------------------------------------------- +local PATH_CONFIG = USERDIR .. "/color_settings.lua" + +local Settings = {} +Settings.color_scheme = "" +Settings.color_list = {} +local color_default = {name = "Default", module = "core.style"} +local plugin_enable = false + +-- =========================Proxy method========================== +local move_suggestion_idx = CommandView.move_suggestion_idx + +function CommandView:move_suggestion_idx(dir) + move_suggestion_idx(self, dir) + if plugin_enable then + local color_name = self.suggestions[self.suggestion_idx].text + Settings:change_color(color_name) + end +end + +local on_quit_project = core.on_quit_project + +function core.on_quit_project() + Settings:save_settings() + on_quit_project() +end +-- ---------------------------------------------------------------- + +function Settings:get_color_list() + return self.color_list +end + +function Settings:init() + self:load_settings() + self:make_color_list() +end + +function Settings:make_color_list() + for _, root_dir in ipairs {DATADIR, USERDIR} do + local plugin_dir = root_dir .. "/colors" + for _, filename in ipairs(system.list_dir(plugin_dir) or {}) do + table.insert(self.color_list, filename:match("(.-)%.lua$")) + end + end + table.insert(self.color_list, color_default.name) +end + +function Settings:is_change_color(color_name) + return not (self.color_scheme == color_name) +end + +function Settings:get_color_scheme() + return (self.color_scheme == "") and color_default.name or self.color_scheme +end + +local function make_color_module_name(name) + return (name == color_default.name) and color_default.module or "colors."..name +end + +function Settings:change_color(name) + if self:is_change_color(name) then + core.reload_module(make_color_module_name(name)) + self.color_scheme = name + end +end + +function Settings:save_settings() + local fp = io.open(PATH_CONFIG, "w") + if fp then + fp:write(self.color_scheme) + fp:close() + end +end + +function Settings:load_settings() + local fp = io.open(PATH_CONFIG, "r") + if fp then + local name = fp:read("*a") + if name and name ~= "" then + core.reload_module(make_color_module_name(name)) + Settings.color_scheme = name + end + fp:close() + end +end + +-- -------------------------------Utility-------------------------- +local function table_remove_value(list, value) + for i=1, #list do + if list[i] == value then + table.remove(list, i) + break + end + end +end +-- ---------------------------------------------------------------- +local function normalize_color_list(list) + table_remove_value(list, Settings:get_color_scheme()) + table.sort(list, function(a, b) return string.lower(a) > string.lower(b) end) + return {Settings:get_color_scheme(), table.unpack(list)} +end +-- =========================Add Commands========================== +local color_scheme_submit = function(text, item) + if item then + Settings:change_color(item.text) + plugin_enable = false + end +end + +local color_scheme_suggest = function(text) + plugin_enable = true + local res_list = common.fuzzy_match(Settings:get_color_list(), text) + return normalize_color_list(res_list) +end + +command.add(nil, { + ["ui:color scheme"] = function() + core.command_view:enter("Select color scheme", { + submit = color_scheme_submit, suggest = color_scheme_suggest + }) + end, +}) +-- ---------------------------------------------------------------- + +Settings:init() diff --git a/debian/extra/plugins/settings.lua b/debian/extra/plugins/settings.lua new file mode 100644 index 0000000..2b947ca --- /dev/null +++ b/debian/extra/plugins/settings.lua @@ -0,0 +1,1982 @@ +-- mod-version:3 --priority:0 +local core = require "core" +local config = require "core.config" +local common = require "core.common" +local command = require "core.command" +local keymap = require "core.keymap" +local style = require "core.style" +local View = require "core.view" +local DocView = require "core.docview" + +-- check if widget is installed before proceeding +local widget_found, Widget = pcall(require, "libraries.widget") +if not widget_found then + core.error("Widget library not found: https://github.com/lite-xl/lite-xl-widgets") + return false +end + +local Label = require "libraries.widget.label" +local Line = require "libraries.widget.line" +local NoteBook = require "libraries.widget.notebook" +local Button = require "libraries.widget.button" +local TextBox = require "libraries.widget.textbox" +local SelectBox = require "libraries.widget.selectbox" +local NumberBox = require "libraries.widget.numberbox" +local Toggle = require "libraries.widget.toggle" +local ListBox = require "libraries.widget.listbox" +local FoldingBook = require "libraries.widget.foldingbook" +local FontsList = require "libraries.widget.fontslist" +local ItemsList = require "libraries.widget.itemslist" +local KeybindingDialog = require "libraries.widget.keybinddialog" +local Fonts = require "libraries.widget.fonts" +local FilePicker = require "libraries.widget.filepicker" +local ColorPicker = require "libraries.widget.colorpicker" +local MessageBox = require "libraries.widget.messagebox" + +---@class plugins.settings +local settings = {} + +settings.core = {} +settings.plugins = {} +settings.sections = {} +settings.plugin_sections = {} +settings.config = {} +settings.default_keybindings = {} + +---Enumeration for the different types of settings. +---@type table +settings.type = { + STRING = 1, + NUMBER = 2, + TOGGLE = 3, + SELECTION = 4, + LIST_STRINGS = 5, + BUTTON = 6, + FONT = 7, + FILE = 8, + DIRECTORY = 9, + COLOR = 10 +} + +---@alias settings.types +---| `settings.type.STRING` +---| `settings.type.NUMBER` +---| `settings.type.TOGGLE` +---| `settings.type.SELECTION` +---| `settings.type.LIST_STRINGS` +---| `settings.type.BUTTON` +---| `settings.type.FONT` +---| `settings.type.FILE` +---| `settings.type.DIRECTORY` +---| `settings.type.COLOR` + +---Represents a setting to render on a settings pane. +---@class settings.option +---Title displayed to the user eg: "My Option" +---@field public label string +---Description of the option eg: "Modifies the document indentation" +---@field public description string +---Config path in the config table, eg: section.myoption, myoption, etc... +---@field public path string +---Type of option that will be used to render an appropriate control +---@field public type settings.types | integer +---Default value of the option +---@field public default string | number | boolean | table | table +---Used for NUMBER to indicate the minimum number allowed +---@field public min number +---Used for NUMBER to indiciate the maximum number allowed +---@field public max number +---Used for NUMBER to indiciate the increment/decrement amount +---@field public step number +---Used in a SELECTION to provide the list of valid options +---@field public values table +---Optionally used for FONT to store the generated font group. +---@field public fonts_list table +---Flag set to true when loading user defined fonts fail +---@field public font_error boolean +---Optional function that is used to manipulate the current value on retrieval. +---@field public get_value nil | fun(value:any):any +---Optional function that is used to manipulate the saved value on save. +---@field public set_value nil | fun(value:any):any +---The icon set for a BUTTON +---@field public icon string +---Command or function executed when a BUTTON is clicked +---@field public on_click nil | string | fun(button:string, x:integer, y:integer) +---Optional function executed when the option value is applied. +---@field public on_apply nil | fun(value:any) +---When FILE or DIRECTORY this flag tells the path should exist. +---@field public exists boolean +---Lua patterns used on FILE or DIRECTORY to filter browser results and +---also force the selection to match one of the filters. +---@field public filters table + +---Add a new settings section to the settings UI +---@param section string +---@param options settings.option[] +---@param plugin_name? string Optional name of plugin +---@param overwrite? boolean Overwrite previous section options +function settings.add(section, options, plugin_name, overwrite) + local category = "" + if plugin_name ~= nil then + category = "plugins" + else + category = "core" + end + + if overwrite and settings[category][section] then + settings[category][section] = {} + end + + if not settings[category][section] then + settings[category][section] = {} + if category ~= "plugins" then + table.insert(settings.sections, section) + else + table.insert(settings.plugin_sections, section) + end + end + + if plugin_name ~= nil then + if not settings[category][section][plugin_name] then + settings[category][section][plugin_name] = {} + end + for _, option in ipairs(options) do + table.insert(settings[category][section][plugin_name], option) + end + else + for _, option in ipairs(options) do + table.insert(settings[category][section], option) + end + end +end + +-------------------------------------------------------------------------------- +-- Add Core Settings +-------------------------------------------------------------------------------- + +settings.add("General", + { + { + label = "User Module", + description = "Open your init.lua for customizations.", + type = settings.type.BUTTON, + icon = "P", + on_click = "core:open-user-module" + }, + { + label = "Clear Fonts Cache", + description = "Delete current font cache and regenerate a fresh one.", + type = settings.type.BUTTON, + icon = "C", + on_click = function() + if Fonts.cache_is_building() then + MessageBox.warning( + "Clear Fonts Cache", + { "The font cache is already been built,\n" + .. "status will be logged on the core log." + } + ) + else + MessageBox.info( + "Clear Fonts Cache", + { "Re-building the font cache can take some time,\n" + .. "it is needed when you have installed new fonts\n" + .. "which are not listed on the font picker tool.\n\n" + .. "Do you want to continue?" + }, + function(_, button_id, _) + if button_id == 1 then + Fonts.clean_cache() + end + end, + MessageBox.BUTTONS_YES_NO + ) + end + end + }, + { + label = "Maximum Project Files", + description = "The maximum amount of project files to register.", + path = "max_project_files", + type = settings.type.NUMBER, + default = 2000, + min = 1, + max = 100000, + on_apply = function() + core.rescan_project_directories() + end + }, + { + label = "File Size Limit", + description = "The maximum file size in megabytes allowed for editing.", + path = "file_size_limit", + type = settings.type.NUMBER, + default = 10, + min = 1, + max = 50 + }, + { + label = "Ignore Files", + description = "List of lua patterns matching files to be ignored by the editor.", + path = "ignore_files", + type = settings.type.LIST_STRINGS, + default = { + -- folders + "^%.svn/", "^%.git/", "^%.hg/", "^CVS/", "^%.Trash/", "^%.Trash%-.*/", + "^node_modules/", "^%.cache/", "^__pycache__/", + -- files + "%.pyc$", "%.pyo$", "%.exe$", "%.dll$", "%.obj$", "%.o$", + "%.a$", "%.lib$", "%.so$", "%.dylib$", "%.ncb$", "%.sdf$", + "%.suo$", "%.pdb$", "%.idb$", "%.class$", "%.psd$", "%.db$", + "^desktop%.ini$", "^%.DS_Store$", "^%.directory$", + }, + on_apply = function() + core.rescan_project_directories() + end + }, + { + label = "Maximum Clicks", + description = "The maximum amount of consecutive clicks that are registered by the editor.", + path = "max_clicks", + type = settings.type.NUMBER, + default = 3, + min = 1, + max = 10 + }, + } +) + +settings.add("Graphics", + { + { + label = "Frames Per Second", + description = "Lower value for low end machines and higher for a smoother experience.", + path = "fps", + type = settings.type.NUMBER, + default = 60, + min = 10, + max = 300 + }, + { + label = "Transitions", + description = "If disabled turns off all transitions but improves rendering performance.", + path = "transitions", + type = settings.type.TOGGLE, + default = true + }, + { + label = "Animation Rate", + description = "The amount of time it takes for a transition to finish.", + path = "animation_rate", + type = settings.type.NUMBER, + default = 1.0, + min = 0.5, + max = 3.0, + step = 0.1 + }, + { + label = "Animate Mouse Drag Scroll", + description = "Causes higher cpu usage but smoother scroll transition.", + path = "animate_drag_scroll", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Scrolling Transitions", + path = "disabled_transitions.scroll", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Command View Transitions", + path = "disabled_transitions.commandview", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Context Menu Transitions", + path = "disabled_transitions.contextmenu", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Log View Transitions", + path = "disabled_transitions.logview", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Nag Bar Transitions", + path = "disabled_transitions.nagbar", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Tab Transitions", + path = "disabled_transitions.tabs", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Tab Drag Transitions", + path = "disabled_transitions.tab_drag", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Disable Status Bar Transitions", + path = "disabled_transitions.statusbar", + type = settings.type.TOGGLE, + default = false + }, + } +) + +settings.add("User Interface", + { + { + label = "Font", + description = "The font and fallbacks used on non code text.", + path = "font", + type = settings.type.FONT, + fonts_list = style, + default = { + fonts = { + { + name = "Fira Sans Regular", + path = DATADIR .. "/fonts/FiraSans-Regular.ttf" + } + }, + options = { + size = 15, + antialiasing = "subpixel", + hinting = "slight" + } + } + }, + { + label = "Borderless", + description = "Use built-in window decorations.", + path = "borderless", + type = settings.type.TOGGLE, + default = false, + on_apply = function() + core.configure_borderless_window() + end + }, + { + label = "Always Show Tabs", + description = "Shows tabs even if a single document is opened.", + path = "always_show_tabs", + type = settings.type.TOGGLE, + default = true + }, + { + label = "Maximum Tabs", + description = "The maximum amount of visible document tabs.", + path = "max_tabs", + type = settings.type.NUMBER, + default = 8, + min = 1, + max = 100 + }, + { + label = "Close Button on Tabs", + description = "Display the close button on tabs.", + path = "tab_close_button", + type = settings.type.TOGGLE, + default = true + }, + { + label = "Mouse wheel scroll rate", + description = "The amount to scroll when using the mouse wheel.", + path = "mouse_wheel_scroll", + type = settings.type.NUMBER, + default = 50, + min = 10, + max = 200, + get_value = function(value) + return value / SCALE + end, + set_value = function(value) + return value * SCALE + end + }, + { + label = "Force Scrollbar Status", + description = "Choose a fixed scrollbar state instead of resizing it on mouse hover.", + path = "force_scrollbar_status", + type = settings.type.SELECTION, + default = false, + values = { + {"Disabled", false}, + {"Expanded", "expanded"}, + {"Contracted", "contracted"} + }, + on_apply = function(value) + local mode = config.force_scrollbar_status_mode or "global" + local globally = mode == "global" + local views = core.root_view.root_node:get_children() + for _, view in ipairs(views) do + if globally or view:extends(DocView) then + view.h_scrollbar:set_forced_status(value) + view.v_scrollbar:set_forced_status(value) + else + view.h_scrollbar:set_forced_status(false) + view.v_scrollbar:set_forced_status(false) + end + end + end + }, + { + label = "Force Scrollbar Status Mode", + description = "Choose between applying globally or document views only.", + path = "force_scrollbar_status_mode", + type = settings.type.SELECTION, + default = "global", + values = { + {"Documents", "docview"}, + {"Globally", "global"} + }, + on_apply = function(value) + local globally = value == "global" + local views = core.root_view.root_node:get_children() + for _, view in ipairs(views) do + if globally or view:extends(DocView) then + view.h_scrollbar:set_forced_status(config.force_scrollbar_status) + view.v_scrollbar:set_forced_status(config.force_scrollbar_status) + else + view.h_scrollbar:set_forced_status(false) + view.v_scrollbar:set_forced_status(false) + end + end + end + }, + { + label = "Disable Cursor Blinking", + description = "Disables cursor blinking on text input elements.", + path = "disable_blink", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Cursor Blinking Period", + description = "Interval in seconds in which the cursor blinks.", + path = "blink_period", + type = settings.type.NUMBER, + default = 0.8, + min = 0.3, + max = 2.0, + step = 0.1 + } + } +) + +settings.add("Editor", + { + { + label = "Code Font", + description = "The font and fallbacks used on the code editor.", + path = "code_font", + type = settings.type.FONT, + fonts_list = style, + default = { + fonts = { + { + name = "JetBrains Mono Regular", + path = DATADIR .. "/fonts/JetBrainsMono-Regular.ttf" + } + }, + options = { + size = 15, + antialiasing = "subpixel", + hinting = "slight" + } + } + }, + { + label = "Indentation Type", + description = "The character inserted when pressing the tab key.", + path = "tab_type", + type = settings.type.SELECTION, + default = "soft", + values = { + {"Space", "soft"}, + {"Tab", "hard"} + } + }, + { + label = "Indentation Size", + description = "Amount of spaces shown per indentation.", + path = "indent_size", + type = settings.type.NUMBER, + default = 2, + min = 1, + max = 10 + }, + { + label = "Keep Newline Whitespace", + description = "Do not remove whitespace when pressing enter.", + path = "keep_newline_whitespace", + type = settings.type.TOGGLE, + default = false + }, + { + label = "Line Limit", + description = "Amount of characters at which the line breaking column will be drawn.", + path = "line_limit", + type = settings.type.NUMBER, + default = 80, + min = 1 + }, + { + label = "Line Height", + description = "The amount of spacing between lines.", + path = "line_height", + type = settings.type.NUMBER, + default = 1.2, + min = 1.0, + max = 3.0, + step = 0.1 + }, + { + label = "Highlight Line", + description = "Highlight the current line.", + path = "highlight_current_line", + type = settings.type.SELECTION, + default = true, + values = { + {"Yes", true}, + {"No", false}, + {"No Selection", "no_selection"} + }, + set_value = function(value) + if type(value) == "nil" then return false end + return value + end + }, + { + label = "Maximum Undo History", + description = "The amount of undo elements to keep.", + path = "max_undos", + type = settings.type.NUMBER, + default = 10000, + min = 100, + max = 100000 + }, + { + label = "Undo Merge Timeout", + description = "Time in seconds before applying an undo action.", + path = "undo_merge_timeout", + type = settings.type.NUMBER, + default = 0.3, + min = 0.1, + max = 1.0, + step = 0.1 + }, + { + label = "Symbol Pattern", + description = "A lua pattern used to match symbols in the document.", + path = "symbol_pattern", + type = settings.type.STRING, + default = "[%a_][%w_]*" + }, + { + label = "Non Word Characters", + description = "A string of characters that do not belong to a word.", + path = "non_word_chars", + type = settings.type.STRING, + default = " \\t\\n/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-", + get_value = function(value) + return value:gsub("\n", "\\n"):gsub("\t", "\\t") + end, + set_value = function(value) + return value:gsub("\\n", "\n"):gsub("\\t", "\t") + end + }, + { + label = "Scroll Past the End", + description = "Allow scrolling beyond the document ending.", + path = "scroll_past_end", + type = settings.type.TOGGLE, + default = true + } + } +) + +settings.add("Development", + { + { + label = "Core Log", + description = "Open the list of logged messages.", + type = settings.type.BUTTON, + icon = "f", + on_click = "core:open-log" + }, + { + label = "Log Items", + description = "The maximum amount of entries to keep on the log UI.", + path = "max_log_items", + type = settings.type.NUMBER, + default = 800, + min = 150, + max = 2000 + }, + { + label = "Skip Plugins Version", + description = "Do not verify the plugins required versions at startup.", + path = "skip_plugins_version", + type = settings.type.TOGGLE, + default = false + } + } +) + +settings.add("Status Bar", + { + { + label = "Enabled", + description = "Toggle the default visibility of the status bar.", + path = "statusbar.enabled", + type = settings.type.TOGGLE, + default = true, + on_apply = function(enabled) + if enabled then + core.status_view:show() + else + core.status_view:hide() + end + end + }, + { + label = "Show Notifications", + description = "Toggle the visibility of status messages.", + path = "statusbar.messages", + type = settings.type.TOGGLE, + default = true, + on_apply = function(enabled) + core.status_view:display_messages(enabled) + end + }, + { + label = "Messages Timeout", + description = "The amount in seconds before a notification dissapears.", + path = "message_timeout", + type = settings.type.NUMBER, + default = 5, + min = 1, + max = 30 + } + } +) + +---Retrieve from given config the associated value using the given path. +---@param conf table +---@param path string +---@param default any +---@return any | nil +local function get_config_value(conf, path, default) + local sections = {}; + for match in (path.."."):gmatch("(.-)%.") do + table.insert(sections, match); + end + + local element = conf + for _, section in ipairs(sections) do + if type(element[section]) ~= "nil" then + element = element[section] + else + return default + end + end + + if type(element) == "nil" then + return default + end + + return element +end + +---Loops the given config table using the given path and store the value. +---@param conf table +---@param path string +---@param value any +local function set_config_value(conf, path, value) + local sections = {}; + for match in (path.."."):gmatch("(.-)%.") do + table.insert(sections, match); + end + + local sections_count = #sections + + if sections_count == 1 then + conf[sections[1]] = value + return + elseif type(conf[sections[1]]) ~= "table" then + conf[sections[1]] = {} + end + + local element = conf + for idx, section in ipairs(sections) do + if type(element[section]) ~= "table" then + element[section] = {} + element = element[section] + else + element = element[section] + end + if idx + 1 == sections_count then break end + end + + element[sections[sections_count]] = value +end + +---Get a list of system and user installed plugins. +---@return table +local function get_installed_plugins() + local files, ordered = {}, {} + + for _, root_dir in ipairs {DATADIR, USERDIR} do + local plugin_dir = root_dir .. "/plugins" + for _, filename in ipairs(system.list_dir(plugin_dir) or {}) do + local valid = false + local file_info = system.get_file_info(plugin_dir .. "/" .. filename) + if file_info then + if + file_info.type == "file" + and + filename:match("%.lua$") + and + not filename:match("^language_") + then + valid = true + filename = filename:gsub("%.lua$", "") + elseif file_info.type == "dir" then + if system.get_file_info(plugin_dir .. "/" .. filename .. "/init.lua") then + valid = true + end + end + end + if valid then + if not files[filename] then table.insert(ordered, filename) end + files[filename] = true + end + end + end + + table.sort(ordered) + + return ordered +end + +---Get a list of system and user installed colors. +---@return table +local function get_installed_colors() + local files, ordered = {}, {} + + for _, root_dir in ipairs {DATADIR, USERDIR} do + local dir = root_dir .. "/colors" + for _, filename in ipairs(system.list_dir(dir) or {}) do + local file_info = system.get_file_info(dir .. "/" .. filename) + if + file_info and file_info.type == "file" + and + filename:match("%.lua$") + then + -- read colors + local contents = io.open(dir .. "/" .. filename):read("*a") + local colors = {} + for r, g, b in contents:gmatch("#(%x%x)(%x%x)(%x%x)") do + r = tonumber(r, 16) + g = tonumber(g, 16) + b = tonumber(b, 16) + table.insert(colors, { r, g, b, 0xff }) + end + -- sort colors from darker to lighter + table.sort(colors, function(a, b) + return a[1] + a[2] + a[3] < b[1] + b[2] + b[3] + end) + -- remove duplicate colors + local b = {} + for i = #colors, 1, -1 do + local a = colors[i] + if a[1] == b[1] and a[2] == b[2] and a[3] == b[3] then + table.remove(colors, i) + else + b = colors[i] + end + end + -- insert color to ordered table if not duplicate + filename = filename:gsub("%.lua$", "") + if not files[filename] then + table.insert(ordered, {name = filename, colors = colors}) + end + files[filename] = true + end + end + end + + table.sort(ordered, function(a, b) return a.name < b.name end) + + return ordered +end + +---Capitalize first letter of every word. +---Taken from core.command. +---@param words string +---@return string +local function capitalize_first(words) + return words:sub(1, 1):upper() .. words:sub(2) +end + +---Similar to command prettify_name but also takes care of underscores. +---@param name string +---@return string +local function prettify_name(name) + name = name:gsub("[%-_]", " "):gsub("%S+", capitalize_first) + return name +end + +---Load config options from the USERDIR user_settings.lua and store them on +---settings.config for later usage. +local function load_settings() + local ok, t = pcall(dofile, USERDIR .. "/user_settings.lua") + settings.config = ok and t.config or {} +end + +---Save current config options into the USERDIR user_settings.lua +local function save_settings() + local fp = io.open(USERDIR .. "/user_settings.lua", "w") + if fp then + local output = "{\n [\"config\"] = " + .. common.serialize( + settings.config, + { pretty = true, escape = true, sort = true, initial_indent = 1 } + ):gsub("^%s+", "") + .. "\n}\n" + fp:write("return ", output) + fp:close() + end +end + +---Apply a keybinding and optionally save it. +---@param cmd string +---@param bindings table +---@param skip_save? boolean +---@return table | nil +local function apply_keybinding(cmd, bindings, skip_save) + local row_value = nil + local changed = false + + local original_bindings = { keymap.get_binding(cmd) } + for _, binding in ipairs(original_bindings) do + keymap.unbind(binding, cmd) + end + + if #bindings > 0 then + if + not skip_save + and + settings.config.custom_keybindings + and + settings.config.custom_keybindings[cmd] + then + settings.config.custom_keybindings[cmd] = {} + end + local shortcuts = "" + for _, binding in ipairs(bindings) do + if not binding:match("%+$") and binding ~= "" and binding ~= "none" then + keymap.add({[binding] = cmd}) + shortcuts = shortcuts .. binding .. "\n" + if not skip_save then + if not settings.config.custom_keybindings then + settings.config.custom_keybindings = {} + settings.config.custom_keybindings[cmd] = {} + elseif not settings.config.custom_keybindings[cmd] then + settings.config.custom_keybindings[cmd] = {} + end + table.insert(settings.config.custom_keybindings[cmd], binding) + changed = true + end + end + end + if shortcuts ~= "" then + local bindings_list = shortcuts:gsub("\n$", "") + row_value = { + style.text, cmd, ListBox.COLEND, style.dim, bindings_list + } + end + elseif + not skip_save + and + settings.config.custom_keybindings + and + settings.config.custom_keybindings[cmd] + then + settings.config.custom_keybindings[cmd] = nil + changed = true + end + + if changed then + save_settings() + end + + if not row_value then + row_value = { + style.text, cmd, ListBox.COLEND, style.dim, "none" + } + end + + return row_value +end + +---Load the saved fonts into the config path or fonts_list table. +---@param option settings.option +---@param path string +---@param saved_value any +local function merge_font_settings(option, path, saved_value) + local font_options = saved_value.options or { + size = 15, + antialiasing = "supixel", + hinting = "slight" + } + font_options.size = font_options.size or 15 + font_options.antialiasing = font_options.antialiasing or "subpixel" + font_options.hinting = font_options.hinting or "slight" + + local fonts = {} + local font_loaded = true + for _, font in ipairs(saved_value.fonts) do + local font_data = nil + font_loaded = core.try(function() + font_data = renderer.font.load( + font.path, font_options.size * SCALE, font_options + ) + end) + if font_loaded then + table.insert(fonts, font_data) + else + option.font_error = true + core.error("Settings: could not load %s\n'%s - %s'", path, font.name, font.path) + break + end + end + + if font_loaded then + if option.fonts_list then + set_config_value(option.fonts_list, option.path, renderer.font.group(fonts)) + else + set_config_value(config, path, renderer.font.group(fonts)) + end + end +end + +---Load the user_settings.lua stored options for a plugin into global config. +---@param plugin_name string +---@param options settings.option[] +local function merge_plugin_settings(plugin_name, options) + for _, option in pairs(options) do + if type(option.path) == "string" then + local path = "plugins." .. plugin_name .. "." .. option.path + local saved_value = get_config_value(settings.config, path) + if type(saved_value) ~= "nil" then + if option.type == settings.type.FONT or option.type == "font" then + merge_font_settings(option, path, saved_value) + else + set_config_value(config, path, saved_value) + end + if option.on_apply then + option.on_apply(saved_value) + end + end + end + end +end + +---Merge previously saved settings without destroying the config table. +local function merge_settings() + if type(settings.config) ~= "table" then return end + + -- merge core settings + for _, section in ipairs(settings.sections) do + local options = settings.core[section] + for _, option in ipairs(options) do + if type(option.path) == "string" then + local saved_value = get_config_value(settings.config, option.path) + if type(saved_value) ~= "nil" then + if option.type == settings.type.FONT or option.type == "font" then + merge_font_settings(option, option.path, saved_value) + else + set_config_value(config, option.path, saved_value) + end + if option.on_apply then + option.on_apply(saved_value) + end + end + end + end + end + + -- merge plugin settings + table.sort(settings.plugin_sections) + for _, section in ipairs(settings.plugin_sections) do + local plugins = settings.plugins[section] + for plugin_name, options in pairs(plugins) do + merge_plugin_settings(plugin_name, options) + end + end + + -- apply custom keybindings + if settings.config.custom_keybindings then + for cmd, bindings in pairs(settings.config.custom_keybindings) do + apply_keybinding(cmd, bindings, true) + end + end +end + +---Scan all plugins to check if they define a config_spec and load it. +local function scan_plugins_spec() + for plugin, conf in pairs(config.plugins) do + if type(conf) == "table" and conf.config_spec then + settings.add( + conf.config_spec.name, + conf.config_spec, + plugin + ) + end + end +end + +---Called at core first run to store the default keybindings. +local function store_default_keybindings() + for name, _ in pairs(command.map) do + local keys = { keymap.get_binding(name) } + if #keys > 0 then + settings.default_keybindings[name] = keys + end + end +end + +---@class settings.ui : widget +---@field private notebook widget.notebook +---@field private core widget +---@field private colors widget +---@field private plugins widget +---@field private keybinds widget +---@field private about widget +---@field private core_sections widget.foldingbook +---@field private plugin_sections widget.foldingbook +local Settings = Widget:extend() + +---Constructor +function Settings:new() + Settings.super.new(self, nil, false) + + self.name = "Settings" + self.defer_draw = false + self.border.width = 0 + self.draggable = false + self.scrollable = false + + ---@type widget.notebook + self.notebook = NoteBook(self) + self.notebook.size.x = 250 + self.notebook.size.y = 300 + self.notebook.border.width = 0 + + self.core = self.notebook:add_pane("core", "Core") + self.colors = self.notebook:add_pane("colors", "Colors") + self.plugins = self.notebook:add_pane("plugins", "Plugins") + self.keybinds = self.notebook:add_pane("keybindings", "Keybindings") + self.about = self.notebook:add_pane("about", "About") + + self.notebook:set_pane_icon("core", "P") + self.notebook:set_pane_icon("colors", "W") + self.notebook:set_pane_icon("plugins", "B") + self.notebook:set_pane_icon("keybindings", "M") + self.notebook:set_pane_icon("about", "i") + + self.core_sections = FoldingBook(self.core) + self.core_sections.border.width = 0 + self.core_sections.scrollable = false + + self.plugin_sections = FoldingBook(self.plugins) + self.plugin_sections.border.width = 0 + self.plugin_sections.scrollable = false + + self:load_core_settings() + self:load_color_settings() + self:load_plugin_settings() + self:load_keymap_settings() + + self:setup_about() +end + +---Helper function to add control for both core and plugin settings. +---@oaram pane widget +---@param option settings.option +---@param plugin_name? string | nil +local function add_control(pane, option, plugin_name) + local found = false + local path = type(plugin_name) ~= "nil" and + "plugins." .. plugin_name .. "." .. option.path or option.path + local option_value = nil + if type(path) ~= "nil" then + option_value = get_config_value(config, path, option.default) + end + + if option.get_value then + option_value = option.get_value(option_value) + end + + ---@type widget + local widget = nil + + if type(option.type) == "string" then + option.type = settings.type[option.type:upper()] + end + + if option.type == settings.type.NUMBER then + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.numberbox + local number = NumberBox(pane, option_value, option.min, option.max, option.step) + widget = number + found = true + + elseif option.type == settings.type.TOGGLE then + ---@type widget.toggle + local toggle = Toggle(pane, option.label, option_value) + widget = toggle + found = true + + elseif option.type == settings.type.STRING then + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.textbox + local string = TextBox(pane, option_value or "") + widget = string + found = true + + elseif option.type == settings.type.SELECTION then + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.selectbox + local select = SelectBox(pane) + for _, data in pairs(option.values) do + select:add_option(data[1], data[2]) + end + for idx, _ in ipairs(select.list.rows) do + if select.list:get_row_data(idx) == option_value then + select:set_selected(idx-1) + break + end + end + widget = select + found = true + + elseif option.type == settings.type.BUTTON then + ---@type widget.button + local button = Button(pane, option.label) + if option.icon then + button:set_icon(option.icon) + end + if option.on_click then + local command_type = type(option.on_click) + if command_type == "string" then + function button:on_click() + command.perform(option.on_click) + end + elseif command_type == "function" then + button.on_click = option.on_click + end + end + widget = button + found = true + + elseif option.type == settings.type.LIST_STRINGS then + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.itemslist + local list = ItemsList(pane) + if type(option_value) == "table" then + for _, value in ipairs(option_value) do + list:add_item(value) + end + end + widget = list + found = true + + elseif option.type == settings.type.FONT then + --get fonts without conversion to renderer.font + if type(path) ~= "nil" then + if not option.font_error then + option_value = get_config_value(settings.config, path, option.default) + else + --fallback to default fonts if error loading user defined ones + option_value = option.default + end + end + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.fontslist + local fonts = FontsList(pane) + if type(option_value) == "table" then + for _, font in ipairs(option_value.fonts) do + fonts:add_font(font) + end + + local font_options = option_value.options or { + size = 15, + antialiasing = "supixel", + hinting = "slight" + } + font_options.size = font_options.size or 15 + font_options.antialiasing = font_options.antialiasing or "subpixel" + font_options.hinting = font_options.hinting or "slight" + fonts:set_options(font_options) + end + widget = fonts + found = true + + elseif option.type == settings.type.FILE then + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.filepicker + local file = FilePicker(pane, option_value or "") + if option.exists then + file:set_mode(FilePicker.mode.FILE_EXISTS) + else + file:set_mode(FilePicker.mode.FILE) + end + file.filters = option.filters or {} + widget = file + found = true + + elseif option.type == settings.type.DIRECTORY then + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.filepicker + local file = FilePicker(pane, option_value or "") + if option.exists then + file:set_mode(FilePicker.mode.DIRECTORY_EXISTS) + else + file:set_mode(FilePicker.mode.DIRECTORY) + end + file.filters = option.filters or {} + widget = file + found = true + + elseif option.type == settings.type.COLOR then + ---@type widget.label + Label(pane, option.label .. ":") + ---@type widget.colorpicker + local color = ColorPicker(pane, option_value) + widget = color + found = true + end + + if widget and type(path) ~= "nil" then + function widget:on_change(value) + if self:is(SelectBox) then + value = self:get_selected_data() + elseif self:is(ItemsList) then + value = self:get_items() + elseif self:is(FontsList) then + value = { + fonts = self:get_fonts(), + options = self:get_options() + } + end + + if option.set_value then + value = option.set_value(value) + end + + if self:is(FontsList) then + local fonts = {} + for _, font in ipairs(value.fonts) do + table.insert(fonts, renderer.font.load( + font.path, value.options.size * SCALE, value.options + )) + end + if option.fonts_list then + set_config_value(option.fonts_list, path, renderer.font.group(fonts)) + else + set_config_value(config, path, renderer.font.group(fonts)) + end + else + set_config_value(config, path, value) + end + + set_config_value(settings.config, path, value) + save_settings() + if option.on_apply then + option.on_apply(value) + end + end + end + + if (option.description or option.default) and found then + local text = option.description or "" + local default = "" + local default_type = type(option.default) + if default_type ~= "table" and default_type ~= "nil" then + if text ~= "" then + text = text .. " " + end + default = string.format("(default: %s)", option.default) + end + ---@type widget.label + local description = Label(pane, text .. default) + description.desc = true + end +end + +---Generate all the widgets for core settings. +function Settings:load_core_settings() + for _, section in ipairs(settings.sections) do + local options = settings.core[section] + + ---@type widget|widget.foldingbook.pane|nil + local pane = self.core_sections:get_pane(section) + if not pane then + pane = self.core_sections:add_pane(section, section) + else + pane = pane.container + end + + for _, opt in ipairs(options) do + ---@type settings.option + local option = opt + add_control(pane, option) + end + end +end + +---Function in charge of rendering the colors column of the color pane. +---@param self widget.listbox +---@oaram row integer +---@param x integer +---@param y integer +---@param font renderer.font +---@param color renderer.color +---@param only_calc boolean +---@return number width +---@return number height +local function on_color_draw(self, row, x, y, font, color, only_calc) + local w = self:get_width() - (x - self.position.x) - style.padding.x + local h = font:get_height() + + if not only_calc then + local row_data = self:get_row_data(row) + local width = w/#row_data.colors + + for i = 1, #row_data.colors do + renderer.draw_rect(x + ((i - 1) * width), y, width, h, row_data.colors[i]) + end + end + + return w, h +end + +---Generate the list of all available colors with preview +function Settings:load_color_settings() + self.colors.scrollable = false + + local colors = get_installed_colors() + + ---@type widget.listbox + local listbox = ListBox(self.colors) + + listbox.border.width = 0 + listbox:enable_expand(true) + + listbox:add_column("Theme") + listbox:add_column("Colors") + + for idx, details in ipairs(colors) do + local name = details.name + if settings.config.theme and settings.config.theme == name then + listbox:set_selected(idx) + end + listbox:add_row({ + style.text, name, ListBox.COLEND, on_color_draw + }, {name = name, colors = details.colors}) + end + + function listbox:on_row_click(idx, data) + core.reload_module("colors." .. data.name) + settings.config.theme = data.name + save_settings() + end +end + +---Unload a plugin settings from plugins section. +---@param plugin string +function Settings:disable_plugin(plugin) + for _, section in ipairs(settings.plugin_sections) do + local plugins = settings.plugins[section] + + for plugin_name, options in pairs(plugins) do + if plugin_name == plugin then + self.plugin_sections:delete_pane(section) + end + end + end + + if + type(settings.config.enabled_plugins) == "table" + and + settings.config.enabled_plugins[plugin] + then + settings.config.enabled_plugins[plugin] = nil + end + if type(settings.config.disabled_plugins) ~= "table" then + settings.config.disabled_plugins = {} + end + + settings.config.disabled_plugins[plugin] = true + save_settings() +end + +---Load plugin and append its settings to the plugins section. +---@param plugin string +function Settings:enable_plugin(plugin) + local loaded = false + local config_type = type(config.plugins[plugin]) + if config_type == "boolean" or config_type == "nil" then + config.plugins[plugin] = {} + loaded = true + end + + require("plugins." .. plugin) + + if config.plugins[plugin] and config.plugins[plugin].config_spec then + local conf = config.plugins[plugin].config_spec + settings.add(conf.name, conf, plugin, true) + end + + for _, section in ipairs(settings.plugin_sections) do + local plugins = settings.plugins[section] + + for plugin_name, options in pairs(plugins) do + if plugin_name == plugin then + ---@type widget|widget.foldingbook.pane|nil + local pane = self.plugin_sections:get_pane(section) + if not pane then + pane = self.plugin_sections:add_pane(section, section) + else + pane = pane.container + end + + merge_plugin_settings(plugin, options) + + for _, opt in ipairs(options) do + ---@type settings.option + local option = opt + add_control(pane, option, plugin_name) + end + end + end + end + + if + type(settings.config.disabled_plugins) == "table" + and + settings.config.disabled_plugins[plugin] + then + settings.config.disabled_plugins[plugin] = nil + end + if type(settings.config.enabled_plugins) ~= "table" then + settings.config.enabled_plugins = {} + end + + settings.config.enabled_plugins[plugin] = true + save_settings() + + if loaded then + core.log("Loaded '%s' plugin", plugin) + end +end + +---Generate all the widgets for plugin settings. +function Settings:load_plugin_settings() + ---@type widget|widget.foldingbook.pane|nil + local pane = self.plugin_sections:get_pane("enable_disable") + if not pane then + pane = self.plugin_sections:add_pane("enable_disable", "Installed") + else + pane = pane.container + end + + -- requires earlier access to startup process + Label( + pane, + "Notice: disabling plugins will not take effect until next restart" + ) + + Line(pane, 2, 10) + + local plugins = get_installed_plugins() + for _, plugin in ipairs(plugins) do + if plugin ~= "settings" then + local enabled = false + + if + ( + type(config.plugins[plugin]) ~= "nil" + and + config.plugins[plugin] ~= false + ) + or + ( + settings.config.enabled_plugins + and + settings.config.enabled_plugins[plugin] + ) + then + enabled = true + end + + local this = self + + ---@type widget.toggle + local toggle = Toggle(pane, prettify_name(plugin), enabled) + function toggle:on_change(value) + if value then + this:enable_plugin(plugin) + else + this:disable_plugin(plugin) + end + end + end + end + + table.sort(settings.plugin_sections) + + for _, section in ipairs(settings.plugin_sections) do + local plugins = settings.plugins[section] + + for plugin_name, options in pairs(plugins) do + ---@type widget|widget.foldingbook.pane|nil + local pane = self.plugin_sections:get_pane(section) + if not pane then + pane = self.plugin_sections:add_pane(section, section) + else + pane = pane.container + end + + for _, opt in ipairs(options) do + ---@type settings.option + local option = opt + add_control(pane, option, plugin_name) + end + end + end +end + +---@type widget.keybinddialog +local keymap_dialog = KeybindingDialog() + +function keymap_dialog:on_save(bindings) + local row_value = apply_keybinding(self.command, bindings) + if row_value then + self.listbox:set_row(self.row_id, row_value) + end +end + +function keymap_dialog:on_reset() + local default_keys = settings.default_keybindings[self.command] + local current_keys = { keymap.get_binding(self.command) } + + for _, binding in ipairs(current_keys) do + keymap.unbind(binding, self.command) + end + + if default_keys and #default_keys > 0 then + local cmd = self.command + if not settings.config.custom_keybindings then + settings.config.custom_keybindings = {} + settings.config.custom_keybindings[cmd] = {} + elseif not settings.config.custom_keybindings[cmd] then + settings.config.custom_keybindings[cmd] = {} + end + local shortcuts = "" + for _, binding in ipairs(default_keys) do + keymap.add({[binding] = cmd}) + shortcuts = shortcuts .. binding .. "\n" + table.insert(settings.config.custom_keybindings[cmd], binding) + end + local bindings_list = shortcuts:gsub("\n$", "") + self.listbox:set_row(self.row_id, { + style.text, cmd, ListBox.COLEND, style.dim, bindings_list + }) + else + self.listbox:set_row(self.row_id, { + style.text, self.command, ListBox.COLEND, style.dim, "none" + }) + end + if + settings.config.custom_keybindings + and + settings.config.custom_keybindings[self.command] + then + settings.config.custom_keybindings[self.command] = nil + save_settings() + end +end + +---Generate the list of all available commands and allow editing their keymaps. +function Settings:load_keymap_settings() + self.keybinds.scrollable = false + + local ordered = {} + for name, _ in pairs(command.map) do + table.insert(ordered, name) + end + table.sort(ordered) + + ---@type widget.textbox + local textbox = TextBox(self.keybinds, "", "filter bindings...") + + ---@type widget.listbox + local listbox = ListBox(self.keybinds) + + listbox.border.width = 0 + + listbox:add_column("Command") + listbox:add_column("Bindings") + + for _, name in ipairs(ordered) do + local keys = { keymap.get_binding(name) } + local binding = "" + if #keys == 1 then + binding = keys[1] + elseif #keys > 1 then + binding = keys[1] + for idx, key in ipairs(keys) do + if idx ~= 1 then + binding = binding .. "\n" .. key + end + end + elseif #keys < 1 then + binding = "none" + end + listbox:add_row({ + style.text, name, ListBox.COLEND, style.dim, binding + }, name) + end + + function textbox:on_change(value) + listbox:filter(value) + end + + function listbox:on_mouse_pressed(button, x, y, clicks) + listbox.super.on_mouse_pressed(self, button, x, y, clicks) + local idx = listbox:get_selected() + local data = listbox:get_row_data(idx) + if clicks == 2 and not keymap_dialog:is_visible() then + local bindings = { keymap.get_binding(data) } + keymap_dialog:set_bindings(bindings) + keymap_dialog.row_id = idx + keymap_dialog.command = data + keymap_dialog.listbox = self + keymap_dialog:show() + end + end + + ---@param self widget + function self.keybinds:update_positions() + textbox:set_position(0, 0) + textbox:set_size(self:get_width() - self.border.width * 2) + listbox:set_position(0, textbox:get_bottom()) + listbox:set_size(self:get_width() - self.border.width * 2, self:get_height() - textbox:get_height()) + end +end + +function Settings:setup_about() + ---@type widget.label + local title = Label(self.about, "Lite XL") + title.font = "big_font" + ---@type widget.label + local version = Label(self.about, "version " .. VERSION) + ---@type widget.label + local description = Label( + self.about, + "A lightweight text editor written in Lua, adapted from lite." + ) + + local function open_link(link) + local platform_filelauncher + if PLATFORM == "Windows" then + platform_filelauncher = "start" + elseif PLATFORM == "Mac OS X" then + platform_filelauncher = "open" + else + platform_filelauncher = "xdg-open" + end + system.exec(platform_filelauncher .. " " .. link) + end + + ---@type widget.button + local button = Button(self.about, "Visit Website") + button:set_tooltip("Open https://lite-xl.com/") + function button:on_click() open_link("https://lite-xl.com/") end + + ---@type widget.listbox + local contributors = ListBox(self.about) + contributors.scrollable = true + contributors:add_column("Contributors") + contributors:add_column("") + contributors:add_column("Website") + function contributors:on_row_click(_, data) open_link(data) end + +local contributors_list = { + { "Rxi", "Lite Founder", "https://github.com/rxi" }, + { "Francesco Abbate", "Lite XL Founder", "https://github.com/franko" }, + { "Adam Harrison", "Core", "https://github.com/adamharrison" }, + { "Andrea Zanellato", "CI, Website", "https://github.com/redtide" }, + { "Björn Buckwalter", "MacOS Support", "https://github.com/bjornbm" }, + { "boppyt", "Contributor", "https://github.com/boppyt" }, + { "Cukmekerb", "Contributor", "https://github.com/vincens2005" }, + { "Daniel Rocha", "Contributor", "https://github.com/dannRocha" }, + { "daubaris", "Contributor", "https://github.com/daubaris" }, + { "Dheisom Gomes", "Contributor", "https://github.com/dheisom" }, + { "Evgeny Petrovskiy", "Contributor", "https://github.com/eugenpt" }, + { "Ferdinand Prantl", "Contributor", "https://github.com/prantlf" }, + { "Jan", "Build System", "https://github.com/Jan200101" }, + { "Janis-Leuenberger", "MacOS Support", "https://github.com/Janis-Leuenberger" }, + { "Jefferson", "Contributor", "https://github.com/jgmdev" }, + { "Jipok", "Contributor", "https://github.com/Jipok" }, + { "Joshua Minor", "Contributor", "https://github.com/jminor" }, + { "George Linkovsky", "Contributor", "https://github.com/Timofffee" }, + { "Guldoman", "Core", "https://github.com/Guldoman" }, + { "liquidev", "Contributor", "https://github.com/liquidev" }, + { "Mat Mariani", "MacOS Support", "https://github.com/mathewmariani" }, + { "Nightwing", "Contributor", "https://github.com/Nightwing13" }, + { "Nils Kvist", "Contributor", "https://github.com/budRich" }, + { "Not-a-web-Developer", "Contributor", "https://github.com/Not-a-web-Developer" }, + { "Robert Štojs", "CI", "https://github.com/netrobert" }, + { "sammyette", "Plugins", "https://github.com/TorchedSammy" }, + { "Takase", "Core", "https://github.com/takase1121" }, + { "xwii", "Contributor", "https://github.com/xcb-xwii" } +} + + for _, c in ipairs(contributors_list) do + contributors:add_row({ + c[1], ListBox.COLEND, c[2], ListBox.COLEND, c[3] + }, c[3]) + end + + ---@param self widget + function self.about:update_positions() + local center = self:get_width() / 2 + + title:set_label("Lite XL") + title:set_position( + center - (title:get_width() / 2), + style.padding.y + ) + + version:set_position( + center - (version:get_width() / 2), + title:get_bottom() + (style.padding.y / 2) + ) + + description:set_position( + center - (description:get_width() / 2), + version:get_bottom() + (style.padding.y / 2) + ) + + button:set_position( + center - (button:get_width() / 2), + description:get_bottom() + style.padding.y + ) + + contributors:set_position( + style.padding.x, + button:get_bottom() + style.padding.y + ) + + contributors:set_size( + self:get_width() - (style.padding.x * 2), + self:get_height() - (button:get_bottom() + (style.padding.y * 2)) + ) + + contributors:set_visible_rows() + end +end + +---Reposition and resize core and plugin widgets. +function Settings:update() + if not Settings.super.update(self) then return end + + self.notebook:set_size(self.size.x, self.size.y) + + for _, section in ipairs({self.core_sections, self.plugin_sections}) do + if section.parent:is_visible() then + section:set_size( + section.parent.size.x - (style.padding.x), + section:get_real_height() + ) + section:set_position(style.padding.x / 2, 0) + for _, pane in ipairs(section.panes) do + local prev_child = nil + for pos=#pane.container.childs, 1, -1 do + local child = pane.container.childs[pos] + local x, y = 10, (10 * SCALE) + if prev_child then + if + (prev_child:is(Label) and not prev_child.desc) + or + (child:is(Label) and child.desc) + then + y = prev_child:get_bottom() + (10 * SCALE) + else + y = prev_child:get_bottom() + (30 * SCALE) + end + end + if child:is(Line) then + x = 0 + elseif child:is(ItemsList) or child:is(FilePicker) or child:is(TextBox) then + child:set_size(pane.container:get_width() - 20, child.size.y) + end + child:set_position(x, y) + prev_child = child + end + end + end + end + + if self.keybinds:is_visible() then + self.keybinds:update_positions() + end + + if self.about:is_visible() then + self.about:update_positions() + end +end + +-------------------------------------------------------------------------------- +-- overwrite core run to inject previously saved settings +-------------------------------------------------------------------------------- +local core_run = core.run +function core.run() + store_default_keybindings() + + -- load plugins disabled by default and enabled by user + if settings.config.enabled_plugins then + for name, _ in pairs(settings.config.enabled_plugins) do + if not config.plugins[name] then + require("plugins." .. name) + end + end + end + + -- append all settings defined in the plugins spec + scan_plugins_spec() + + -- merge custom settings into config + merge_settings() + + ---@type settings.ui + settings.ui = Settings() + + -- apply user chosen color theme + if settings.config.theme and settings.config.theme ~= "default" then + core.try(function() + core.reload_module("colors." .. settings.config.theme) + end) + end + + -- re-apply user settings + core.load_user_directory() + core.load_project_module() + + core_run() +end + +-------------------------------------------------------------------------------- +-- Disable plugins at startup, only works if this file is the first +-- required on user module, or priority tag is obeyed by lite-xl. +-------------------------------------------------------------------------------- +-- load custom user settings that include list of disabled plugins +load_settings() + +-- only disable non already loaded plugins +if settings.config.disabled_plugins then + for name, _ in pairs(settings.config.disabled_plugins) do + if not package.loaded[name] then + config.plugins[name] = false + end + end +end + +-- properly apply skip_plugins_version before other plugins are loaded +if settings.config.skip_plugins_version then + config.skip_plugins_version = true +else + config.skip_plugins_version = false +end + +-------------------------------------------------------------------------------- +-- Add command and keymap to load settings view +-------------------------------------------------------------------------------- +command.add(nil, { + ["ui:settings"] = function() + settings.ui:show() + local node = core.root_view:get_active_node_default() + local found = false + for _, view in ipairs(node.views) do + if view == settings.ui then + found = true + node:set_active_view(view) + break + end + end + if not found then + node:add_view(settings.ui) + end + end, +}) + +keymap.add { + ["ctrl+alt+p"] = "ui:settings" +} + +-------------------------------------------------------------------------------- +-- Overwrite toolbar preferences command to open the settings gui +-------------------------------------------------------------------------------- +if config.plugins.toolbarview ~= false then + local ToolbarView = require "plugins.toolbarview" + local toolbarview_on_mouse_moved = ToolbarView.on_mouse_moved + function ToolbarView:on_mouse_moved(px, py, ...) + toolbarview_on_mouse_moved(self, px, py, ...) + if + self.hovered_item + and + self.hovered_item.command == "core:open-user-module" + then + self.hovered_item.command = "ui:settings" + end + end +end + +-------------------------------------------------------------------------------- +-- Overwrite View:new to allow setting force scrollbar status globally +-------------------------------------------------------------------------------- +local view_new = View.new +function View:new() + view_new(self) + local mode = config.force_scrollbar_status_mode or "global" + local globally = mode == "global" + if globally then + --This is delayed to allow widgets to also apply it to child views/widgets + core.add_thread(function() + self.v_scrollbar:set_forced_status(config.force_scrollbar_status) + self.h_scrollbar:set_forced_status(config.force_scrollbar_status) + end) + end +end + +return settings; diff --git a/debian/extra/plugins/smoothcaret.lua b/debian/extra/plugins/smoothcaret.lua new file mode 100644 index 0000000..86718de --- /dev/null +++ b/debian/extra/plugins/smoothcaret.lua @@ -0,0 +1,115 @@ +-- mod-version:3 +local core = require "core" +local config = require "core.config" +local style = require "core.style" +local common = require "core.common" +local DocView = require "core.docview" + +config.plugins.smoothcaret = common.merge({ + enabled = true, + rate = 0.65, + -- The config specification used by the settings gui + config_spec = { + name = "Smooth Caret", + { + label = "Enabled", + description = "Disable or enable the smooth caret animation.", + path = "enabled", + type = "toggle", + default = true + }, + { + label = "Rate", + description = "Speed of the animation.", + path = "rate", + type = "number", + default = 0.65, + min = 0.2, + max = 1.0, + step = 0.05 + }, + } +}, config.plugins.smoothcaret) + +local caret_idx = 1 + +local docview_update = DocView.update +function DocView:update() + docview_update(self) + + if not config.plugins.smoothcaret.enabled then return end + + local minline, maxline = self:get_visible_line_range() + + -- We need to keep track of all the carets + if not self.carets then + self.carets = { } + end + -- and we need the list of visible ones that `DocView:draw_caret` will use in succession + self.visible_carets = { } + + local idx, v_idx = 1, 1 + for _, line, col in self.doc:get_selections() do + local x, y = self:get_line_screen_position(line, col) + -- Keep the position relative to the whole View + -- This way scrolling won't animate the caret + x = x + self.scroll.x + y = y + self.scroll.y + + if not self.carets[idx] then + self.carets[idx] = { current = { x = x, y = y }, target = { x = x, y = y } } + end + + local c = self.carets[idx] + c.target.x = x + c.target.y = y + + -- Chech if the number of carets changed + if self.last_n_selections ~= #self.doc.selections then + -- Don't animate when there are new carets + c.current.x = x + c.current.y = y + else + self:move_towards(c.current, "x", c.target.x, config.plugins.smoothcaret.rate) + self:move_towards(c.current, "y", c.target.y, config.plugins.smoothcaret.rate) + end + + -- Keep track of visible carets + if line >= minline and line <= maxline then + self.visible_carets[v_idx] = self.carets[idx] + v_idx = v_idx + 1 + end + idx = idx + 1 + end + self.last_n_selections = #self.doc.selections + + -- Remove unused carets to avoid animating new ones when they are added + for i = idx, #self.carets do + self.carets[i] = nil + end + + if self.mouse_selecting ~= self.last_mouse_selecting then + self.last_mouse_selecting = self.mouse_selecting + -- Show the caret on click, so that it can be seen moving towards the new position + if self.mouse_selecting then + core.blink_timer = core.blink_timer + config.blink_period / 2 + core.redraw = true + end + end + + -- This is used by `DocView:draw_caret` to keep track of the current caret + caret_idx = 1 +end + +local docview_draw_caret = DocView.draw_caret +function DocView:draw_caret(x, y) + if not config.plugins.smoothcaret.enabled then + docview_draw_caret(self, x, y) + return + end + + local c = self.visible_carets[caret_idx] or { current = { x = x, y = y } } + docview_draw_caret(self, c.current.x - self.scroll.x, c.current.y - self.scroll.y) + + caret_idx = caret_idx + 1 +end diff --git a/debian/install b/debian/install index 7c3a5e6..58ae498 100644 --- a/debian/install +++ b/debian/install @@ -1,2 +1,118 @@ debian/extra/vscode_dark.lua usr/share/lite-xl/colors/ debian/extra/init.lua etc/skel/.config/lite-xl/ +debian/extra/plugins/lsp usr/share/lite-xl/plugins +debian/extra/libraries/widget usr/share/lite-xl/libraries +debian/extra/libraries/font_symbols_nerdfont_mono_regular.lua usr/share/lite-xl/libraries/ +debian/extra/fonts/SymbolsNerdFontMono-Regular.ttf usr/share/lite-xl/libraries/font_symbols_nerdfont_mono_regular/ +debian/extra/plugins/fontconfig.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/gitopen.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/gitstatus.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_R.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_angelscript.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_assembly_riscv.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_assembly_x86.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_autohotkey_v1.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_awk.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_batch.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_bend.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_bib.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_blade.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_blueprint.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_brainfuck.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_buzz.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_c7.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_caddyfile.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_carbon.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_clojure.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_cmake.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_csharp.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_cue.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_d.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_dart.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_diff.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_edp.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_ejs.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_elixir.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_elm.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_env.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_erb.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_fe.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_fennel.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_fortran.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_fstab.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_gabc.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_gdscript.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_glsl.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_gmi.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_go.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_graphql.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_gravity.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_groovy.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_hare.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_haxe.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_hlsl.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_hs.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_htaccess.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_ignore.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_ini.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_java.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_jiyu.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_json.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_jsx.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_julia.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_kdl.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_kotlin.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_lilypond.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_liquid.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_lobster.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_lox.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_make.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_marte.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_meson.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_miniscript.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_moon.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_nelua.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_nginx.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_nim.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_nix.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_objc.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_odin.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_openscad.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_perl.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_php.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_pico8.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_pkgbuild.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_po.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_powershell.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_psql.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_rescript.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_ring.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_rivet.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_ruby.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_rust.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_sass.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_scala.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_sh.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_ssh_config.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_st.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_starlark.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_swift.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_tal.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_tau.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_tcl.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_teal.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_tex.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_toml.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_ts.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_tsx.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_typst.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_umka.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_v.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_wren.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_yaml.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/language_zig.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/nerdicons.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/open_ext.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/select_colorscheme.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/settings.lua usr/share/lite-xl/plugins/ +debian/extra/plugins/smoothcaret.lua usr/share/lite-xl/plugins/

    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

    Xg4-;$AVn)BMXvZBipV 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 wQrJ)XuV@4m-h*XWVLy2 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⁡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�XGNmX_z;X9p1~&o#RTRG{^>x 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

    sy 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 z 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