From 0fd4d241a75416d536b1eae3069eb1a1f8984593 Mon Sep 17 00:00:00 2001 From: Thomas Sindt Date: Thu, 4 Jun 2026 18:11:33 +0200 Subject: [PATCH] neue config Files --- bashrc | 67 +- config/mc/ini | 144 ++ config/mc/panels.ini | 0 config/micro/bindings.json | 5 + config/micro/buffers/history | Bin 0 -> 741 bytes config/micro/colorschemes/atom-dark.micro | 33 + config/micro/colorschemes/bubblegum.micro | 31 + config/micro/colorschemes/cmc-16.micro | 47 + config/micro/colorschemes/cmc-tc.micro | 43 + config/micro/colorschemes/darcula.micro | 34 + config/micro/colorschemes/default.micro | 1 + config/micro/colorschemes/dracula-tc.micro | 49 + config/micro/colorschemes/dukedark-tc.micro | 38 + config/micro/colorschemes/dukelight-tc.micro | 38 + config/micro/colorschemes/dukeubuntu-tc.micro | 38 + config/micro/colorschemes/geany.micro | 29 + config/micro/colorschemes/gotham.micro | 29 + config/micro/colorschemes/gruvbox-tc.micro | 29 + config/micro/colorschemes/gruvbox.micro | 26 + config/micro/colorschemes/material-tc.micro | 36 + config/micro/colorschemes/monokai-dark.micro | 28 + config/micro/colorschemes/monokai.micro | 34 + config/micro/colorschemes/one-dark.micro | 39 + config/micro/colorschemes/railscast.micro | 37 + config/micro/colorschemes/simple.micro | 33 + config/micro/colorschemes/solarized-tc.micro | 31 + config/micro/colorschemes/solarized.micro | 30 + config/micro/colorschemes/sunny-day.micro | 29 + config/micro/colorschemes/twilight.micro | 40 + config/micro/colorschemes/zenburn.micro | 30 + config/micro/plug/filemanager/.editorconfig | 17 + config/micro/plug/filemanager/CHANGELOG.md | 109 + config/micro/plug/filemanager/LICENSE | 21 + config/micro/plug/filemanager/README.md | 56 + config/micro/plug/filemanager/example.jpg | Bin 0 -> 115612 bytes config/micro/plug/filemanager/filemanager.lua | 1392 +++++++++++ config/micro/plug/filemanager/repo.json | 45 + config/micro/plug/filemanager/syntax.yaml | 9 + config/micro/settings.json | 5 + config/micro/syntax/LICENSE | 22 + config/micro/syntax/PowerShell.yaml | 128 + config/micro/syntax/README.md | 63 + config/micro/syntax/ada.yaml | 43 + config/micro/syntax/apacheconf.yaml | 59 + config/micro/syntax/arduino.yaml | 101 + config/micro/syntax/asciidoc.yaml | 51 + config/micro/syntax/asm.yaml | 123 + config/micro/syntax/ats.yaml | 99 + config/micro/syntax/awk.yaml | 44 + config/micro/syntax/b.yaml | 87 + config/micro/syntax/bat.yaml | 57 + config/micro/syntax/c.yaml | 60 + config/micro/syntax/caddyfile.yaml | 23 + config/micro/syntax/cake.yaml | 7 + config/micro/syntax/clojure.yaml | 38 + config/micro/syntax/cmake.yaml | 42 + config/micro/syntax/coffeescript.yaml | 56 + config/micro/syntax/colortest.yaml | 19 + config/micro/syntax/conky.yaml | 17 + config/micro/syntax/cpp.yaml | 91 + config/micro/syntax/crontab.yaml | 36 + config/micro/syntax/crystal.yaml | 72 + config/micro/syntax/csharp.yaml | 52 + config/micro/syntax/css.yaml | 44 + config/micro/syntax/csx.yaml | 8 + config/micro/syntax/cuda.yaml | 68 + config/micro/syntax/cython.yaml | 52 + config/micro/syntax/d.yaml | 121 + config/micro/syntax/dart.yaml | 46 + config/micro/syntax/default.yaml | 10 + config/micro/syntax/dockerfile.yaml | 36 + config/micro/syntax/dot.yaml | 29 + config/micro/syntax/elixir.yaml | 30 + config/micro/syntax/elm.yaml | 38 + config/micro/syntax/erb.yaml | 42 + config/micro/syntax/erlang.yaml | 45 + config/micro/syntax/fish.yaml | 48 + config/micro/syntax/forth.yaml | 34 + config/micro/syntax/fortran.yaml | 64 + config/micro/syntax/freebsd-kernel.yaml | 14 + config/micro/syntax/fsharp.yaml | 48 + config/micro/syntax/gdscript.yaml | 61 + config/micro/syntax/gemini.yaml | 19 + config/micro/syntax/gentoo-ebuild.yaml | 48 + config/micro/syntax/gentoo-etc-portage.yaml | 23 + config/micro/syntax/git-commit.yaml | 35 + config/micro/syntax/git-config.yaml | 14 + config/micro/syntax/git-rebase-todo.yaml | 19 + config/micro/syntax/gleam.yaml | 69 + config/micro/syntax/glsl.yaml | 26 + config/micro/syntax/gnuplot.yaml | 15 + config/micro/syntax/go.yaml | 62 + config/micro/syntax/godoc.yaml | 17 + config/micro/syntax/golo.yaml | 73 + config/micro/syntax/gomod.yaml | 31 + config/micro/syntax/graphql.yaml | 47 + config/micro/syntax/groff.yaml | 30 + config/micro/syntax/groovy.yaml | 111 + config/micro/syntax/haml.yaml | 16 + config/micro/syntax/hare.yaml | 52 + config/micro/syntax/haskell.yaml | 52 + config/micro/syntax/hc.yaml | 52 + config/micro/syntax/html.yaml | 70 + config/micro/syntax/html4.yaml | 25 + config/micro/syntax/html5.yaml | 25 + config/micro/syntax/ini.yaml | 23 + config/micro/syntax/inputrc.yaml | 14 + config/micro/syntax/java.yaml | 37 + config/micro/syntax/javascript.yaml | 76 + config/micro/syntax/jinja2.yaml | 19 + config/micro/syntax/json.yaml | 39 + config/micro/syntax/jsonnet.yaml | 92 + config/micro/syntax/julia.yaml | 57 + config/micro/syntax/justfile.yaml | 40 + config/micro/syntax/keymap.yaml | 27 + config/micro/syntax/kickstart.yaml | 16 + config/micro/syntax/kotlin.yaml | 66 + config/micro/syntax/kvlang.yaml | 67 + config/micro/syntax/ledger.yaml | 14 + config/micro/syntax/lfe.yaml | 17 + config/micro/syntax/lilypond.yaml | 26 + config/micro/syntax/lisp.yaml | 17 + config/micro/syntax/log.yaml | 92 + config/micro/syntax/lua.yaml | 111 + config/micro/syntax/mail.yaml | 25 + config/micro/syntax/make_headers.go | 80 + config/micro/syntax/makefile.yaml | 38 + config/micro/syntax/man.yaml | 12 + config/micro/syntax/markdown.yaml | 49 + config/micro/syntax/mc.yaml | 23 + config/micro/syntax/meson.yaml | 51 + config/micro/syntax/micro.yaml | 34 + config/micro/syntax/mpdconf.yaml | 13 + config/micro/syntax/msbuild.yaml | 6 + config/micro/syntax/nanorc.yaml | 16 + config/micro/syntax/nftables.yaml | 30 + config/micro/syntax/nginx.yaml | 22 + config/micro/syntax/nim.yaml | 27 + config/micro/syntax/nix.yaml | 32 + config/micro/syntax/nu.yaml | 110 + config/micro/syntax/objc.yaml | 60 + config/micro/syntax/ocaml.yaml | 43 + config/micro/syntax/octave.yaml | 83 + config/micro/syntax/odin.yaml | 64 + config/micro/syntax/pascal.yaml | 45 + config/micro/syntax/patch.yaml | 14 + config/micro/syntax/peg.yaml | 16 + config/micro/syntax/perl.yaml | 58 + config/micro/syntax/php.yaml | 60 + config/micro/syntax/pkg-config.yaml | 12 + config/micro/syntax/po.yaml | 12 + config/micro/syntax/pony.yaml | 37 + config/micro/syntax/pov.yaml | 21 + config/micro/syntax/privoxy-action.yaml | 14 + config/micro/syntax/privoxy-config.yaml | 10 + config/micro/syntax/privoxy-filter.yaml | 12 + config/micro/syntax/proto.yaml | 40 + config/micro/syntax/prql.yaml | 84 + config/micro/syntax/puppet.yaml | 22 + config/micro/syntax/python2.yaml | 60 + config/micro/syntax/python3.yaml | 62 + config/micro/syntax/r.yaml | 32 + config/micro/syntax/raku.yaml | 42 + config/micro/syntax/reST.yaml | 18 + config/micro/syntax/renpy.yaml | 15 + config/micro/syntax/rpmspec.yaml | 43 + config/micro/syntax/ruby.yaml | 73 + config/micro/syntax/rust.yaml | 78 + config/micro/syntax/sage.yaml | 60 + config/micro/syntax/scad.yaml | 53 + config/micro/syntax/scala.yaml | 33 + config/micro/syntax/sed.yaml | 13 + config/micro/syntax/sh.yaml | 69 + config/micro/syntax/sls.yaml | 15 + config/micro/syntax/smalltalk.yaml | 55 + config/micro/syntax/solidity.yaml | 41 + config/micro/syntax/sql.yaml | 35 + config/micro/syntax/stata.yaml | 67 + config/micro/syntax/svelte.yaml | 27 + config/micro/syntax/swift.yaml | 103 + config/micro/syntax/syntax_converter.go | 165 ++ config/micro/syntax/systemd.yaml | 16 + config/micro/syntax/tcl.yaml | 18 + config/micro/syntax/terraform.yaml | 87 + config/micro/syntax/tex.yaml | 32 + config/micro/syntax/toml.yaml | 56 + config/micro/syntax/twig.yaml | 55 + config/micro/syntax/typescript.yaml | 49 + config/micro/syntax/v.yaml | 80 + config/micro/syntax/vala.yaml | 26 + config/micro/syntax/verilog.yaml | 60 + config/micro/syntax/vhdl.yaml | 37 + config/micro/syntax/vi.yaml | 31 + config/micro/syntax/vue.yaml | 64 + config/micro/syntax/xml.yaml | 37 + config/micro/syntax/xresources.yaml | 14 + config/micro/syntax/yaml.yaml | 34 + config/micro/syntax/yum.yaml | 12 + config/micro/syntax/zig.yaml | 52 + config/micro/syntax/zscript.yaml | 72 + config/micro/syntax/zsh.yaml | 52 + config/nvim/.gitignore | 8 + config/nvim/.neoconf.json | 15 + config/nvim/LICENSE | 201 ++ config/nvim/README.md | 4 + config/nvim/init.lua | 2 + config/nvim/lazy-lock.json | 34 + config/nvim/lazyvim.json | 10 + config/nvim/lua/config/autocmds.lua | 8 + config/nvim/lua/config/keymaps.lua | 3 + config/nvim/lua/config/lazy.lua | 79 + config/nvim/lua/config/options.lua | 5 + config/nvim/lua/plugins/example.lua | 197 ++ config/nvim/stylua.toml | 3 + .../flavors/catppuccin-frappe.yazi/LICENSE | 21 + .../catppuccin-frappe.yazi/LICENSE-tmtheme | 21 + .../flavors/catppuccin-frappe.yazi/README.md | 36 + .../catppuccin-frappe.yazi/flavor.toml | 215 ++ .../catppuccin-frappe.yazi/preview.png | Bin 0 -> 587309 bytes .../catppuccin-frappe.yazi/tmtheme.xml | 2112 +++++++++++++++++ .../yazi/flavors/flexoki-light.yazi/LICENSE | 21 + .../flexoki-light.yazi/LICENSE-tmtheme | 21 + .../yazi/flavors/flexoki-light.yazi/README.md | 36 + .../flavors/flexoki-light.yazi/flavor.toml | 201 ++ .../flavors/flexoki-light.yazi/preview.png | Bin 0 -> 205290 bytes .../flavors/flexoki-light.yazi/tmtheme.xml | 1149 +++++++++ config/yazi/package.toml | 12 + config/yazi/theme.toml | 4 + config/yazi/yazi.toml | 14 + tmux.conf | 4 +- 230 files changed, 14435 insertions(+), 30 deletions(-) create mode 100644 config/mc/ini create mode 100644 config/mc/panels.ini create mode 100644 config/micro/bindings.json create mode 100644 config/micro/buffers/history create mode 100644 config/micro/colorschemes/atom-dark.micro create mode 100644 config/micro/colorschemes/bubblegum.micro create mode 100644 config/micro/colorschemes/cmc-16.micro create mode 100644 config/micro/colorschemes/cmc-tc.micro create mode 100644 config/micro/colorschemes/darcula.micro create mode 100644 config/micro/colorschemes/default.micro create mode 100644 config/micro/colorschemes/dracula-tc.micro create mode 100644 config/micro/colorschemes/dukedark-tc.micro create mode 100644 config/micro/colorschemes/dukelight-tc.micro create mode 100644 config/micro/colorschemes/dukeubuntu-tc.micro create mode 100644 config/micro/colorschemes/geany.micro create mode 100644 config/micro/colorschemes/gotham.micro create mode 100644 config/micro/colorschemes/gruvbox-tc.micro create mode 100644 config/micro/colorschemes/gruvbox.micro create mode 100644 config/micro/colorschemes/material-tc.micro create mode 100644 config/micro/colorschemes/monokai-dark.micro create mode 100644 config/micro/colorschemes/monokai.micro create mode 100644 config/micro/colorschemes/one-dark.micro create mode 100644 config/micro/colorschemes/railscast.micro create mode 100644 config/micro/colorschemes/simple.micro create mode 100644 config/micro/colorschemes/solarized-tc.micro create mode 100644 config/micro/colorschemes/solarized.micro create mode 100644 config/micro/colorschemes/sunny-day.micro create mode 100644 config/micro/colorschemes/twilight.micro create mode 100644 config/micro/colorschemes/zenburn.micro create mode 100644 config/micro/plug/filemanager/.editorconfig create mode 100644 config/micro/plug/filemanager/CHANGELOG.md create mode 100644 config/micro/plug/filemanager/LICENSE create mode 100644 config/micro/plug/filemanager/README.md create mode 100644 config/micro/plug/filemanager/example.jpg create mode 100644 config/micro/plug/filemanager/filemanager.lua create mode 100644 config/micro/plug/filemanager/repo.json create mode 100644 config/micro/plug/filemanager/syntax.yaml create mode 100644 config/micro/settings.json create mode 100644 config/micro/syntax/LICENSE create mode 100644 config/micro/syntax/PowerShell.yaml create mode 100644 config/micro/syntax/README.md create mode 100644 config/micro/syntax/ada.yaml create mode 100644 config/micro/syntax/apacheconf.yaml create mode 100644 config/micro/syntax/arduino.yaml create mode 100644 config/micro/syntax/asciidoc.yaml create mode 100644 config/micro/syntax/asm.yaml create mode 100644 config/micro/syntax/ats.yaml create mode 100644 config/micro/syntax/awk.yaml create mode 100644 config/micro/syntax/b.yaml create mode 100644 config/micro/syntax/bat.yaml create mode 100644 config/micro/syntax/c.yaml create mode 100644 config/micro/syntax/caddyfile.yaml create mode 100644 config/micro/syntax/cake.yaml create mode 100644 config/micro/syntax/clojure.yaml create mode 100644 config/micro/syntax/cmake.yaml create mode 100644 config/micro/syntax/coffeescript.yaml create mode 100644 config/micro/syntax/colortest.yaml create mode 100644 config/micro/syntax/conky.yaml create mode 100644 config/micro/syntax/cpp.yaml create mode 100644 config/micro/syntax/crontab.yaml create mode 100644 config/micro/syntax/crystal.yaml create mode 100644 config/micro/syntax/csharp.yaml create mode 100644 config/micro/syntax/css.yaml create mode 100644 config/micro/syntax/csx.yaml create mode 100644 config/micro/syntax/cuda.yaml create mode 100644 config/micro/syntax/cython.yaml create mode 100644 config/micro/syntax/d.yaml create mode 100644 config/micro/syntax/dart.yaml create mode 100644 config/micro/syntax/default.yaml create mode 100644 config/micro/syntax/dockerfile.yaml create mode 100644 config/micro/syntax/dot.yaml create mode 100644 config/micro/syntax/elixir.yaml create mode 100644 config/micro/syntax/elm.yaml create mode 100644 config/micro/syntax/erb.yaml create mode 100644 config/micro/syntax/erlang.yaml create mode 100644 config/micro/syntax/fish.yaml create mode 100644 config/micro/syntax/forth.yaml create mode 100644 config/micro/syntax/fortran.yaml create mode 100644 config/micro/syntax/freebsd-kernel.yaml create mode 100644 config/micro/syntax/fsharp.yaml create mode 100644 config/micro/syntax/gdscript.yaml create mode 100644 config/micro/syntax/gemini.yaml create mode 100644 config/micro/syntax/gentoo-ebuild.yaml create mode 100644 config/micro/syntax/gentoo-etc-portage.yaml create mode 100644 config/micro/syntax/git-commit.yaml create mode 100644 config/micro/syntax/git-config.yaml create mode 100644 config/micro/syntax/git-rebase-todo.yaml create mode 100644 config/micro/syntax/gleam.yaml create mode 100644 config/micro/syntax/glsl.yaml create mode 100644 config/micro/syntax/gnuplot.yaml create mode 100644 config/micro/syntax/go.yaml create mode 100644 config/micro/syntax/godoc.yaml create mode 100644 config/micro/syntax/golo.yaml create mode 100644 config/micro/syntax/gomod.yaml create mode 100644 config/micro/syntax/graphql.yaml create mode 100644 config/micro/syntax/groff.yaml create mode 100644 config/micro/syntax/groovy.yaml create mode 100644 config/micro/syntax/haml.yaml create mode 100644 config/micro/syntax/hare.yaml create mode 100644 config/micro/syntax/haskell.yaml create mode 100644 config/micro/syntax/hc.yaml create mode 100644 config/micro/syntax/html.yaml create mode 100644 config/micro/syntax/html4.yaml create mode 100644 config/micro/syntax/html5.yaml create mode 100644 config/micro/syntax/ini.yaml create mode 100644 config/micro/syntax/inputrc.yaml create mode 100644 config/micro/syntax/java.yaml create mode 100644 config/micro/syntax/javascript.yaml create mode 100644 config/micro/syntax/jinja2.yaml create mode 100644 config/micro/syntax/json.yaml create mode 100644 config/micro/syntax/jsonnet.yaml create mode 100644 config/micro/syntax/julia.yaml create mode 100644 config/micro/syntax/justfile.yaml create mode 100644 config/micro/syntax/keymap.yaml create mode 100644 config/micro/syntax/kickstart.yaml create mode 100644 config/micro/syntax/kotlin.yaml create mode 100644 config/micro/syntax/kvlang.yaml create mode 100644 config/micro/syntax/ledger.yaml create mode 100644 config/micro/syntax/lfe.yaml create mode 100644 config/micro/syntax/lilypond.yaml create mode 100644 config/micro/syntax/lisp.yaml create mode 100644 config/micro/syntax/log.yaml create mode 100644 config/micro/syntax/lua.yaml create mode 100644 config/micro/syntax/mail.yaml create mode 100644 config/micro/syntax/make_headers.go create mode 100644 config/micro/syntax/makefile.yaml create mode 100644 config/micro/syntax/man.yaml create mode 100644 config/micro/syntax/markdown.yaml create mode 100644 config/micro/syntax/mc.yaml create mode 100755 config/micro/syntax/meson.yaml create mode 100644 config/micro/syntax/micro.yaml create mode 100644 config/micro/syntax/mpdconf.yaml create mode 100644 config/micro/syntax/msbuild.yaml create mode 100644 config/micro/syntax/nanorc.yaml create mode 100644 config/micro/syntax/nftables.yaml create mode 100644 config/micro/syntax/nginx.yaml create mode 100644 config/micro/syntax/nim.yaml create mode 100644 config/micro/syntax/nix.yaml create mode 100644 config/micro/syntax/nu.yaml create mode 100644 config/micro/syntax/objc.yaml create mode 100644 config/micro/syntax/ocaml.yaml create mode 100644 config/micro/syntax/octave.yaml create mode 100644 config/micro/syntax/odin.yaml create mode 100644 config/micro/syntax/pascal.yaml create mode 100644 config/micro/syntax/patch.yaml create mode 100644 config/micro/syntax/peg.yaml create mode 100644 config/micro/syntax/perl.yaml create mode 100644 config/micro/syntax/php.yaml create mode 100644 config/micro/syntax/pkg-config.yaml create mode 100644 config/micro/syntax/po.yaml create mode 100644 config/micro/syntax/pony.yaml create mode 100644 config/micro/syntax/pov.yaml create mode 100644 config/micro/syntax/privoxy-action.yaml create mode 100644 config/micro/syntax/privoxy-config.yaml create mode 100644 config/micro/syntax/privoxy-filter.yaml create mode 100644 config/micro/syntax/proto.yaml create mode 100644 config/micro/syntax/prql.yaml create mode 100644 config/micro/syntax/puppet.yaml create mode 100644 config/micro/syntax/python2.yaml create mode 100644 config/micro/syntax/python3.yaml create mode 100644 config/micro/syntax/r.yaml create mode 100644 config/micro/syntax/raku.yaml create mode 100644 config/micro/syntax/reST.yaml create mode 100644 config/micro/syntax/renpy.yaml create mode 100644 config/micro/syntax/rpmspec.yaml create mode 100644 config/micro/syntax/ruby.yaml create mode 100644 config/micro/syntax/rust.yaml create mode 100644 config/micro/syntax/sage.yaml create mode 100644 config/micro/syntax/scad.yaml create mode 100644 config/micro/syntax/scala.yaml create mode 100644 config/micro/syntax/sed.yaml create mode 100644 config/micro/syntax/sh.yaml create mode 100644 config/micro/syntax/sls.yaml create mode 100644 config/micro/syntax/smalltalk.yaml create mode 100644 config/micro/syntax/solidity.yaml create mode 100644 config/micro/syntax/sql.yaml create mode 100644 config/micro/syntax/stata.yaml create mode 100644 config/micro/syntax/svelte.yaml create mode 100644 config/micro/syntax/swift.yaml create mode 100644 config/micro/syntax/syntax_converter.go create mode 100644 config/micro/syntax/systemd.yaml create mode 100644 config/micro/syntax/tcl.yaml create mode 100644 config/micro/syntax/terraform.yaml create mode 100644 config/micro/syntax/tex.yaml create mode 100644 config/micro/syntax/toml.yaml create mode 100644 config/micro/syntax/twig.yaml create mode 100644 config/micro/syntax/typescript.yaml create mode 100644 config/micro/syntax/v.yaml create mode 100644 config/micro/syntax/vala.yaml create mode 100644 config/micro/syntax/verilog.yaml create mode 100644 config/micro/syntax/vhdl.yaml create mode 100644 config/micro/syntax/vi.yaml create mode 100644 config/micro/syntax/vue.yaml create mode 100644 config/micro/syntax/xml.yaml create mode 100644 config/micro/syntax/xresources.yaml create mode 100644 config/micro/syntax/yaml.yaml create mode 100644 config/micro/syntax/yum.yaml create mode 100644 config/micro/syntax/zig.yaml create mode 100644 config/micro/syntax/zscript.yaml create mode 100644 config/micro/syntax/zsh.yaml create mode 100644 config/nvim/.gitignore create mode 100644 config/nvim/.neoconf.json create mode 100644 config/nvim/LICENSE create mode 100644 config/nvim/README.md create mode 100644 config/nvim/init.lua create mode 100644 config/nvim/lazy-lock.json create mode 100644 config/nvim/lazyvim.json create mode 100644 config/nvim/lua/config/autocmds.lua create mode 100644 config/nvim/lua/config/keymaps.lua create mode 100644 config/nvim/lua/config/lazy.lua create mode 100644 config/nvim/lua/config/options.lua create mode 100644 config/nvim/lua/plugins/example.lua create mode 100644 config/nvim/stylua.toml create mode 100644 config/yazi/flavors/catppuccin-frappe.yazi/LICENSE create mode 100644 config/yazi/flavors/catppuccin-frappe.yazi/LICENSE-tmtheme create mode 100644 config/yazi/flavors/catppuccin-frappe.yazi/README.md create mode 100644 config/yazi/flavors/catppuccin-frappe.yazi/flavor.toml create mode 100644 config/yazi/flavors/catppuccin-frappe.yazi/preview.png create mode 100644 config/yazi/flavors/catppuccin-frappe.yazi/tmtheme.xml create mode 100644 config/yazi/flavors/flexoki-light.yazi/LICENSE create mode 100644 config/yazi/flavors/flexoki-light.yazi/LICENSE-tmtheme create mode 100644 config/yazi/flavors/flexoki-light.yazi/README.md create mode 100644 config/yazi/flavors/flexoki-light.yazi/flavor.toml create mode 100644 config/yazi/flavors/flexoki-light.yazi/preview.png create mode 100644 config/yazi/flavors/flexoki-light.yazi/tmtheme.xml create mode 100644 config/yazi/package.toml create mode 100644 config/yazi/theme.toml create mode 100644 config/yazi/yazi.toml diff --git a/bashrc b/bashrc index ab0c80d..7fe53e2 100644 --- a/bashrc +++ b/bashrc @@ -4,8 +4,8 @@ # If not running interactively, don't do anything case $- in - *i*) ;; - *) return;; +*i*) ;; +*) return ;; esac # don't put duplicate lines or lines starting with space in the history. @@ -32,12 +32,12 @@ shopt -s checkwinsize # set variable identifying the chroot you work in (used in the prompt below) if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then - debian_chroot=$(cat /etc/debian_chroot) + debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in - xterm-color|*-256color) color_prompt=yes;; +xterm-color | *-256color) color_prompt=yes ;; esac # uncomment for a colored prompt, if the terminal has the capability; turned @@ -46,42 +46,42 @@ esac #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then - if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then - # We have color support; assume it's compliant with Ecma-48 - # (ISO/IEC-6429). (Lack of such support is extremely rare, and such - # a case would tend to support setf rather than setaf.) - color_prompt=yes - else - color_prompt= - fi + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi fi if [ "$color_prompt" = yes ]; then - PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else - PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in -xterm*|rxvt*) - PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" - ;; +xterm* | rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; *) - ;; + ;; esac # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then - test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" - alias ls='ls --color=auto' - #alias dir='dir --color=auto' - #alias vdir='vdir --color=auto' + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='eza -l' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' - #alias grep='grep --color=auto' - #alias fgrep='fgrep --color=auto' - #alias egrep='egrep --color=auto' + #alias grep='grep --color=auto' + #alias fgrep='fgrep --color=auto' + #alias egrep='egrep --color=auto' fi # colored GCC warnings and errors @@ -98,7 +98,7 @@ fi # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then - . ~/.bash_aliases + . ~/.bash_aliases fi # enable programmable completion features (you don't need to enable @@ -112,6 +112,17 @@ if ! shopt -oq posix; then fi fi -if [ -z "${TMUX}" ] && [ $(tty) == "/dev/pts/0" ]; then - exec tmux new-session +if [ -z "${TMUX}" ] && [ $(tty) == "/dev/pts/0" ]; then + exec tmux new-session fi + +eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv bash)" +PATH=$PATH:/home/tsindt/bin:/home/tsindt/.cargo/bin + +eval "$(oh-my-posh init bash --config gruvbox)" + +# eval "$(/home/tsindt/bin shellenv bash)" + +[ -f ~/.fzf.bash ] && source ~/.fzf.bash + +EDITOR=nvim diff --git a/config/mc/ini b/config/mc/ini new file mode 100644 index 0000000..459ed94 --- /dev/null +++ b/config/mc/ini @@ -0,0 +1,144 @@ +[Midnight-Commander] +verbose=true +shell_patterns=true +auto_save_setup=true +preallocate_space=false +auto_menu=false +use_internal_view=true +use_internal_edit=false +clear_before_exec=true +confirm_delete=true +confirm_overwrite=true +confirm_execute=false +confirm_history_cleanup=true +confirm_exit=false +confirm_directory_hotlist_delete=false +confirm_view_dir=false +safe_delete=false +safe_overwrite=false +use_8th_bit_as_meta=false +mouse_move_pages_viewer=true +mouse_close_dialog=false +fast_refresh=false +drop_menus=false +wrap_mode=true +old_esc_mode=true +cd_symlinks=true +show_all_if_ambiguous=false +use_file_to_guess_type=true +alternate_plus_minus=false +only_leading_plus_minus=true +show_output_starts_shell=false +xtree_mode=false +file_op_compute_totals=true +classic_progressbar=true +use_netrc=true +ftpfs_always_use_proxy=false +ftpfs_use_passive_connections=true +ftpfs_use_passive_connections_over_proxy=false +ftpfs_use_unix_list_options=true +ftpfs_first_cd_then_ls=true +ignore_ftp_chattr_errors=true +editor_fill_tabs_with_spaces=false +editor_return_does_auto_indent=false +editor_backspace_through_tabs=false +editor_fake_half_tabs=true +editor_option_save_position=true +editor_option_auto_para_formatting=false +editor_option_typewriter_wrap=false +editor_edit_confirm_save=true +editor_syntax_highlighting=true +editor_persistent_selections=true +editor_drop_selection_on_copy=true +editor_cursor_beyond_eol=false +editor_cursor_after_inserted_block=false +editor_visible_tabs=true +editor_visible_spaces=true +editor_line_state=false +editor_simple_statusbar=false +editor_check_new_line=false +editor_show_right_margin=false +editor_group_undo=true +editor_state_full_filename=true +editor_ask_filename_before_edit=false +nice_rotating_dash=true +shadows=true +mcview_remember_file_position=false +auto_fill_mkdir_name=true +copymove_persistent_attr=true +pause_after_run=1 +mouse_repeat_rate=100 +double_click_speed=250 +old_esc_mode_timeout=1000000 +max_dirt_limit=10 +num_history_items_recorded=60 +vfs_timeout=60 +ftpfs_directory_timeout=900 +ftpfs_retry_seconds=30 +shell_directory_timeout=900 +editor_tab_spacing=8 +editor_word_wrap_line_length=72 +editor_option_save_mode=0 +editor_backup_extension=~ +editor_filesize_threshold=64M +editor_stop_format_chars=-+*\\,.;:&> +mcview_eof= +skin=default + +[Layout] +output_lines=0 +left_panel_size=50 +top_panel_size=0 +message_visible=true +keybar_visible=true +xterm_title=true +command_prompt=true +menubar_visible=true +free_space=true +horizontal_split=false +vertical_equal=true +horizontal_equal=true + +[Misc] +timeformat_recent=%d. %b %H:%M +timeformat_old=%d. %b %Y +ftp_proxy_host=gate +ftpfs_password=anonymous@ +display_codepage=UTF-8 +source_codepage=Other_8_bit +autodetect_codeset= +spell_language=en +clipboard_store= +clipboard_paste= + +[Colors] +base_color= +tmux-256color= +color_terminals= + +[Panels] +show_mini_info=true +kilobyte_si=false +mix_all_files=false +show_backups=true +show_dot_files=true +fast_reload=false +fast_reload_msg_shown=false +mark_moves_down=true +reverse_files_only=true +auto_save_setup_panels=false +navigate_with_arrows=false +panel_scroll_pages=true +panel_scroll_center=false +mouse_move_pages=true +filetype_mode=true +permission_mode=false +torben_fj_mode=false +quick_search_mode=2 +select_flags=6 + +[Panelize] +Nach *.orig nach dem Patchen suchen=find . -name \\*.orig -print +Nach dem Patchen nach Ablehnungen suchen=find . -name \\*.rej -print +GeƤnderte Git-Dateien=git ls-files --modified +SUID- und SGID-Programme suchen=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print diff --git a/config/mc/panels.ini b/config/mc/panels.ini new file mode 100644 index 0000000..e69de29 diff --git a/config/micro/bindings.json b/config/micro/bindings.json new file mode 100644 index 0000000..c1e45bd --- /dev/null +++ b/config/micro/bindings.json @@ -0,0 +1,5 @@ +{ + "Ctrl-y": "Undo", + "Ctrl-z": "Redo", + "Alt-t": "command:tree" +} diff --git a/config/micro/buffers/history b/config/micro/buffers/history new file mode 100644 index 0000000000000000000000000000000000000000..683c08bb13049149fbf1aed0d4977e1124fd50a4 GIT binary patch literal 741 zcmZ{iO-=(b427pdMJ0;FioX`bT%bs7xBwDs#0@+dlZl!*RpJ2chQi@E79}bp7UOp3 zyw7=gPI9vO91hCOS1~vqY}Q3F{wVWuotH)NQ+{Vq4j&CQ2S?8s%?h7@@bIr3b;{_$ zI|tNE#|xXZp~{-bldd)t8LX{djK$mp8pDtS;!Q-Zl(#-a)uO`+*t=N+VSek33jT60 zKkF0a)a>qlr_AcS-<^+8$--ohK4WzyP@1DPy5$V7cfnLA;*{xWpK1hJifGz%3r_6@MJ75e3Y-YmFdGd2GVw_IjUiL-b&=YQfxc>mgMg@_@G|{+)MX@1z p3nBlQMg;gLIknuDh?Y6RQp~eLs#72lncvLzb%a%&>e`}C?ibYF6E6S& literal 0 HcmV?d00001 diff --git a/config/micro/colorschemes/atom-dark.micro b/config/micro/colorschemes/atom-dark.micro new file mode 100644 index 0000000..0f46299 --- /dev/null +++ b/config/micro/colorschemes/atom-dark.micro @@ -0,0 +1,33 @@ +color-link default "#C5C8C6,#1D1F21" +color-link comment "#7C7C7C,#1D1F21" +color-link identifier "#F9EE98,#1D1F21" +color-link constant "#FF73FD,#1D1F21" +color-link constant.string "#A8FF60,#1D1F21" +color-link statement "#96CBFE,#1D1F21" +color-link symbol "#96CBFE,#1D1F21" +color-link preproc "#62B1FE,#1D1F21" +color-link type "#C6C5FE,#1D1F21" +color-link special "#A6E22E,#1D1F21" +color-link underlined "#D33682,#1D1F21" +color-link error "bold #FF4444,#1D1F21" +color-link todo "bold #FF8844,#1D1F21" +color-link hlsearch "#000000,#B4EC85" +color-link statusline "#1D1F21,#C5C8C6" +color-link tabbar "#1D1F21,#C5C8C6" +color-link indent-char "#505050,#1D1F21" +color-link line-number "#656866,#232526" +color-link current-line-number "#656866,#1D1F21" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#FF4444,#1D1F21" +color-link gutter-warning "#EEEE77,#1D1F21" +color-link cursor-line "#2D2F31" +color-link color-column "#2D2F31" +#color-link symbol.brackets "#96CBFE,#1D1F21" +#No extended types (bool in C, etc.) +#color-link type.extended "default" +#Plain brackets +color-link match-brace "#1D1F21,#62B1FE" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/bubblegum.micro b/config/micro/colorschemes/bubblegum.micro new file mode 100644 index 0000000..dcc2276 --- /dev/null +++ b/config/micro/colorschemes/bubblegum.micro @@ -0,0 +1,31 @@ +color-link default "241,231" +color-link comment "246,231" +color-link constant "130,231" +color-link constant.string "136,231" +color-link constant.number "131,231" +color-link identifier "133,231" +color-link statement "32,231" +color-link symbol "32,231" +color-link preproc "28,231" +color-link type "61,231" +color-link special "167,231" +color-link error "231, 160" +color-link underlined "underline 241,231" +color-link todo "246,231" +color-link hlsearch "231,136" +color-link statusline "241,254" +color-link tabbar "241,254" +color-link diff-added "34" +color-link diff-modified "214" +color-link diff-deleted "160" +color-link gutter-error "197,231" +color-link gutter-warning "134,231" +color-link line-number "246,254" +color-link cursor-line "254" +color-link color-column "254" +#No extended types (bool in C, &c.) and plain brackets +color-link type.extended "241,231" +color-link symbol.brackets "241,231" +color-link match-brace "231,28" +color-link tab-error "210" +color-link trailingws "210" diff --git a/config/micro/colorschemes/cmc-16.micro b/config/micro/colorschemes/cmc-16.micro new file mode 100644 index 0000000..0a50096 --- /dev/null +++ b/config/micro/colorschemes/cmc-16.micro @@ -0,0 +1,47 @@ +#CaptainMcClellan's personal color scheme. +#16 colour version. +color-link comment "bold black" +color-link constant "cyan" +color-link constant.bool "bold cyan" +color-link constant.bool.true "bold green" +color-link constant.bool.false "bold red" +color-link constant.string "yellow" +color-link constant.string.url "underline blue, white" +#color-link constant.number "constant" +color-link constant.specialChar "bold magenta" +color-link identifier "bold red" +color-link identifier.macro "bold red" +color-link identifier.var "bold blue" +#color-link identifier.class "bold green" +color-link identifier.class "bold white" +color-link statement "bold yellow" +color-link symbol "red" +color-link symbol.brackets "blue" +color-link symbol.tag "bold blue" +color-link symbol.tag.extended "bold green" +color-link preproc "bold cyan" +color-link type "green" +color-link type.keyword "bold green" +color-link special "magenta" +color-link ignore "default" +color-link error "bold ,brightred" +color-link todo "underline black,brightyellow" +color-link hlsearch "white,darkgreen" +color-link indent-char ",brightgreen" +color-link line-number "green" +color-link line-number.scrollbar "green" +color-link statusline "white,blue" +color-link tabbar "white,blue" +color-link current-line-number "red" +color-link current-line-number.scroller "red" +color-link diff-added "green" +color-link diff-modified "yellow" +color-link diff-deleted "red" +color-link gutter-error ",red" +color-link gutter-warning "red" +color-link color-column "cyan" +color-link underlined.url "underline blue, white" +color-link divider "blue" +color-link match-brace "black,cyan" +color-link tab-error "brightred" +color-link trailingws "brightred" diff --git a/config/micro/colorschemes/cmc-tc.micro b/config/micro/colorschemes/cmc-tc.micro new file mode 100644 index 0000000..b0502c6 --- /dev/null +++ b/config/micro/colorschemes/cmc-tc.micro @@ -0,0 +1,43 @@ +#CaptainMcClellan's personal colour scheme. +#Full colour edition. +color-link default "#aaaaaa,#1e2124" +color-link comment "bold #555555" +color-link constant "#008888" +#color-link constant.string "#888800" +color-link constant.string "#a85700" +color-link constant.specialChar "bold #ccccff" +color-link identifier "bold #e34234" +color-link identifier.macro "bold #e34234" +color-link identifier.var "bold #5757ff" +color-link identifier.class "bold #ffffff" +color-link statement "bold #ffff55" +color-link symbol "#722f37" +color-link symbol.brackets "#4169e1" +color-link symbol.tag "#5757ff" +color-link preproc "bold #55ffff" +color-link type "#3eb489" +color-link type.keyword "bold #bdecb6" +color-link special "#b57edc" +color-link ignore "default" +color-link error "bold ,#e34234" +color-link todo "bold underline #888888,#f26522" +color-link hlsearch "#b7b7b7,#32593d" +color-link indent-char ",#bdecb6" +color-link line-number "#bdecb6,#36393e" +color-link line-number.scrollbar "#3eb489" +color-link statusline "#aaaaaa,#8a496b" +color-link tabbar "#aaaaaa,#8a496b" +color-link current-line-number "bold #e34234,#424549" +color-link current-line-number.scroller "red" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error ",#e34234" +color-link gutter-warning "#e34234" +color-link color-column "#f26522" +color-link constant.bool "bold #55ffff" +color-link constant.bool.true "bold #85ff85" +color-link constant.bool.false "bold #ff8585" +color-link match-brace "#1e2124,#55ffff" +color-link tab-error "#d75f5f" +color-link trailingws "#d75f5f" diff --git a/config/micro/colorschemes/darcula.micro b/config/micro/colorschemes/darcula.micro new file mode 100644 index 0000000..7103e84 --- /dev/null +++ b/config/micro/colorschemes/darcula.micro @@ -0,0 +1,34 @@ +color-link default "#CCCCCC,#242424" +color-link comment "#707070,#242424" +color-link identifier "#FFC66D,#242424" +color-link constant "#7A9EC2,#242424" +color-link constant.string "#6A8759,#242424" +color-link constant.string.char "#6A8759,#242424" +color-link statement "#CC8242,#242424" +color-link symbol "#CCCCCC,#242424" +color-link preproc "#CC8242,#242424" +color-link type "#CC8242,#242424" +color-link special "#CC8242,#242424" +color-link underlined "#D33682,#242424" +color-link error "bold #CB4B16,#242424" +color-link todo "bold #D33682,#242424" +color-link hlsearch "#CCCCCC,#32593D" +color-link statusline "#242424,#CCCCCC" +color-link tabbar "#242424,#CCCCCC" +color-link indent-char "#4F4F4F,#242424" +color-link line-number "#666666,#2C2C2C" +color-link current-line-number "#666666,#242424" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#CB4B16,#242424" +color-link gutter-warning "#E6DB74,#242424" +color-link cursor-line "#2C2C2C" +color-link color-column "#2C2C2C" +#No extended types; Plain brackets. +color-link type.extended "default" +#color-link symbol.brackets "default" +color-link symbol.tag "#AE81FF,#242424" +color-link match-brace "#242424,#7A9EC2" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/default.micro b/config/micro/colorschemes/default.micro new file mode 100644 index 0000000..2f7fdfc --- /dev/null +++ b/config/micro/colorschemes/default.micro @@ -0,0 +1 @@ +include "monokai" diff --git a/config/micro/colorschemes/dracula-tc.micro b/config/micro/colorschemes/dracula-tc.micro new file mode 100644 index 0000000..af0509c --- /dev/null +++ b/config/micro/colorschemes/dracula-tc.micro @@ -0,0 +1,49 @@ +color-link default "#F8F8F2,#282A36" +color-link comment "#6272A4" + +color-link identifier "#50FA7B" +color-link identifier.class "#8BE9FD" +color-link identifier.var "#F8F8F2" + +color-link constant "#BD93F9" +color-link constant.number "#F8F8F2" +color-link constant.string "#F1FA8C" + +color-link symbol "#FF79C6" +color-link symbol.brackets "#F8F8F2" +color-link symbol.tag "#AE81FF" + +color-link type "italic #8BE9FD" +color-link type.keyword "#FF79C6" + +color-link special "#FF79C6" +color-link statement "#FF79C6" +color-link preproc "#FF79C6" + +color-link underlined "#FF79C6" +color-link error "bold #FF5555" +color-link todo "bold #FF79C6" + +color-link hlsearch "#282A36,#50FA7B" + +color-link diff-added "#50FA7B" +color-link diff-modified "#FFB86C" +color-link diff-deleted "#FF5555" + +color-link gutter-error "#FF5555" +color-link gutter-warning "#E6DB74" + +color-link statusline "#282A36,#F8F8F2" +color-link tabbar "#282A36,#F8F8F2" +color-link indent-char "#6272A4" +color-link line-number "#6272A4" +color-link current-line-number "#F8F8F2" + +color-link cursor-line "#44475A,#F8F8F2" +color-link color-column "#44475A" +color-link type.extended "default" + +color-link match-brace "#282A36,#FF79C6" + +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/dukedark-tc.micro b/config/micro/colorschemes/dukedark-tc.micro new file mode 100644 index 0000000..52ec847 --- /dev/null +++ b/config/micro/colorschemes/dukedark-tc.micro @@ -0,0 +1,38 @@ +color-link color-column "#001e28" +color-link comment "#608b4e,#001e28" +color-link constant.bool "#fd971f,#001e28" +color-link constant "#fd971f,#001e28" +color-link constant.string "#a0f000,#001e28" +color-link constant.string.char "#a0f000,#001e28" +color-link constant.string.url "#a0f000,#001e28" +color-link current-line-number "bold #fd971f,#001e28" +color-link cursor-line "#001923" +color-link default "#ffffff,#001e28" +color-link diff-added "#00c8a0,#001e28" +color-link diff-modified "#fd971f,#001e28" +color-link diff-deleted "#cb4b16,#001e28" +color-link divider "#001e28,#d0d0d0" +color-link error "#cb4b16,#001e28" +color-link gutter-error "#cb4b16,#001e28" +color-link gutter-warning "#fce94f,#001e28" +color-link hlsearch "#ffffff,#005028" +color-link identifier "#00c8a0,#001e28" +color-link identifier.class "#00c8a0,#001e28" +color-link indent-char "#a0a0a0,#001e28" +color-link line-number "#a0a0a0,#001923" +color-link preproc "bold #5aaae6,#001e28" +color-link special "#a6e22e,#001e28" +color-link statement "bold #5aaae6,#001e28" +color-link statusline "#ffffff,#0078c8" +color-link symbol "#00c8a0,#001e28" +color-link symbol.brackets "#ffffff,#001e28" +color-link symbol.tag "bold #5aaae6,#001e28" +color-link tabbar "#001e28,#ffffff" +color-link todo "#fce94f,#001e28" +color-link type "bold #3cc83c,#001e28" +color-link type.keyword "bold #5aaae6,#001e28" +color-link type.extended "#ffffff,#001e28" +color-link underlined "#608b4e,#001e28" +color-link match-brace "#001e28,#5aaae6" +color-link tab-error "#d75f5f" +color-link trailingws "#d75f5f" diff --git a/config/micro/colorschemes/dukelight-tc.micro b/config/micro/colorschemes/dukelight-tc.micro new file mode 100644 index 0000000..c694ffb --- /dev/null +++ b/config/micro/colorschemes/dukelight-tc.micro @@ -0,0 +1,38 @@ +color-link color-column "#f0f0f0" +color-link comment "#3f7f5f,#f0f0f0" +color-link constant.bool "#641e00,#f0f0f0" +color-link constant "#641e00,#f0f0f0" +color-link constant.string "#0000ff,#f0f0f0" +color-link constant.string.char "#0000ff,#f0f0f0" +color-link constant.string.url "#0000ff,#f0f0f0" +color-link current-line-number "bold #004080,#f0f0f0" +color-link cursor-line "#e6e6e6" +color-link default "#000000,#f0f0f0" +color-link diff-added "#008040,#f0f0f0" +color-link diff-modified "#641e00,#f0f0f0" +color-link diff-deleted "#500000,#f0f0f0" +color-link divider "#f0f0f0,#004080" +color-link error "#500000,#f0f0f0" +color-link gutter-error "#500000,#f0f0f0" +color-link gutter-warning "#dcc800,#f0f0f0" +color-link hlsearch "#000000,#b8d8e8" +color-link identifier "bold #0078a0,#f0f0f0" +color-link identifier.class "bold #0078a0,#f0f0f0" +color-link indent-char "#404040,#f0f0f0" +color-link line-number "#404040,#e6e6e6" +color-link preproc "bold #780050,#f0f0f0" +color-link special "bold #0078a0,#f0f0f0" +color-link statement "bold #780050,#f0f0f0" +color-link statusline "#ffffff,#0078c8" +color-link symbol "bold #0078a0,#f0f0f0" +color-link symbol.brackets "#000000,#f0f0f0" +color-link symbol.tag "bold #780050,#f0f0f0" +color-link tabbar "#f0f0f0,#004080" +color-link todo "#dcc800,#f0f0f0" +color-link type "bold #004080,#f0f0f0" +color-link type.keyword "bold #780050,#f0f0f0" +color-link type.extended "#000000,#f0f0f0" +color-link underlined "#3f7f5f,#f0f0f0" +color-link match-brace "#f0f0f0,#780050" +color-link tab-error "#ff8787" +color-link trailingws "#ff8787" diff --git a/config/micro/colorschemes/dukeubuntu-tc.micro b/config/micro/colorschemes/dukeubuntu-tc.micro new file mode 100644 index 0000000..b34cc2c --- /dev/null +++ b/config/micro/colorschemes/dukeubuntu-tc.micro @@ -0,0 +1,38 @@ +color-link color-column "#2d0023" +color-link comment "#886484,#2d0023" +color-link constant.bool "#fd971f,#2d0023" +color-link constant "#fd971f,#2d0023" +color-link constant.string "#a0f000,#2d0023" +color-link constant.string.char "#a0f000,#2d0023" +color-link constant.string.url "#a0f000,#2d0023" +color-link current-line-number "bold #fd971f,#2d0023" +color-link cursor-line "#230019" +color-link default "#ffffff,#2d0023" +color-link diff-added "#00c8a0,#2d0023" +color-link diff-modified "#fd971f,#2d0023" +color-link diff-deleted "#cb4b16,#2d0023" +color-link divider "#2d0023,#d0d0d0" +color-link error "#cb4b16,#2d0023" +color-link gutter-error "#cb4b16,#2d0023" +color-link gutter-warning "#fce94f,#2d0023" +color-link hlsearch "#ffffff,#005028" +color-link identifier "#00c8a0,#2d0023" +color-link identifier.class "#00c8a0,#2d0023" +color-link indent-char "#a0a0a0,#2d0023" +color-link line-number "#a0a0a0,#230019" +color-link preproc "bold #5aaae6,#2d0023" +color-link special "#a6e22e,#2d0023" +color-link statement "bold #5aaae6,#2d0023" +color-link statusline "#ffffff,#0078c8" +color-link symbol "#00c8a0,#2d0023" +color-link symbol.brackets "#ffffff,#2d0023" +color-link symbol.tag "bold #5aaae6,#2d0023" +color-link tabbar "#2d0023,#ffffff" +color-link todo "#fce94f,#2d0023" +color-link type "bold #3cc83c,#2d0023" +color-link type.keyword "bold #5aaae6,#2d0023" +color-link type.extended "#ffffff,#2d0023" +color-link underlined "#886484,#2d0023" +color-link match-brace "#2d0023,#5aaae6" +color-link tab-error "#d75f5f" +color-link trailingws "#d75f5f" diff --git a/config/micro/colorschemes/geany.micro b/config/micro/colorschemes/geany.micro new file mode 100644 index 0000000..43ced31 --- /dev/null +++ b/config/micro/colorschemes/geany.micro @@ -0,0 +1,29 @@ +#Geany +color-link comment "red" +color-link constant "default" +color-link constant.string "bold yellow" +color-link identifier "default" +color-link preproc "cyan" +color-link special "blue" +color-link statement "blue" +color-link symbol "default" +color-link symbol.tag "bold blue" +color-link type "blue" +color-link type.extended "default" +color-link error "red" +color-link todo "bold cyan" +color-link hlsearch "black,brightcyan" +color-link indent-char "bold black" +color-link line-number "" +color-link current-line-number "" +color-link statusline "black,white" +color-link tabbar "black,white" +color-link color-column "bold geren" +color-link diff-added "green" +color-link diff-modified "yellow" +color-link diff-deleted "red" +color-link gutter-error ",red" +color-link gutter-warning "red" +color-link match-brace "black,cyan" +color-link tab-error "brightred" +color-link trailingws "brightred" diff --git a/config/micro/colorschemes/gotham.micro b/config/micro/colorschemes/gotham.micro new file mode 100644 index 0000000..d067a81 --- /dev/null +++ b/config/micro/colorschemes/gotham.micro @@ -0,0 +1,29 @@ +color-link default "#99D1CE,#0C1014" +color-link comment "#245361,#0C1014" +color-link identifier "#599CAB,#0C1014" +color-link constant "#D26937,#0C1014" +color-link constant.string "#2AA889,#0C1014" +color-link constant.string.char "#D3EBE9,#0C1014" +color-link statement "#599CAB,#0C1014" +color-link preproc "#C23127,#0C1014" +color-link type "#D26937,#0C1014" +color-link special "#D26937,#0C1014" +color-link underlined "#EDB443,#0C1014" +color-link error "bold #C23127,#0C1014" +color-link todo "bold #888CA6,#0C1014" +color-link hlsearch "#091F2E,#EDB443" +color-link statusline "#091F2E,#599CAB" +color-link indent-char "#505050,#0C1014" +color-link line-number "#245361,#11151C" +color-link current-line-number "#599CAB,#11151C" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#C23127,#11151C" +color-link gutter-warning "#EDB443,#11151C" +color-link cursor-line "#091F2E" +color-link color-column "#11151C" +color-link symbol "#99D1CE,#0C1014" +color-link match-brace "#0C1014,#D26937" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/gruvbox-tc.micro b/config/micro/colorschemes/gruvbox-tc.micro new file mode 100644 index 0000000..65d72b1 --- /dev/null +++ b/config/micro/colorschemes/gruvbox-tc.micro @@ -0,0 +1,29 @@ +color-link default "#ebdbb2,#282828" +color-link comment "#928374,#282828" +color-link symbol "#d79921,#282828" +color-link constant "#d3869b,#282828" +color-link constant.string "#b8bb26,#282828" +color-link constant.string.char "#b8bb26,#282828" +color-link identifier "#8ec07c,#282828" +color-link statement "#fb4934,#282828" +color-link preproc "#fb4934,235" +color-link type "#fb4934,#282828" +color-link special "#d79921,#282828" +color-link underlined "underline #458588,#282828" +color-link error "#9d0006,#282828" +color-link todo "bold #ebdbb2,#282828" +color-link hlsearch "#282828,#fabd2f" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#fb4934,#282828" +color-link gutter-warning "#d79921,#282828" +color-link line-number "#665c54,#3c3836" +color-link current-line-number "#d79921,#282828" +color-link cursor-line "#3c3836" +color-link color-column "#79740e" +color-link statusline "#ebdbb2,#665c54" +color-link tabbar "#ebdbb2,#665c54" +color-link match-brace "#282828,#d3869b" +color-link tab-error "#d75f5f" +color-link trailingws "#d75f5f" diff --git a/config/micro/colorschemes/gruvbox.micro b/config/micro/colorschemes/gruvbox.micro new file mode 100644 index 0000000..46cc09c --- /dev/null +++ b/config/micro/colorschemes/gruvbox.micro @@ -0,0 +1,26 @@ +color-link default "223,235" +color-link comment "243,235" +color-link constant "175,235" +color-link constant.string "142,235" +color-link identifier "109,235" +color-link statement "124,235" +color-link symbol "124,235" +color-link preproc "72,235" +color-link type "214,235" +color-link special "172,235" +color-link underlined "underline 109,235" +color-link error "235,124" +color-link todo "bold 223,235" +color-link hlsearch "235,214" +color-link diff-added "34" +color-link diff-modified "214" +color-link diff-deleted "160" +color-link line-number "243,237" +color-link current-line-number "172,235" +color-link cursor-line "237" +color-link color-column "237" +color-link statusline "223,237" +color-link tabbar "223,237" +color-link match-brace "235,72" +color-link tab-error "167" +color-link trailingws "167" diff --git a/config/micro/colorschemes/material-tc.micro b/config/micro/colorschemes/material-tc.micro new file mode 100644 index 0000000..711fb00 --- /dev/null +++ b/config/micro/colorschemes/material-tc.micro @@ -0,0 +1,36 @@ +color-link color-column "#263238" +color-link comment "#4F6875,#263238" +color-link constant "#F07178,#263238" +color-link constant.number "#F78C6A,#263238" +color-link constant.specialChar "#89DDF3,#263238" +color-link constant.string "#C3E88D,#263238" +color-link current-line-number "#80DEEA,#263238" +color-link cursor-line "#283942" +color-link default "#EEFFFF,#263238" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link divider "#263238,#80DEEA" +color-link error "bold #263238,#F07178" +color-link gutter-error "#EEFFFF,#F07178" +color-link gutter-warning "#EEFFFF,#FFF176" +color-link hlsearch "#FFFFFF,#546E7A" +color-link identifier "#82AAFF,#263238" +color-link identifier.macro "#FFCB6B,#263238" +color-link indent-char "#505050,#263238" +color-link line-number "#656866,#283942" +color-link preproc "#C792EA,#263238" +color-link scrollbar "#80DEEA,#283942" +color-link special "#C792EA,#263238" +color-link statement "#C792EA,#263238" +color-link statusline "#80DEEA,#3b4d56" +color-link symbol "#96CBFE,#263238" +color-link symbol.brackets "#89DDF3,#263238" +color-link symbol.operator "#C792EA,#263238" +color-link tabbar "#80DEEA,#3b4d56" +color-link todo "bold #C792EA,#263238" +color-link type "#FFCB6B,#263238" +color-link underlined "underline #EEFFFF,#263238" +color-link match-brace "#263238,#C792EA" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/monokai-dark.micro b/config/micro/colorschemes/monokai-dark.micro new file mode 100644 index 0000000..3a1e89c --- /dev/null +++ b/config/micro/colorschemes/monokai-dark.micro @@ -0,0 +1,28 @@ +color-link default "#D5D8D6,#1D0000" +color-link comment "#75715E" +color-link identifier "#66D9EF" +color-link constant "#AE81FF" +color-link constant.string "#E6DB74" +color-link constant.string.char "#BDE6AD" +color-link statement "#F92672" +color-link preproc "#CB4B16" +color-link type "#66D9EF" +color-link special "#A6E22E" +color-link underlined "#D33682" +color-link error "bold #CB4B16" +color-link todo "bold #D33682" +color-link hlsearch "#1D0000,#E6DB74" +color-link statusline "#282828,#F8F8F2" +color-link indent-char "#505050,#282828" +color-link line-number "#AAAAAA,#282828" +color-link current-line-number "#AAAAAA,#1D0000" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#CB4B16" +color-link gutter-warning "#E6DB74" +color-link cursor-line "#323232" +color-link color-column "#323232" +color-link match-brace "#1D0000,#AE81FF" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/monokai.micro b/config/micro/colorschemes/monokai.micro new file mode 100644 index 0000000..13c44b7 --- /dev/null +++ b/config/micro/colorschemes/monokai.micro @@ -0,0 +1,34 @@ +color-link default "#F8F8F2,#282828" +color-link comment "#75715E,#282828" +color-link identifier "#66D9EF,#282828" +color-link constant "#AE81FF,#282828" +color-link constant.string "#E6DB74,#282828" +color-link constant.string.char "#BDE6AD,#282828" +color-link statement "#F92672,#282828" +color-link symbol.operator "#F92672,#282828" +color-link preproc "#CB4B16,#282828" +color-link type "#66D9EF,#282828" +color-link special "#A6E22E,#282828" +color-link underlined "#D33682,#282828" +color-link error "bold #CB4B16,#282828" +color-link todo "bold #D33682,#282828" +color-link hlsearch "#282828,#E6DB74" +color-link statusline "#282828,#F8F8F2" +color-link tabbar "#282828,#F8F8F2" +color-link indent-char "#505050,#282828" +color-link line-number "#AAAAAA,#323232" +color-link current-line-number "#AAAAAA,#282828" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#CB4B16,#282828" +color-link gutter-warning "#E6DB74,#282828" +color-link cursor-line "#323232" +color-link color-column "#323232" +#No extended types; Plain brackets. +color-link type.extended "default" +#color-link symbol.brackets "default" +color-link symbol.tag "#AE81FF,#282828" +color-link match-brace "#282828,#AE81FF" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/one-dark.micro b/config/micro/colorschemes/one-dark.micro new file mode 100644 index 0000000..ed99432 --- /dev/null +++ b/config/micro/colorschemes/one-dark.micro @@ -0,0 +1,39 @@ +color-link default "#ABB2BF,#21252C" +color-link color-column "#282C34" +color-link comment "#5C6370" +color-link constant "#C678DD" +color-link constant.number "#E5C07B" +color-link constant.string "#98C379" +color-link constant.string.char "#BDE6AD" +color-link constant.specialChar "#DDF2A4" +color-link current-line-number "#C6C6C6,#21252C" +color-link cursor-line "#282C34" +color-link divider "#ABB2BF" +color-link error "#D2A8A1" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#9B859D" +color-link gutter-warning "#9B859D" +color-link hlsearch "#21252C,#E5C07B" +color-link identifier "#61AFEF" +color-link identifier.class "#C678DD" +color-link identifier.var "#C678DD" +color-link indent-char "#515151" +color-link line-number "#636D83,#282C34" +color-link preproc "#E0C589" +color-link special "#E0C589" +color-link statement "#C678DD" +color-link statusline "#282828,#ABB2BF" +color-link symbol "#AC885B" +color-link symbol.brackets "#ABB2BF" +color-link symbol.operator "#C678DD" +color-link symbol.tag "#AC885B" +color-link tabbar "#F2F0EC,#2D2D2D" +color-link todo "#8B98AB" +color-link type "#66D9EF" +color-link type.keyword "#C678DD" +color-link underlined "#8996A8" +color-link match-brace "#21252C,#C678DD" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/railscast.micro b/config/micro/colorschemes/railscast.micro new file mode 100644 index 0000000..01c0055 --- /dev/null +++ b/config/micro/colorschemes/railscast.micro @@ -0,0 +1,37 @@ +color-link default "#e6e1dc,#2b2b2b" +color-link comment "#bc9458,#2b2b2b" +color-link statement "#cc7833,#2b2b2b" +color-link constant "#a5c261,#2b2b2b" +color-link constant.bool "#6d9cbe,#2b2b2b" +color-link constant.specialChar "#459231,#2b2b2b" +color-link type "#6d9cbe,#2b2b2b" +color-link preproc "#cc7833,#2b2b2b" +color-link special "#cc7833,#2b2b2b" +color-link underlined "#cc7833,#2b2b2b" +color-link todo "bold #cc7833,#2b2b2b" +color-link error "bold #cc7833,#2b2b2b" +color-link gutter-error "#cc7833,#11151C" +color-link hlsearch "#e6e1dc,#474d5c" +color-link indent-char "#414141,#2b2b2b" +color-link line-number "#a1a1a1,#232323" +color-link current-line-number "#e6e1dc,#2b2b2b" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-warning "#a5c261,#11151C" +color-link symbol "#edb753,#2b2b2b" +color-link symbol.operator "#cc7833,#2b2b2b" +color-link symbol.brackets "#cc7833,#2b2b2b" +color-link identifier "#edb753,#2b2b2b" +color-link statusline "#b1b1b1,#232323" +color-link tabbar "bold #b1b1b1,#232323" +color-link cursor-line "#353535" +color-link color-column "#353535" +color-link space "underline #e6e1dc,#2b2b2b" +color-link tab-error "#d75f5f" +color-link trailingws "#d75f5f" + +#the Python syntax definition are wrong. This is not how you should do decorators! +color-link brightgreen "#edb753,#2b2b2b" + +color-link match-brace "#2b2b2b,#a5c261" diff --git a/config/micro/colorschemes/simple.micro b/config/micro/colorschemes/simple.micro new file mode 100644 index 0000000..707c04c --- /dev/null +++ b/config/micro/colorschemes/simple.micro @@ -0,0 +1,33 @@ +color-link comment "blue" +color-link constant "red" +color-link identifier "cyan" +color-link statement "yellow" +color-link symbol "yellow" +color-link preproc "magenta" +color-link type "green" +color-link special "magenta" +color-link ignore "default" +color-link error ",brightred" +color-link todo ",brightyellow" +color-link hlsearch "black,yellow" +color-link statusline "black,white" +color-link indent-char "black" +color-link line-number "yellow" +color-link current-line-number "red" +color-link diff-added "green" +color-link diff-modified "yellow" +color-link diff-deleted "red" +color-link gutter-error ",red" +color-link gutter-warning "red" +#Cursor line causes readability issues. Disabled for now. +#color-link cursor-line "white,black" +color-link color-column "white" +#No extended types. (bool in C) +color-link type.extended "default" +#No bracket highlighting. +color-link symbol.brackets "default" +#Color shebangs the comment color +color-link preproc.shebang "comment" +color-link match-brace ",magenta" +color-link tab-error "brightred" +color-link trailingws "brightred" diff --git a/config/micro/colorschemes/solarized-tc.micro b/config/micro/colorschemes/solarized-tc.micro new file mode 100644 index 0000000..8eae039 --- /dev/null +++ b/config/micro/colorschemes/solarized-tc.micro @@ -0,0 +1,31 @@ +color-link default "#839496,#002833" +color-link comment "#586E75,#002833" +color-link identifier "#268BD2,#002833" +color-link constant "#2AA198,#002833" +color-link constant.specialChar "#DC322F,#002833" +color-link statement "#859900,#002833" +color-link symbol "#859900,#002833" +color-link preproc "#CB4B16,#002833" +color-link type "#B58900,#002833" +color-link special "#268BD2,#002833" +color-link underlined "#D33682,#002833" +color-link error "bold #CB4B16,#002833" +color-link todo "bold #D33682,#002833" +color-link hlsearch "#002833,#B58900" +color-link statusline "#003541,#839496" +color-link tabbar "#003541,#839496" +color-link indent-char "#003541,#002833" +color-link line-number "#586E75,#003541" +color-link current-line-number "#586E75,#002833" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#003541,#CB4B16" +color-link gutter-warning "#CB4B16,#002833" +color-link cursor-line "#003541" +color-link color-column "#003541" +color-link type.extended "#839496,#002833" +color-link symbol.brackets "#839496,#002833" +color-link match-brace "#002833,#268BD2" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/solarized.micro b/config/micro/colorschemes/solarized.micro new file mode 100644 index 0000000..4d3923a --- /dev/null +++ b/config/micro/colorschemes/solarized.micro @@ -0,0 +1,30 @@ +color-link comment "bold brightgreen" +color-link constant "cyan" +color-link constant.specialChar "red" +color-link identifier "blue" +color-link statement "green" +color-link symbol "green" +color-link preproc "brightred" +color-link type "yellow" +color-link special "blue" +color-link underlined "magenta" +color-link error "bold brightred" +color-link todo "bold magenta" +color-link hlsearch "black,yellow" +color-link statusline "black,brightblue" +color-link tabbar "black,brightblue" +color-link indent-char "black" +color-link line-number "bold brightgreen,black" +color-link current-line-number "bold brightgreen,default" +color-link diff-added "green" +color-link diff-modified "yellow" +color-link diff-deleted "red" +color-link gutter-error "black,brightred" +color-link gutter-warning "brightred,default" +color-link cursor-line "black" +color-link color-column "black" +color-link type.extended "default" +color-link symbol.brackets "default" +color-link match-brace ",blue" +color-link tab-error "brightred" +color-link trailingws "brightred" diff --git a/config/micro/colorschemes/sunny-day.micro b/config/micro/colorschemes/sunny-day.micro new file mode 100644 index 0000000..24a3e76 --- /dev/null +++ b/config/micro/colorschemes/sunny-day.micro @@ -0,0 +1,29 @@ +color-link default "0,230" +color-link comment "244" +color-link constant.string "17" +color-link constant "88" +color-link identifier "22" +color-link statement "0,230" +color-link symbol "89" +color-link preproc "22" +color-link type "88" +color-link special "22" +color-link underlined "61,230" +color-link error "88" +color-link todo "210" +color-link hlsearch "0,253" +color-link statusline "233,229" +color-link tabbar "233,229" +color-link indent-char "229" +color-link line-number "244" +color-link diff-added "34" +color-link diff-modified "214" +color-link diff-deleted "160" +color-link gutter-error "88" +color-link gutter-warning "88" +color-link cursor-line "229" +#color-link color-column "196" +color-link current-line-number "246" +color-link match-brace "230,22" +color-link tab-error "210" +color-link trailingws "210" diff --git a/config/micro/colorschemes/twilight.micro b/config/micro/colorschemes/twilight.micro new file mode 100644 index 0000000..8135bb8 --- /dev/null +++ b/config/micro/colorschemes/twilight.micro @@ -0,0 +1,40 @@ +# Twilight color scheme +color-link default "#F8F8F8,#141414" +color-link color-column "#1B1B1B" +color-link comment "#5F5A60" +color-link constant "#CF6A4C" +#color-link constant.number "#CF6A4C" +color-link constant.specialChar "#DDF2A4" +color-link constant.string "#8F9D6A" +color-link current-line-number "#868686,#1B1B1B" +color-link cursor-line "#1B1B1B" +color-link divider "#1E1E1E" +color-link error "#D2A8A1" +color-link diff-added "#00AF00" +color-link diff-modified "#FFAF00" +color-link diff-deleted "#D70000" +color-link gutter-error "#9B859D" +color-link gutter-warning "#9B859D" +color-link hlsearch "#141414,#C0C000" +color-link identifier "#9B703F" +color-link identifier.class "#DAD085" +color-link identifier.var "#7587A6" +color-link indent-char "#515151" +color-link line-number "#868686,#1B1B1B" +color-link current-line-number "#868686,#141414" +color-link preproc "#E0C589" +color-link special "#E0C589" +color-link statement "#CDA869" +color-link statusline "#515151,#1E1E1E" +color-link symbol "#AC885B" +color-link symbol.brackets "#F8F8F8" +color-link symbol.operator "#CDA869" +color-link symbol.tag "#AC885B" +color-link tabbar "#F2F0EC,#2D2D2D" +color-link todo "#8B98AB" +color-link type "#F9EE98" +color-link type.keyword "#CDA869" +color-link underlined "#8996A8" +color-link match-brace "#141414,#E0C589" +color-link tab-error "#D75F5F" +color-link trailingws "#D75F5F" diff --git a/config/micro/colorschemes/zenburn.micro b/config/micro/colorschemes/zenburn.micro new file mode 100644 index 0000000..acbd83f --- /dev/null +++ b/config/micro/colorschemes/zenburn.micro @@ -0,0 +1,30 @@ +color-link default "188,237" +color-link comment "108,237" +color-link constant.string "174,237" +color-link constant.number "116,237" +color-link constant "181,237" +color-link identifier "223,237" +color-link statement "223,237" +color-link symbol "223,237" +color-link preproc "223,237" +color-link type "187,237" +color-link special "181,237" +color-link underlined "188,237" +color-link error "115,236" +color-link todo "bold 254,237" +color-link hlsearch "230,22" +color-link statusline "186,236" +color-link tabbar "186,236" +color-link indent-char "238,237" +color-link line-number "248,238" +color-link diff-added "34" +color-link diff-modified "214" +color-link diff-deleted "160" +color-link gutter-error "237,174" +color-link gutter-warning "174,237" +color-link cursor-line "238" +color-link color-column "238" +color-link current-line-number "188,237" +color-link match-brace "237,223" +color-link tab-error "167" +color-link trailingws "167" diff --git a/config/micro/plug/filemanager/.editorconfig b/config/micro/plug/filemanager/.editorconfig new file mode 100644 index 0000000..a34d753 --- /dev/null +++ b/config/micro/plug/filemanager/.editorconfig @@ -0,0 +1,17 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +charset = utf-8 +end_of_line = lf +indent_style = tab +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +# Ignore .md files, because 2 spaces at end-of-line has meaning +[*.md] +trim_trailing_whitespace = false diff --git a/config/micro/plug/filemanager/CHANGELOG.md b/config/micro/plug/filemanager/CHANGELOG.md new file mode 100644 index 0000000..46d51c4 --- /dev/null +++ b/config/micro/plug/filemanager/CHANGELOG.md @@ -0,0 +1,109 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [3.4.0] - 2018-10-22 + +### Fixed + +- Issues with Lua's `io.popen` on some systems by using Micro's built-in `RunShellCommand` instead, [thanks to @scottbilas](https://github.com/NicolaiSoeborg/filemanager-plugin/pull/38) + +### Added + +- Adds the option `filemanager-openonstart` to allow auto-opening the file tree when Micro is started (default OFF) + +### Changed + +- Update README's option's documentation + +## [3.3.1] - 2018-10-03 + +### Changed + +- Performance improvement by removing unnecessary refresh of the opened file, [thanks to @jackwilsdon](https://github.com/NicolaiSoeborg/filemanager-plugin/pull/37) + +## [3.3.0] - 2018-09-13 + +### Added + +- The ability to sort folders above files, [thanks to @cbrown1](https://github.com/NicolaiSoeborg/filemanager-plugin/pull/33) + +### Fixed + +- The displayed filenames are now correctly only showing their "basename" on Windows + +## [3.2.0] - 2018-02-15 + +### Added + +- The ability to go to parent directory with left arrow (when not minimizing). Thanks @avently +- The ability to jump to the `..` as a "parent directory". Thanks @avently + +## [3.1.2] - 2018-02-07 + +### Fixed + +- The minimum Micro version, which was incorrectly set to v1.4.0. Ref [issue #28](https://github.com/NicolaiSoeborg/filemanager-plugin/issues/28) + +## [3.1.1] - 2018-02-04 + +### Fixed + +Ref https://github.com/zyedidia/micro/issues/992 for both of these fixes. + +- The syntax parser not loading correctly (mostly block comments) on opened files. **Requires Micro >= v1.4.0** +- An errant tab being inserted into the newly opened file. + +## [3.1.0] - 2018-01-30 + +### Added + +- The ability to hide dotfiles using the `filemanager-showdotfiles` option. +- The ability to hide files ignored in your VCS (aka `.gitignore`'d) using the `filemanager-showignored` option. Only works with Git at the moment. +- This `CHANGELOG.md` + +### Fixed + +- A bug with the `rm` command that caused weird, undefined behaviour to contents within the same dir as the file/dir deleted. +- Issue [#24](https://github.com/NicolaiSoeborg/filemanager-plugin/issues/24) + +## [3.0.0] - 2018-01-10 + +### Fixed + +- Issues [#13](https://github.com/NicolaiSoeborg/filemanager-plugin/issues/13), [#14](https://github.com/NicolaiSoeborg/filemanager-plugin/issues/14), [#15](https://github.com/NicolaiSoeborg/filemanager-plugin/issues/15), [#19](https://github.com/NicolaiSoeborg/filemanager-plugin/issues/19), [#20](https://github.com/NicolaiSoeborg/filemanager-plugin/issues/20) +- The broken syntax highlighting + +### Added + +- Directory expansion/compression below itself for viewing more akin to a file tree. +- The `rm` command, which deletes the file/directory under the cursor. +- The `touch` command, which creates a file with the passed filename. +- The `mkdir` command, which creates a directory with the passed filename. +- An API, of sorts, for the user to rebind their keys to if they dislike the defaults. +- An [editorconfig](http://editorconfig.org/) file. + +### Changed + +- The view that it spawns in to read-only, which requires Micro version >= 1.3.5 +- The functionality of some keybindings (when in the view) so they work safetly, or at all, with the plugin. +- From the `enter` key to `tab` for opening/going into files/dirs (a side-effect of using the read-only setting) + +### Removed + +- The ability to use a lot of keybindings that would otherwise mess with the view, and have no benifit. +- The pointless `.gitignore` file. + +[unreleased]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.4.0...HEAD +[3.4.0]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.3.1...v3.4.0 +[3.3.1]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.3.0...v3.3.1 +[3.3.0]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.2.0...v3.3.0 +[3.2.0]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.1.2...v3.2.0 +[3.1.2]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.1.1...v3.1.2 +[3.1.1]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.1.0...v3.1.1 +[3.1.0]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v3.0.0...v3.1.0 +[3.0.0]: https://github.com/NicolaiSoeborg/filemanager-plugin/compare/v2.1.1...v3.0.0 diff --git a/config/micro/plug/filemanager/LICENSE b/config/micro/plug/filemanager/LICENSE new file mode 100644 index 0000000..ae6fb2f --- /dev/null +++ b/config/micro/plug/filemanager/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Nicolai SĆøborg + +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/config/micro/plug/filemanager/README.md b/config/micro/plug/filemanager/README.md new file mode 100644 index 0000000..79d983d --- /dev/null +++ b/config/micro/plug/filemanager/README.md @@ -0,0 +1,56 @@ +# Filemanager Plugin + +A simple plugin that allows for easy navigation of a file tree. + +![Example picture](./example.jpg?raw=true "Example") + +**Installation:** run `plugin install filemanager` and restart Micro. + +## Basics + +The top line always has the current directory's path to show you where you are.\ +The `..` near the top is used to move back a directory, from your current position. + +All directories have a `/` added to the end of it, and are syntax-highlighted as a `special` character.\ +If the directory is expanded, there will be a `+` to the left of it. If it is collapsed there will be a `-` instead. + +**NOTE:** If you change files without using the plugin, it can't know what you did. The only fix is to close and open the tree. + +### Options + +| Option | Purpose | Default | +| :--------------------------- | :----------------------------------------------------------- | :------ | +| `filemanager-showdotfiles` | Show dotfiles (hidden if false) | `true` | +| `filemanager-showignored` | Show gitignore'd files (hidden if false) | `true` | +| `filemanager-compressparent` | Collapse the parent dir when left is pressed on a child file | `true` | +| `filemanager-foldersfirst` | Sorts folders above any files | `true` | +| `filemanager-openonstart` | Automatically open the file tree when starting Micro | `false` | + +### Commands and Keybindings + +The keybindings below are the equivalent to Micro's defaults, and not actually set by the plugin. If you've changed any of those keybindings, then that key is used instead. + +If you want to [keybind](https://github.com/zyedidia/micro/blob/master/runtime/help/keybindings.md#rebinding-keys) any of the operations/commands, bind to the labeled API in the table below. + +| Command | Keybinding(s) | What it does | API for `bindings.json` | +| :------- | :------------------------- | :------------------------------------------------------------------------------------------ | :------------------------------------ | +| `tree` | - | Open/close the tree | `filemanager.toggle_tree` | +| - | Tab & MouseLeft | Open a file, or go into the directory. Goes back a dir if on `..` | `filemanager.try_open_at_cursor` | +| - | → | Expand directory in tree listing | `filemanager.uncompress_at_cursor` | +| - | ← | Collapse directory listing | `filemanager.compress_at_cursor` | +| - | Shift ⬆ | Go to the target's parent directory | `filemanager.goto_parent_dir` | +| - | Alt Shift { | Jump to the previous directory in the view | `filemanager.goto_next_dir` | +| - | Alt Shift } | Jump to the next directory in the view | `filemanager.goto_prev_dir` | +| `rm` | - | Prompt to delete the target file/directory your cursor is on | `filemanager.prompt_delete_at_cursor` | +| `rename` | - | Rename the file/directory your cursor is on, using the passed name | `filemanager.rename_at_cursor` | +| `touch` | - | Make a new file under/into the file/directory your cursor is on, using the passed name | `filemanager.new_file` | +| `mkdir` | - | Make a new directory under/into the file/directory your cursor is on, using the passed name | `filemanager.new_dir` | + +#### Notes + +- `rename`, `touch`, and `mkdir` require a name to be passed when calling.\ + Example: `rename newnamehere`, `touch filenamehere`, `mkdir dirnamehere`.\ + If the passed name already exists in the current dir, it will cancel instead of overwriting (for safety). + +- The Ctrl w keybinding is to switch which buffer your cursor is on.\ + This isn't specific to the plugin, it's just part of Micro, but many people seem to not know this. diff --git a/config/micro/plug/filemanager/example.jpg b/config/micro/plug/filemanager/example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab5bf1c604cd7c54c24f9c58295b8d4eae5a246a GIT binary patch literal 115612 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

Q*bKntbncAhU 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 0 then + -- Append any files to results, now that all folders have been added + -- files will be > 0 only if folders_first and there are files + for i = 1, #files do + results[#results + 1] = files[i] + end + end + + -- Return the list of scanned files + return results +end + +-- A short "get y" for when acting on the scanlist +-- Needed since we don't store the first 3 visible indicies in scanlist +local function get_safe_y(optional_y) + -- Default to 0 so we can check against and see if it's bad + local y = 0 + -- Make the passed y optional + if optional_y == nil then + -- Default to cursor's Y loc if nothing was passed, instead of declaring another y + optional_y = tree_view.Cursor.Loc.Y + end + -- 0/1/2 would be the top "dir, separator, .." so check if it's past + if optional_y > 2 then + -- -2 to conform to our scanlist, since zero-based Go index & Lua's one-based + y = tree_view.Cursor.Loc.Y - 2 + end + return y +end + +-- Joins the target dir's leading path to the passed name +local function dirname_and_join(path, join_name) + -- The leading path to the dir we're in + local leading_path = filepath.Dir(path) + -- Joins with OS-specific slashes + return filepath.Join(leading_path, join_name) +end + +-- Hightlights the line when you move the cursor up/down +local function select_line(last_y) + -- Make last_y optional + if last_y ~= nil then + -- Don't let them move past ".." by checking the result first + if last_y > 1 then + -- If the last position was valid, move back to it + tree_view.Cursor.Loc.Y = last_y + end + elseif tree_view.Cursor.Loc.Y < 2 then + -- Put the cursor on the ".." if it's above it + tree_view.Cursor.Loc.Y = 2 + end + + -- Puts the cursor back in bounds (if it isn't) for safety + tree_view.Cursor:Relocate() + + -- Makes sure the cursor is visible (if it isn't) + -- (false) means no callback + tree_view:Center() + + -- Highlight the current line where the cursor is + tree_view.Cursor:SelectLine() +end + +-- Simple true/false if scanlist is currently empty +local function scanlist_is_empty() + if next(scanlist) == nil then + return true + else + return false + end +end + +local function refresh_view() + clear_messenger() + + tree_view:ResizePane(30) + -- If it's less than 30, just use 30 for width. Don't want it too small + + if tree_view:GetView().Width < 30 then + tree_view:ResizePane(30) + end + + if tree_view:GetView().Width > 31 then + tree_view:ResizePane(30) + end + + -- Delete everything in the view/buffer + tree_view.Buf.EventHandler:Remove(tree_view.Buf:Start(), tree_view.Buf:End()) + + -- Insert the top 3 things that are always there + -- Current dir + tree_view.Buf.EventHandler:Insert(buffer.Loc(0, 0), current_dir .. "\n") + -- An ASCII separator + tree_view.Buf.EventHandler:Insert(buffer.Loc(0, 1), repeat_str("─", tree_view:GetView().Width) .. "\n") + -- The ".." and use a newline if there are things in the current dir + tree_view.Buf.EventHandler:Insert(buffer.Loc(0, 2), (#scanlist > 0 and "..\n" or "..")) + + -- Holds the current basename of the path (purely for display) + local display_content + + -- NOTE: might want to not do all these concats in the loop, it can get slow + for i = 1, #scanlist do + -- The first 3 indicies are the dir/separator/"..", so skip them + if scanlist[i].dirmsg ~= "" then + -- Add the + or - to the left to signify if it's compressed or not + -- Add a forward slash to the right to signify it's a dir + display_content = scanlist[i].dirmsg .. " " .. get_basename(scanlist[i].abspath) .. "/" + else + -- Use the basename from the full path for display + -- Two spaces to align with any directories, instead of being "off" + display_content = " " .. get_basename(scanlist[i].abspath) + end + + if scanlist[i].owner > 0 then + -- Add a space and repeat it * the indent number + display_content = repeat_str(" ", 2 * scanlist[i].indent) .. display_content + end + + -- Newlines are needed for all inserts except the last + -- If you insert a newline on the last, it leaves a blank spot at the bottom + if i < #scanlist then + display_content = display_content .. "\n" + end + + -- Insert line-by-line to avoid out-of-bounds on big folders + -- +2 so we skip the 0/1/2 positions that hold the top dir/separator/.. + tree_view.Buf.EventHandler:Insert(buffer.Loc(0, i + 2), display_content) + end + + -- Resizes all views after messing with ours + tree_view:Tab():Resize() +end + +-- Moves the cursor to the ".." in tree_view +local function move_cursor_top() + -- 2 is the position of the ".." + tree_view.Cursor.Loc.Y = 2 + + -- select the line after moving + select_line() +end + +local function refresh_and_select() + -- Save the cursor position before messing with the view.. + -- because changing contents in the view causes the Y loc to move + local last_y = tree_view.Cursor.Loc.Y + -- Actually refresh + refresh_view() + -- Moves the cursor back to it's original position + select_line(last_y) +end + +-- Find everything nested under the target, and remove it from the scanlist +local function compress_target(y, delete_y) + -- Can't compress the top stuff, or if there's nothing there, so exit early + if y == 0 or scanlist_is_empty() then + return + end + -- Check if the target is a dir, since files don't have anything to compress + -- Also make sure it's actually an uncompressed dir by checking the gutter message + if scanlist[y].dirmsg == "-" then + local target_index, delete_index + -- Add the original target y to stuff to delete + local delete_under = {[1] = y} + local new_table = {} + local del_count = 0 + -- Loop through the whole table, looking for nested content, or stuff with ownership == y... + -- and delete matches. y+1 because we want to start under y, without actually touching y itself. + for i = 1, #scanlist do + delete_index = false + -- Don't run on y, since we don't always delete y + if i ~= y then + -- On each loop, check if the ownership matches + for x = 1, #delete_under do + -- Check for something belonging to a thing to delete + if scanlist[i].owner == delete_under[x] then + -- Delete the target if it has an ownership to our delete target + delete_index = true + -- Keep count of total deleted (can't use #delete_under because it's for deleted dir count) + del_count = del_count + 1 + -- Check if an uncompressed dir + if scanlist[i].dirmsg == "-" then + -- Add the index to stuff to delete, since it holds nested content + delete_under[#delete_under + 1] = i + end + -- See if we're on the "deepest" nested content + if scanlist[i].indent == highest_visible_indent and scanlist[i].indent > 0 then + -- Save the lower indent, since we're minimizing/deleting nested dirs + highest_visible_indent = highest_visible_indent - 1 + end + -- Nothing else to do, so break this inner loop + break + end + end + end + if not delete_index then + -- Save the index in our new table + new_table[#new_table + 1] = scanlist[i] + end + end + + scanlist = new_table + + if del_count > 0 then + -- Ownership adjusting since we're deleting an index + for i = y + 1, #scanlist do + -- Don't touch root file/dirs + if scanlist[i].owner > y then + -- Minus ownership, on everything below i, the number deleted + scanlist[i]:decrease_owner(del_count) + end + end + end + + -- If not deleting, then update the gutter message to be + to signify compressed + if not delete_y then + -- Update the dir message + scanlist[y].dirmsg = "+" + end + elseif config.GetGlobalOption("filemanager.compressparent") and not delete_y then + goto_parent_dir() + -- Prevent a pointless refresh of the view + return + end + + -- Put outside check above because we call this to delete targets as well + if delete_y then + local second_table = {} + -- Quickly remove y + for i = 1, #scanlist do + if i == y then + -- Reduce everything's ownership by 1 after y + for x = i + 1, #scanlist do + -- Don't touch root file/dirs + if scanlist[x].owner > y then + -- Minus 1 since we're just deleting y + scanlist[x]:decrease_owner(1) + end + end + else + -- Put everything but y into the temporary table + second_table[#second_table + 1] = scanlist[i] + end + end + -- Put everything (but y) back into scanlist, with adjusted ownership values + scanlist = second_table + end + + if tree_view:GetView().Width > (30 + highest_visible_indent) then + -- Shave off some width + tree_view:ResizePane(30) + end + + refresh_and_select() +end + +-- Prompts the user for deletion of a file/dir when triggered +-- Not local so Micro can access it +function prompt_delete_at_cursor() + local y = get_safe_y() + -- Don't let them delete the top 3 index dir/separator/.. + if y == 0 or scanlist_is_empty() then + micro.InfoBar():Error("You can't delete that") + -- Exit early if there's nothing to delete + return + end + + micro.InfoBar():YNPrompt("Do you want to delete the " .. (scanlist[y].dirmsg ~= "" and "dir" or "file") .. ' "' .. scanlist[y].abspath .. '"? ', function(yes, canceled) + if yes and not canceled then + -- Use Go's os.Remove to delete the file + local go_os = import("os") + -- Delete the target (if its a dir then the children too) + local remove_log = go_os.RemoveAll(scanlist[y].abspath) + if remove_log == nil then + micro.InfoBar():Message("Filemanager deleted: ", scanlist[y].abspath) + -- Remove the target (and all nested) from scanlist[y + 1] + -- true to delete y + compress_target(get_safe_y(), true) + else + micro.InfoBar():Error("Failed deleting file/dir: ", remove_log) + end + else + micro.InfoBar():Message("Nothing was deleted") + end + end) +end + +-- Changes the current dir in the top of the tree.. +-- then scans that dir, and prints it to the view +local function update_current_dir(path) + -- Clear the highest since this is a full refresh + highest_visible_indent = 0 + -- Set the width back to 30 + tree_view:ResizePane(30) + -- Update the current dir to the new path + current_dir = path + + -- Get the current working dir's files into our list of files + -- 0 ownership because this is a scan of the base dir + -- 0 indent because this is the base dir + local scan_results = get_scanlist(path, 0, 0) + -- Safety check with not-nil + if scan_results ~= nil then + -- Put in the new scan stuff + scanlist = scan_results + else + -- If nil, just empty it + scanlist = {} + end + + refresh_view() + -- Since we're going into a new dir, move cursor to the ".." by default + move_cursor_top() +end + +-- (Tries to) go back one "step" from the current directory +local function go_back_dir() + -- Use Micro's dirname to get everything but the current dir's path + local one_back_dir = filepath.Dir(current_dir) + -- Try opening, assuming they aren't at "root", by checking if it matches last dir + if one_back_dir ~= current_dir then + -- If filepath.Dir returns different, then they can move back.. + -- so we update the current dir and refresh + update_current_dir(one_back_dir) + end +end + +-- Tries to open the current index +-- If it's the top dir indicator, or separator, nothing happens +-- If it's ".." then it tries to go back a dir +-- If it's a dir then it moves into the dir and refreshes +-- If it's actually a file, open it in a new vsplit +-- THIS EXPECTS ZERO-BASED Y +local function try_open_at_y(y) + -- 2 is the zero-based index of ".." + if y == 2 then + go_back_dir() + elseif y > 2 and not scanlist_is_empty() then + -- -2 to conform to our scanlist "missing" first 3 indicies + y = y - 2 + if scanlist[y].dirmsg ~= "" then + -- if passed path is a directory, update the current dir to be one deeper.. + update_current_dir(scanlist[y].abspath) + else + -- If it's a file, then open it + micro.InfoBar():Message("Filemanager opened ", scanlist[y].abspath) + -- Opens the absolute path in new vertical view + micro.CurPane():VSplitIndex(buffer.NewBufferFromFile(scanlist[y].abspath), true) + -- Resizes all views after opening a file + -- tabs[curTab + 1]:Resize() + end + else + micro.InfoBar():Error("Can't open that") + end +end + +-- Opens the dir's contents nested under itself +local function uncompress_target(y) + -- Exit early if on the top 3 non-list items + if y == 0 or scanlist_is_empty() then + return + end + -- Only uncompress if it's a dir and it's not already uncompressed + if scanlist[y].dirmsg == "+" then + -- Get a new scanlist with results from the scan in the target dir + local scan_results = get_scanlist(scanlist[y].abspath, y, scanlist[y].indent + 1) + -- Don't run any of this if there's nothing in the dir we scanned, pointless + if scan_results ~= nil then + -- Will hold all the old values + new scan results + local new_table = {} + -- By not inserting in-place, some unexpected results can be avoided + -- Also, table.insert actually moves values up (???) instead of down + for i = 1, #scanlist do + -- Put the current val into our new table + new_table[#new_table + 1] = scanlist[i] + if i == y then + -- Fill in the scan results under y + for x = 1, #scan_results do + new_table[#new_table + 1] = scan_results[x] + end + -- Basically "moving down" everything below y, so ownership needs to increase on everything + for inner_i = y + 1, #scanlist do + -- When root not pushed by inserting, don't change its ownership + -- This also has a dual-purpose to make it not effect root file/dirs + -- since y is always >= 3 + if scanlist[inner_i].owner > y then + -- Increase each indicies ownership by the number of scan results inserted + scanlist[inner_i]:increase_owner(#scan_results) + end + end + end + end + + -- Update our scanlist with the new values + scanlist = new_table + end + + -- Change to minus to signify it's uncompressed + scanlist[y].dirmsg = "-" + + -- Check if we actually need to resize, or if we're nesting at the same indent + -- Also check if there's anything in the dir, as we don't need to expand on an empty dir + if scan_results ~= nil then + if scanlist[y].indent > highest_visible_indent and #scan_results >= 1 then + -- Save the new highest indent + highest_visible_indent = scanlist[y].indent + -- Increase the width to fit the new nested content + tree_view:ResizePane(30) + end + end + + refresh_and_select() + end +end + +-- Stat a path to check if it exists, returning true/false +local function path_exists(path) + local go_os = import("os") + -- Stat the file/dir path we created + -- file_stat should be non-nil, and stat_err should be nil on success + local file_stat, stat_err = go_os.Stat(path) + -- Check if what we tried to create exists + if stat_err ~= nil then + -- true/false if the file/dir exists + return go_os.IsExist(stat_err) + elseif file_stat ~= nil then + -- Assume it exists if no errors + return true + end + return false +end + +-- Prompts for a new name, then renames the file/dir at the cursor's position +-- Not local so Micro can use it +function rename_at_cursor(bp, args) + + if micro.CurPane() ~= tree_view then + micro.InfoBar():Message("Rename only works with the cursor in the tree!") + return + end + + -- Safety check they actually passed a name + if #args < 1 then + micro.InfoBar():Error('When using "rename" you need to input a new name') + return + end + + local new_name = args[1] + + -- +1 since Go uses zero-based indices + local y = get_safe_y() + -- Check if they're trying to rename the top stuff + if y == 0 then + -- Error since they tried to rename the top stuff + micro.InfoBar():Message("You can't rename that!") + return + end + + -- The old file/dir's path + local old_path = scanlist[y].abspath + -- Join the path into their supplied rename, so that we have an absolute path + local new_path = dirname_and_join(old_path, new_name) + -- Use Go's os package for renaming the file/dir + local golib_os = import("os") + -- Actually rename the file + local log_out = golib_os.Rename(old_path, new_path) + -- Output the log, if any, of the rename + if log_out ~= nil then + micro.Log("Rename log: ", log_out) + end + + -- Check if the rename worked + if not path_exists(new_path) then + micro.InfoBar():Error("Path doesn't exist after rename!") + return + end + + -- NOTE: doesn't alphabetically sort after refresh, but it probably should + -- Replace the old path with the new path + scanlist[y].abspath = new_path + -- Refresh the tree with our new name + refresh_and_select() +end + +-- Prompts the user for the file/dir name, then creates the file/dir using Go's os package +local function create_filedir(filedir_name, make_dir) + if micro.CurPane() ~= tree_view then + micro.InfoBar():Message("You can't create a file/dir if your cursor isn't in the tree!") + return + end + + -- Safety check they passed a name + if filedir_name == nil then + micro.InfoBar():Error('You need to input a name when using "touch" or "mkdir"!') + return + end + + -- The target they're trying to create on top of/in/at/whatever + local y = get_safe_y() + -- Holds the path passed to Go for the eventual new file/dir + local filedir_path + -- A true/false if scanlist is empty + local scanlist_empty = scanlist_is_empty() + + -- Check there's actually anything in the list, and that they're not on the ".." + if not scanlist_empty and y ~= 0 then + -- If they're inserting on a folder, don't strip its path + if scanlist[y].dirmsg ~= "" then + -- Join our new file/dir onto the dir + filedir_path = filepath.Join(scanlist[y].abspath, filedir_name) + else + -- The current index is a file, so strip its name and join ours onto it + filedir_path = dirname_and_join(scanlist[y].abspath, filedir_name) + end + else + -- if nothing in the list, or cursor is on top of "..", use the current dir + filedir_path = filepath.Join(current_dir, filedir_name) + end + + -- Check if the name is already taken by a file/dir + if path_exists(filedir_path) then + micro.InfoBar():Error("You can't create a file/dir with a pre-existing name") + return + end + + -- Use Go's os package for creating the files + local golib_os = import("os") + -- Create the dir or file + if make_dir then + -- Creates the dir + golib_os.Mkdir(filedir_path, golib_os.ModePerm) + micro.Log("Filemanager created directory: " .. filedir_path) + else + -- Creates the file + golib_os.Create(filedir_path) + micro.Log("Filemanager created file: " .. filedir_path) + end + + -- If the file we tried to make doesn't exist, fail + if not path_exists(filedir_path) then + micro.InfoBar():Error("The file/dir creation failed") + + return + end + + -- Creates a sort of default object, to be modified below + -- If creating a dir, use a "+" + local new_filedir = new_listobj(filedir_path, (make_dir and "+" or ""), 0, 0) + + -- Refresh with our new value(s) + local last_y + + -- Only insert to scanlist if not created into a compressed dir, since it'd be hidden if it was + -- Wrap the below checks so a y=0 doesn't break something + if not scanlist_empty and y ~= 0 then + -- +1 so it's highlighting the new file/dir + last_y = tree_view.Cursor.Loc.Y + 1 + + -- Only actually add the object to the list if it's not created on an uncompressed folder + if scanlist[y].dirmsg == "+" then + -- Exit early, since it was created into an uncompressed folder + + return + elseif scanlist[y].dirmsg == "-" then + -- Check if created on top of an uncompressed folder + -- Change ownership to the folder it was created on top of.. + -- otherwise, the ownership would be incorrect + new_filedir.owner = y + -- We insert under the folder, so increment the indent + new_filedir.indent = scanlist[y].indent + 1 + else + -- This triggers if the cursor is on top of a file... + -- so we copy the properties of it + new_filedir.owner = scanlist[y].owner + new_filedir.indent = scanlist[y].indent + end + + -- A temporary table for adding our new object, and manipulation + local new_table = {} + -- Insert the new file/dir, and update ownership of everything below it + for i = 1, #scanlist do + -- Don't use i as index, as it will be off by one on the next pass after below "i == y" + new_table[#new_table + 1] = scanlist[i] + if i == y then + -- Insert our new file/dir (below the last item) + new_table[#new_table + 1] = new_filedir + -- Increase ownership of everything below it, since we're inserting + -- Basically "moving down" everything below y, so ownership needs to increase on everything + for inner_i = y + 1, #scanlist do + -- When root not pushed by inserting, don't change its ownership + -- This also has a dual-purpose to make it not effect root file/dirs + -- since y is always >= 3 + if scanlist[inner_i].owner > y then + -- Increase each indicies ownership by 1 since we're only inserting 1 file/dir + scanlist[inner_i]:increase_owner(1) + end + end + end + end + -- Update the scanlist with the new object & updated ownerships + scanlist = new_table + else + -- The scanlist is empty (or cursor is on ".."), so we add on our new file/dir at the bottom + scanlist[#scanlist + 1] = new_filedir + -- Add current position so it takes into account where we are + last_y = #scanlist + tree_view.Cursor.Loc.Y + end + + refresh_view() + select_line(last_y) +end + +-- Triggered with "touch filename" +function new_file(bp, args) + + -- Safety check they actually passed a name + if #args < 1 then + micro.InfoBar():Error('When using "touch" you need to input a file name') + return + end + + local file_name = args[1] + + -- False because not a dir + create_filedir(file_name, false) +end + +-- Triggered with "mkdir dirname" +function new_dir(bp, args) + + -- Safety check they actually passed a name + if #args < 1 then + micro.InfoBar():Error('When using "mkdir" you need to input a dir name') + return + end + + local dir_name = args[1] + + -- True because dir + create_filedir(dir_name, true) +end + +-- open_tree setup's the view +local function open_tree() + -- Open a new Vsplit (on the very left) + micro.CurPane():VSplitIndex(buffer.NewBuffer("", "filemanager"), false) + -- Save the new view so we can access it later + tree_view = micro.CurPane() + + -- Set the width of tree_view to 30% & lock it + tree_view:ResizePane(30) + -- Set the type to unsavable + -- tree_view.Buf.Type = buffer.BTLog + tree_view.Buf.Type.Scratch = true + tree_view.Buf.Type.Readonly = true + + -- Set the various display settings, but only on our view (by using SetLocalOption instead of SetOption) + -- NOTE: Micro requires the true/false to be a string + -- Softwrap long strings (the file/dir paths) + tree_view.Buf:SetOptionNative("softwrap", true) + -- No line numbering + tree_view.Buf:SetOptionNative("ruler", false) + -- Is this needed with new non-savable settings from being "vtLog"? + tree_view.Buf:SetOptionNative("autosave", false) + -- Don't show the statusline to differentiate the view from normal views + tree_view.Buf:SetOptionNative("statusformatr", "") + tree_view.Buf:SetOptionNative("statusformatl", "filemanager") + tree_view.Buf:SetOptionNative("scrollbar", false) + + -- Fill the scanlist, and then print its contents to tree_view + update_current_dir(os.Getwd()) +end + +-- close_tree will close the tree plugin view and release memory. +local function close_tree() + if tree_view ~= nil then + tree_view:Quit() + tree_view = nil + clear_messenger() + end +end + +-- toggle_tree will toggle the tree view visible (create) and hide (delete). +function toggle_tree() + if tree_view == nil then + open_tree() + else + close_tree() + end +end + +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- Functions exposed specifically for the user to bind +-- Some are used in callbacks as well +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +function uncompress_at_cursor() + if micro.CurPane() == tree_view then + uncompress_target(get_safe_y()) + end +end + +function compress_at_cursor() + if micro.CurPane() == tree_view then + -- False to not delete y + compress_target(get_safe_y(), false) + end +end + +-- Goes up 1 visible directory (if any) +-- Not local so it can be bound +function goto_prev_dir() + if micro.CurPane() ~= tree_view or scanlist_is_empty() then + return + end + + local cur_y = get_safe_y() + -- If they try to run it on the ".." do nothing + if cur_y ~= 0 then + local move_count = 0 + for i = cur_y - 1, 1, -1 do + move_count = move_count + 1 + -- If a dir, stop counting + if scanlist[i].dirmsg ~= "" then + -- Jump to its parent (the ownership) + tree_view.Cursor:UpN(move_count) + select_line() + break + end + end + end +end + +-- Goes down 1 visible directory (if any) +-- Not local so it can be bound +function goto_next_dir() + if micro.CurPane() ~= tree_view or scanlist_is_empty() then + return + end + + local cur_y = get_safe_y() + local move_count = 0 + -- If they try to goto_next on "..", pretends the cursor is valid + if cur_y == 0 then + cur_y = 1 + move_count = 1 + end + -- Only do anything if it's even possible for there to be another dir + if cur_y < #scanlist then + for i = cur_y + 1, #scanlist do + move_count = move_count + 1 + -- If a dir, stop counting + if scanlist[i].dirmsg ~= "" then + -- Jump to its parent (the ownership) + tree_view.Cursor:DownN(move_count) + select_line() + break + end + end + end +end + +-- Goes to the parent directory (if any) +-- Not local so it can be keybound +function goto_parent_dir() + if micro.CurPane() ~= tree_view or scanlist_is_empty() then + return + end + + local cur_y = get_safe_y() + -- Check if the cursor is even in a valid location for jumping to the owner + if cur_y > 0 then + -- Jump to its parent (the ownership) + tree_view.Cursor:UpN(cur_y - scanlist[cur_y].owner) + select_line() + end +end + +function try_open_at_cursor() + if micro.CurPane() ~= tree_view or scanlist_is_empty() then + return + end + + try_open_at_y(tree_view.Cursor.Loc.Y) +end + +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- Shorthand functions for actions to reduce repeat code +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Used to fail certain actions that we shouldn't allow on the tree_view +local function false_if_tree(view) + if view == tree_view then + return false + end +end + +-- Select the line at the cursor +local function selectline_if_tree(view) + if view == tree_view then + select_line() + end +end + +-- Move the cursor to the top, but don't allow the action +local function aftermove_if_tree(view) + if view == tree_view then + if tree_view.Cursor.Loc.Y < 2 then + -- If it went past the "..", move back onto it + tree_view.Cursor:DownN(2 - tree_view.Cursor.Loc.Y) + end + select_line() + end +end + +local function clearselection_if_tree(view) + if view == tree_view then + -- Clear the selection when doing a find, so it doesn't copy the current line + tree_view.Cursor:ResetSelection() + end +end + +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- All the events for certain Micro keys go below here +-- Other than things we flat-out fail +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Close current +function preQuit(view) + if view == tree_view then + -- A fake quit function + close_tree() + -- Don't actually "quit", otherwise it closes everything without saving for some reason + return false + end +end + +-- Close all +function preQuitAll(view) + close_tree() +end + +-- FIXME: Workaround for the weird 2-index movement on cursordown +function preCursorDown(view) + if view == tree_view then + tree_view.Cursor:Down() + select_line() + -- Don't actually go down, as it moves 2 indicies for some reason + return false + end +end + +-- Up +function onCursorUp(view) + selectline_if_tree(view) +end + +-- Alt-Shift-{ +-- Go to target's parent directory (if exists) +function preParagraphPrevious(view) + if view == tree_view then + goto_prev_dir() + -- Don't actually do the action + return false + end +end + +-- Alt-Shift-} +-- Go to next dir (if exists) +function preParagraphNext(view) + if view == tree_view then + goto_next_dir() + -- Don't actually do the action + return false + end +end + +-- PageUp +function onCursorPageUp(view) + aftermove_if_tree(view) +end + +-- Ctrl-Up +function onCursorStart(view) + aftermove_if_tree(view) +end + +-- PageDown +function onCursorPageDown(view) + selectline_if_tree(view) +end + +-- Ctrl-Down +function onCursorEnd(view) + selectline_if_tree(view) +end + +function onNextSplit(view) + selectline_if_tree(view) +end + +function onPreviousSplit(view) + selectline_if_tree(view) +end + +-- On click, open at the click's y +function preMousePress(view, event) + if view == tree_view then + local x, y = event:Position() + -- Fixes the y because softwrap messes with it + local new_x, new_y = tree_view:GetMouseClickLocation(x, y) + -- Try to open whatever is at the click's y index + -- Will go into/back dirs based on what's clicked, nothing gets expanded + try_open_at_y(new_y) + -- Don't actually allow the mousepress to trigger, so we avoid highlighting stuff + return false + end +end + +-- Up +function preCursorUp(view) + if view == tree_view then + -- Disallow selecting past the ".." in the tree + if tree_view.Cursor.Loc.Y == 2 then + return false + end + end +end + +-- Left +function preCursorLeft(view) + if view == tree_view then + -- +1 because of Go's zero-based index + -- False to not delete y + compress_target(get_safe_y(), false) + -- Don't actually move the cursor, as it messes with selection + return false + end +end + +-- Right +function preCursorRight(view) + if view == tree_view then + -- +1 because of Go's zero-based index + uncompress_target(get_safe_y()) + -- Don't actually move the cursor, as it messes with selection + return false + end +end + +-- Workaround for tab getting inserted into opened files +-- Ref https://github.com/zyedidia/micro/issues/992 +local tab_pressed = false + +-- Tab +function preIndentSelection(view) + if view == tree_view then + tab_pressed = true + -- Open the file + -- Using tab instead of enter, since enter won't work with Readonly + try_open_at_y(tree_view.Cursor.Loc.Y) + -- Don't actually insert a tab + return false + end +end + +-- Workaround for tab getting inserted into opened files +-- Ref https://github.com/zyedidia/micro/issues/992 +function preInsertTab(view) + if tab_pressed then + tab_pressed = false + return false + end +end +function preInsertNewline(view) + if view == tree_view then + return false + end + return true +end +-- CtrlL +function onJumpLine(view) + -- Highlight the line after jumping to it + -- Also moves you to index 3 (2 in zero-base) if you went to the first 2 lines + aftermove_if_tree(view) +end + +-- ShiftUp +function preSelectUp(view) + if view == tree_view then + -- Go to the file/dir's parent dir (if any) + goto_parent_dir() + -- Don't actually selectup + return false + end +end + +-- CtrlF +function preFind(view) + -- Since something is always selected, clear before a find + -- Prevents copying the selection into the find input + clearselection_if_tree(view) +end + +-- FIXME: doesn't work for whatever reason +function onFind(view) + -- Select the whole line after a find, instead of just the input txt + selectline_if_tree(view) +end + +-- CtrlN after CtrlF +function onFindNext(view) + selectline_if_tree(view) +end + +-- CtrlP after CtrlF +function onFindPrevious(view) + selectline_if_tree(view) +end + +-- NOTE: This is a workaround for "cd" not having its own callback +local precmd_dir + +function preCommandMode(view) + precmd_dir = os.Getwd() +end + +-- Update the current dir when using "cd" +function onCommandMode(view) + local new_dir = os.Getwd() + -- Only do anything if the tree is open, and they didn't cd to nothing + if tree_view ~= nil and new_dir ~= precmd_dir and new_dir ~= current_dir then + update_current_dir(new_dir) + end +end + +------------------------------------------------------------------ +-- Fail a bunch of useless actions +-- Some of these need to be removed (read-only makes some useless) +------------------------------------------------------------------ + +function preStartOfLine(view) + return false_if_tree(view) +end + +function preStartOfText(view) + return false_if_tree(view) +end + +function preEndOfLine(view) + return false_if_tree(view) +end + +function preMoveLinesDown(view) + return false_if_tree(view) +end + +function preMoveLinesUp(view) + return false_if_tree(view) +end + +function preWordRight(view) + return false_if_tree(view) +end + +function preWordLeft(view) + return false_if_tree(view) +end + +function preSelectDown(view) + return false_if_tree(view) +end + +function preSelectLeft(view) + return false_if_tree(view) +end + +function preSelectRight(view) + return false_if_tree(view) +end + +function preSelectWordRight(view) + return false_if_tree(view) +end + +function preSelectWordLeft(view) + return false_if_tree(view) +end + +function preSelectToStartOfLine(view) + return false_if_tree(view) +end + +function preSelectToStartOfText(view) + return false_if_tree(view) +end + +function preSelectToEndOfLine(view) + return false_if_tree(view) +end + +function preSelectToStart(view) + return false_if_tree(view) +end + +function preSelectToEnd(view) + return false_if_tree(view) +end + +function preDeleteWordLeft(view) + return false_if_tree(view) +end + +function preDeleteWordRight(view) + return false_if_tree(view) +end + +function preOutdentSelection(view) + return false_if_tree(view) +end + +function preOutdentLine(view) + return false_if_tree(view) +end + +function preSave(view) + return false_if_tree(view) +end + +function preCut(view) + return false_if_tree(view) +end + +function preCutLine(view) + return false_if_tree(view) +end + +function preDuplicateLine(view) + return false_if_tree(view) +end + +function prePaste(view) + return false_if_tree(view) +end + +function prePastePrimary(view) + return false_if_tree(view) +end + +function preMouseMultiCursor(view) + return false_if_tree(view) +end + +function preSpawnMultiCursor(view) + return false_if_tree(view) +end + +function preSelectAll(view) + return false_if_tree(view) +end + +function init() + -- Let the user disable showing of dotfiles like ".editorconfig" or ".DS_STORE" + config.RegisterCommonOption("filemanager", "showdotfiles", true) + -- Let the user disable showing files ignored by the VCS (i.e. gitignored) + config.RegisterCommonOption("filemanager", "showignored", true) + -- Let the user disable going to parent directory via left arrow key when file selected (not directory) + config.RegisterCommonOption("filemanager", "compressparent", true) + -- Let the user choose to list sub-folders first when listing the contents of a folder + config.RegisterCommonOption("filemanager", "foldersfirst", true) + -- Lets the user have the filetree auto-open any time Micro is opened + -- false by default, as it's a rather noticable user-facing change + config.RegisterCommonOption("filemanager", "openonstart", false) + + -- Open/close the tree view + config.MakeCommand("tree", toggle_tree, config.NoComplete) + -- Rename the file/dir under the cursor + config.MakeCommand("rename", rename_at_cursor, config.NoComplete) + -- Create a new file + config.MakeCommand("touch", new_file, config.NoComplete) + -- Create a new dir + config.MakeCommand("mkdir", new_dir, config.NoComplete) + -- Delete a file/dir, and anything contained in it if it's a dir + config.MakeCommand("rm", prompt_delete_at_cursor, config.NoComplete) + -- Adds colors to the ".." and any dir's in the tree view via syntax highlighting + -- TODO: Change it to work with git, based on untracked/changed/added/whatever + config.AddRuntimeFile("filemanager", config.RTSyntax, "syntax.yaml") + + -- NOTE: This must be below the syntax load command or coloring won't work + -- Just auto-open if the option is enabled + -- This will run when the plugin first loads + if config.GetGlobalOption("filemanager.openonstart") then + -- Check for safety on the off-chance someone's init.lua breaks this + if tree_view == nil then + open_tree() + -- Puts the cursor back in the empty view that initially spawns + -- This is so the cursor isn't sitting in the tree view at startup + micro.CurPane():NextSplit() + else + -- Log error so they can fix it + micro.Log( + "Warning: filemanager.openonstart was enabled, but somehow the tree was already open so the option was ignored." + ) + end + end +end diff --git a/config/micro/plug/filemanager/repo.json b/config/micro/plug/filemanager/repo.json new file mode 100644 index 0000000..4bd7de2 --- /dev/null +++ b/config/micro/plug/filemanager/repo.json @@ -0,0 +1,45 @@ +[ + { + "Name": "filemanager", + "Description": "File manager for Micro", + "Tags": ["filetree", "filemanager", "file", "manager"], + "Website": "", + "Versions": [ + { + "Version": "2.1.1", + "Url": "https://github.com/NicolaiSoeborg/filemanager-plugin/archive/v2.1.1.zip", + "Require": { + "micro": ">=1.3.2" + } + }, + { + "Version": "3.1.0", + "Url": "https://github.com/NicolaiSoeborg/filemanager-plugin/archive/v3.1.0.zip", + "Require": { + "micro": ">=1.3.5" + } + }, + { + "Version": "3.4.0", + "Url": "https://github.com/NicolaiSoeborg/filemanager-plugin/archive/v3.4.0.zip", + "Require": { + "micro": ">=1.4.1" + } + }, + { + "Version": "3.5.0", + "Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/filemanager-3.5.0.zip", + "Require": { + "micro": ">=2.0.0-1" + } + }, + { + "Version": "3.5.1", + "Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/filemanager-3.5.1.zip", + "Require": { + "micro": ">=2.0.0-1" + } + } + ] + } +] diff --git a/config/micro/plug/filemanager/syntax.yaml b/config/micro/plug/filemanager/syntax.yaml new file mode 100644 index 0000000..da001cf --- /dev/null +++ b/config/micro/plug/filemanager/syntax.yaml @@ -0,0 +1,9 @@ +filetype: filemanager + +detect: + filename: "^filemanager$" + +rules: + # The "..", the separator line thing, and directories + # Optionally, add this below to highlight the ascii line: "^─*$" + - special: "^\\.\\.$|\\-\\s.*|\\+\\s.*" diff --git a/config/micro/settings.json b/config/micro/settings.json new file mode 100644 index 0000000..30dc487 --- /dev/null +++ b/config/micro/settings.json @@ -0,0 +1,5 @@ +{ + "colorscheme": "bubblegum", + "wordwrap": true, + "softwrap": true +} diff --git a/config/micro/syntax/LICENSE b/config/micro/syntax/LICENSE new file mode 100644 index 0000000..20e978c --- /dev/null +++ b/config/micro/syntax/LICENSE @@ -0,0 +1,22 @@ +Micro's syntax files are licensed under the MIT "Expat" License: + +Copyright (c) 2020: Zachary Yedidia, et al. + +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/config/micro/syntax/PowerShell.yaml b/config/micro/syntax/PowerShell.yaml new file mode 100644 index 0000000..a778199 --- /dev/null +++ b/config/micro/syntax/PowerShell.yaml @@ -0,0 +1,128 @@ +# PowerShell syntax highlighting file for micro - https://micro-editor.github.io/ +# PowerShell syntax taken from: https://github.com/PowerShell/EditorSyntax + +filetype: powershell + +detect: + filename: "\\.ps(1|m1|d1)$" + +rules: + # - comment.block: # Block Comment + # - comment.doc: # Doc Comment + # - comment.line: # Line Comment + # - comment.shebang: # Shebang Line + + # - constant: # Constant + # - constant.bool: # Constant (true, false) + # - constant.interpolation: + # - constant.number: # Constant (null) + # - constant.specialChar: + # - constant.string: # String + # - constant.string.char: + # - constant.string.url: # Uri + # - constant.unicode: + + # - identifier: # Also used for functions + # - identifier.class: # Also used for functions + # - identifier.macro: + # - identifier.var: + + # - preproc: # Preprocessor + # - preproc.DebugIdentifier: # Preprocessor + # - preproc.shebang: # The #! at the beginning of a file that tells the os what script interpreter to use + + # - special: # Special (global|local|private|script|using|workflow) + + # - statement: # Statements Keywords + # - statement.built_in: + # - statement.declaration: # Declaration Keywords + # - statement.meta: # Meta + # - statement.reserved: # Reserved Keywords + + # - symbol + # - symbol.brackets: # {}()[] and sometimes <> + # - symbol.operator: # Operators + # - symbol.tag: # For html tags, among other things + + # - type + # - type.collections: # Collections (array, hashtable) + # - type.ctypes: # CTypes (CBool, CChar, etc.) + # - type.keyword: # If you want a special highlight for keywords like 'private' + # - type.storage: # Storage Types (int, uint, string, etc.) + + # Class + - identifier.class: "class +[A-Za-z0-9]+ *((:) +[A-Za-z0-9.]+)?" + - identifier.class: "(function)(?:([[:space:]][A-Za-z0-9]+[[:space:]]*))" + + # Verbs taken from PwSh 6.0.2 + - identifier: "(Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy)[-][A-Za-z0-9]+" + - identifier: "(Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide)[-][A-Za-z0-9]+" + - identifier: "(Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push)[-][A-Za-z0-9]+" + - identifier: "(Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke)[-][A-Za-z0-9]+" + - identifier: "(Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace)[-][A-Za-z0-9]+" + - identifier: "(Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)[-][A-Za-z0-9]+" + - identifier.var: "\\$(?i)((Global|Local|Private|Script|Using|Workflow)[:])?[A-Za-z0-9]*" + + + # Expression and types + - type: "\\[\\b([A-Za-z]+|[A-Za-z]+[0-9]+)\\b\\]" + + # Keywords + - statement: "\\b(alias|as|begin|break|catch|continue|data|default|define|do|dynamicparam)\\b" + - statement: "\\b(else|elseif|end|exit|finally|for|foreach|foreach-object|from|if|in|inlinescript)\\b" + - statement: "\\b(parallel|param|process|return|switch|throw|trap|try|until|using|var|where|where-object|while)\\b" + + # Special Keywords + - special: "\\b(break|continue|exit)\\b" + + - symbol.brackets: "(\\{|\\})" + - symbol.brackets: "(\\(|\\))" + - symbol.brackets: "(\\[|\\])" + - symbol.operator: "[\\-+/*=<>?:!~%&|]" + - symbol.operator: "[[:space:]][-](ne|eq|gt|ge|lt|le|like|notlike|match|notmatch|contains|notcontains|in|notin|replace|is|isnot)[[:space:]]" + + # Constants + - constant.bool: "\\b\\$(true|false|null)\\b" + - constant.number: "\\b([0-9._]+|0x[A-Fa-f0-9_]+|0b[0-1_]+)[FL]?\\b" + + # Expression Mode String + - constant.string: + start: "\"" + end: "\"" + #skip: "\\\\." + rules: + - constant.specialChar: "\\\\([btnfr]|'|\\\"|\\\\)" + - constant.specialChar: "\\\\u[A-Fa-f0-9]{4}" + + # Argument Mode String + - constant.string: + start: "'" + end: "'" + #skip: "\\\\." + rules: + - constant.specialChar: "\\\\([btnfr]|'|\\\"|\\\\)" + - constant.specialChar: "\\\\u[A-Fa-f0-9]{4}" + + # Line Comment + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME|BUG):?" + + # Block Comment + - comment: + start: "<#" + end: "#>" + rules: + - todo: "(TODO|XXX|FIXME|BUG):?" + + # Embedded C# + - default: + start: "@\"" + end: "\"@" + rules: + - include: "csharp" + + # Todo + - todo: "(TODO|XXX|FIXME|BUG):?" diff --git a/config/micro/syntax/README.md b/config/micro/syntax/README.md new file mode 100644 index 0000000..a31acc0 --- /dev/null +++ b/config/micro/syntax/README.md @@ -0,0 +1,63 @@ +# Syntax Files + +Here are micro's syntax files. + +Each yaml file specifies how to detect the filetype based on file extension or header (first line of the line). +In addition, a signature can be provided to help resolving ambiguities when multiple matching filetypes are detected. +Then there are patterns and regions linked to highlight groups which tell micro how to highlight that filetype. + +You can read more about how to write syntax files (and colorschemes) in the [colors](../help/colors.md) documentation. + +# Legacy '.micro' filetype + +Micro used to use the `.micro` filetype for syntax files which is no longer supported. If you have `.micro` +syntax files that you would like to convert to the new filetype, you can use the [`syntax_converter.go`](./syntax_converter.go) program (also located in this directory): + +``` +$ go run syntax_converter.go c.micro > c.yaml +``` + +Most of the syntax files here have been converted using that tool. + +Note that the tool isn't perfect and though it is unlikely, you may run into some small issues that you will have to fix manually +(about 4 files from this directory had issues after being converted). + +# Micro syntax highlighting files + +These are the syntax highlighting files for micro. To install them, just +put all the syntax files in `~/.config/micro/syntax`. + +They are taken from Nano, specifically from [this repository](https://github.com/scopatz/nanorc). +Micro syntax files are almost identical to Nano's, except for some key differences: + +* Micro does not use `icolor`. Instead, for a case insensitive match, use the case insensitive flag (`i`) in the regular expression + * For example, `icolor green ".*"` would become `color green "(?i).*"` + +# Using with colorschemes + +Not all of these files have been converted to use micro's colorscheme feature. Most of them just hardcode the colors, which can be problematic depending on the colorscheme you use. + +Here is a list of the files that have been converted to properly use colorschemes: + +* vi +* go +* c +* d +* markdown +* html +* lua +* swift +* rust +* java +* javascript +* pascal +* python +* ruby +* sh +* git +* tex +* solidity + +# License + +See [LICENSE](LICENSE). diff --git a/config/micro/syntax/ada.yaml b/config/micro/syntax/ada.yaml new file mode 100644 index 0000000..12436d4 --- /dev/null +++ b/config/micro/syntax/ada.yaml @@ -0,0 +1,43 @@ +filetype: ada + +detect: + filename: "(\\.ads$|\\.adb$|\\.ada$)" + +rules: + # Operators + - symbol.operator: ([.:;,+*|=!?\\%]|<|>|/|-|&) + - symbol.brackets: "[(){}]|\\[|\\]" + # keyword.reserved + - statement.reserved: \b(abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case)\b + - statement.reserved: \b(constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function)\b + - statement.reserved: \b(generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding)\b + - statement.reserved: \b(package|pragma|private|procedure|protected|raise|range|record|rem|renames|return|requeue)\b + - statement.reserved: \b(reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until)\b + - statement.reserved: \b(use|when|while|with|xor)\b + + # Constant + - constant.bool: \b(TRUE|FALSE) + - constant.number: ([0-9]+) + + # Storage Types + - type.storage: \b(INTEGER|NATURAL|POSITIVE|FLOAT|CHARACTER|STRING)\b + - type.storage: \b(LONG_INTEGER|SHORT_INTEGER|LONG_FLOAT|SHORT_FLOAT)\b + + #Character + - constant.string.char: \'.\' + + # String + - constant.string: + start: \" + end: \" + skip: \\. + rules: + - constant.specialChar: (\\0|\\\\|\\t|\\n|\\r|\\"|\\') + - constant.interpolation: \\\([[:graph:]]*\) + - constant.unicode: \\u\{[[:xdigit:]]+} + + # Line Comment + - comment.line: "--.*" + + # Todo + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/apacheconf.yaml b/config/micro/syntax/apacheconf.yaml new file mode 100644 index 0000000..a6f8914 --- /dev/null +++ b/config/micro/syntax/apacheconf.yaml @@ -0,0 +1,59 @@ +filetype: apacheconf + +detect: + filename: "httpd\\.conf|mime\\.types|vhosts\\.d\\\\*|\\.htaccess" + +rules: + - identifier: "(AcceptMutex|AcceptPathInfo|AccessFileName|Action|AddAlt|AddAltByEncoding|AddAltByType|AddCharset|AddDefaultCharset|AddDescription|AddEncoding)" + - identifier: "(AddHandler|AddIcon|AddIconByEncoding|AddIconByType|AddInputFilter|AddLanguage|AddModuleInfo|AddOutputFilter|AddOutputFilterByType|AddType|Alias|AliasMatch)" + - identifier: "(Allow|AllowCONNECT|AllowEncodedSlashes|AllowOverride|Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID)" + - identifier: "(Anonymous_VerifyEmail|AssignUserID|AuthAuthoritative|AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile|AuthDigestAlgorithm)" + - identifier: "(AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)" + - identifier: "(AuthGroupFile|AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases)" + - identifier: "(AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl|AuthName|AuthType|AuthUserFile)" + - identifier: "(BrowserMatch|BrowserMatchNoCase|BS2000Account|BufferedLogs|CacheDefaultExpire|CacheDirLength|CacheDirLevels|CacheDisable|CacheEnable|CacheExpiryCheck)" + - identifier: "(CacheFile|CacheForceCompletion|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheIgnoreCacheControl|CacheIgnoreHeaders)" + - identifier: "(CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire|CacheMaxFileSize|CacheMinFileSize|CacheNegotiatedDocs|CacheRoot|CacheSize|CacheTimeMargin)" + - identifier: "(CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckSpelling|ChildPerUserID|ContentDigest|CookieDomain|CookieExpires|CookieLog|CookieName)" + - identifier: "(CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavLockDB|DavMinTimeout|DefaultIcon|DefaultLanguage|DefaultType)" + - identifier: "(DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize|Deny|Directory|DirectoryIndex|DirectoryMatch|DirectorySlash)" + - identifier: "(DocumentRoot|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|Example|ExpiresActive|ExpiresByType)" + - identifier: "(ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FileETag|Files|FilesMatch|ForceLanguagePriority|ForceType|ForensicLog|Group|Header)" + - identifier: "(HeaderName|HostnameLookups|IdentityCheck|IfDefine|IfModule|IfVersion|ImapBase|ImapDefault|ImapMenu|Include|IndexIgnore|IndexOptions|IndexOrderDefault)" + - identifier: "(ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer|KeepAlive|KeepAliveTimeout)" + - identifier: "(LanguagePriority|LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize)" + - identifier: "(LDAPTrustedCA|LDAPTrustedCAType|Limit|LimitExcept|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine)" + - identifier: "(LimitXMLRequestBody|Listen|ListenBackLog|LoadFile|LoadModule|Location|LocationMatch|LockFile|LogFormat|LogLevel|MaxClients|MaxKeepAliveRequests)" + - identifier: "(MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MCacheMaxObjectCount|MCacheMaxObjectSize)" + - identifier: "(MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads)" + - identifier: "(MMapFile|ModMimeUsePathInfo|MultiviewsMatch|NameVirtualHost|NoProxy|NumServers|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|PassEnv|PidFile)" + - identifier: "(ProtocolEcho|Proxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyIOBufferSize|ProxyMatch|ProxyMaxForwards|ProxyPass|ProxyPassReverse)" + - identifier: "(ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia|ReadmeName|Redirect|RedirectMatch)" + - identifier: "(RedirectPermanent|RedirectTemp|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader)" + - identifier: "(Require|RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule|RLimitCPU|RLimitMEM|RLimitNPROC)" + - identifier: "(Satisfy|ScoreBoardFile|Script|ScriptAlias|ScriptAliasMatch|ScriptInterpreterSource|ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock|SecureListen)" + - identifier: "(SendBufferSize|ServerAdmin|ServerAlias|ServerLimit|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetEnv|SetEnvIf|SetEnvIfNoCase|SetHandler)" + - identifier: "(SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSLCACertificateFile|SSLCACertificatePath)" + - identifier: "(SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions)" + - identifier: "(SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite)" + - identifier: "(SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire)" + - identifier: "(SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth|StartServers|StartThreads|SuexecUserGroup|ThreadLimit)" + - identifier: "(ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnsetEnv|UseCanonicalName|User|UserDir|VirtualDocumentRoot)" + - identifier: "(VirtualDocumentRootIP|VirtualHost|VirtualScriptAlias|VirtualScriptAliasIP|Win32DisableAcceptEx|XBitHack)" + - symbol.tag: "<[^>]+>" + - identifier: ")" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/arduino.yaml b/config/micro/syntax/arduino.yaml new file mode 100644 index 0000000..35a0480 --- /dev/null +++ b/config/micro/syntax/arduino.yaml @@ -0,0 +1,101 @@ +filetype: ino + +detect: + filename: "\\.ino$" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + + ## Sized (u)int types + - type: "\\b((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\\b" + + ## Constants + - constant: "(?i)\\b(HIGH|LOW|INPUT|OUTPUT)\\b" + + ## Serial Print + - constant: "(?i)\\b(DEC|BIN|HEX|OCT|BYTE)\\b" + + ## PI Constants + - constant: "(?i)\\b(PI|HALF_PI|TWO_PI)\\b" + + ## ShiftOut + - constant: "(?i)\\b(LSBFIRST|MSBFIRST)\\b" + + ## Attach Interrupt + - constant: "(?i)\\b(CHANGE|FALLING|RISING)\\b" + + ## Analog Reference + - constant: "(?i)\\b(DEFAULT|EXTERNAL|INTERNAL|INTERNAL1V1|INTERNAL2V56)\\b" + + ## === FUNCTIONS === ## + + ## Data Types + - type: "\\b(boolean|byte|char|float|int|long|word)\\b" + + ## Control Structions + - statement: "\\b(case|class|default|do|double|else|false|for|if|new|null|private|protected|public|short|signed|static|String|switch|this|throw|try|true|unsigned|void|while)\\b" + - statement: "\\b(goto|continue|break|return)\\b" + + ## Math + - identifier: "\\b(abs|acos|asin|atan|atan2|ceil|constrain|cos|degrees|exp|floor|log|map|max|min|radians|random|randomSeed|round|sin|sq|sqrt|tan)\\b" + + ## Bits & Bytes + - identifier: "\\b(bitRead|bitWrite|bitSet|bitClear|bit|highByte|lowByte)\\b" + + ## Analog I/O + - identifier: "\\b(analogReference|analogRead|analogWrite)\\b" + + ## External Interrupts + - identifier: "\\b(attachInterrupt|detachInterrupt)\\b" + + ## Time + - identifier: "\\b(delay|delayMicroseconds|millis|micros)\\b" + + ## Digital I/O + - identifier: "\\b(pinMode|digitalWrite|digitalRead)\\b" + + ## Interrupts + - identifier: "\\b(interrupts|noInterrupts)\\b" + + ## Advanced I/O + - identifier: "\\b(noTone|pulseIn|shiftIn|shiftOut|tone)\\b" + + ## Serial + - identifier: "\\b(Serial|Serial1|Serial2|Serial3|begin|end|peek|read|print|println|available|flush)\\b" + + ## Structure + - identifier: "\\b(setup|loop)\\b" + + ## + - statement: "^[[:space:]]*#[[:space:]]*(define|include(_next)?|(un|ifn?)def|endif|el(if|se)|if|warning|error|pragma)" + + ## GCC builtins + - constant: "(__attribute__[[:space:]]*\\(\\([^)]*\\)\\)|__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - preproc: "..+" + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/asciidoc.yaml b/config/micro/syntax/asciidoc.yaml new file mode 100644 index 0000000..ab4cd88 --- /dev/null +++ b/config/micro/syntax/asciidoc.yaml @@ -0,0 +1,51 @@ +filetype: asciidoc + +detect: + filename: "\\.(asc|asciidoc|adoc)$" + +rules: + # main header + - preproc: "^====+$" + # h1 + - statement: "^==[[:space:]].*$" + - statement: "^----+$" + # h2 + - symbol: "^===[[:space:]].*$" + - symbol: "^~~~~+$" + # h4 + - type: "^====[[:space:]].*$" + - type: "^\\^\\^\\^\\^+$" + # h5 + - constant: "^=====[[:space:]].*$" + - constant: "^\\+\\+\\+\\++$" + + # attributes + - type.keyword: ":.*:" + - identifier.macro: "\\{[a-z0-9]*\\}" + - identifier: "\\\\\\{[a-z0-9]*\\}" + - identifier: "\\+\\+\\+\\{[a-z0-9]*\\}\\+\\+\\+" + + # Paragraph Title + - statement: "^\\..*$" + + # source + - identifier: "^\\[(source,.+|NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\]" + + # Other markup + - constant.string: ".*[[:space:]]\\+$" + - constant.string: "_[^_]+_" + - constant.string: "\\*[^\\*]+\\*" + - constant.string: "\\+[^\\+]+\\+" + - constant.string: "`[^`]+`" + - constant.string: "\\^[^\\^]+\\^" + - constant.string: "~[^~]+~" + - constant.string: "'[^']+'" + + - constant: "`{1,2}[^']+'{1,2}" + + # bullets + - symbol: "^[[:space:]]*[\\*\\.-]{1,5}[[:space:]]" + + # anchors + - "bold default": "\\[\\[.*\\]\\]" + - "bold default": "<<.*>>" diff --git a/config/micro/syntax/asm.yaml b/config/micro/syntax/asm.yaml new file mode 100644 index 0000000..2c46325 --- /dev/null +++ b/config/micro/syntax/asm.yaml @@ -0,0 +1,123 @@ +filetype: asm + +detect: + filename: "\\.(S|s|asm)$" + +rules: + # This file is made mainly for NASM assembly + + ## Instructions + # x86 + - statement: "\\b(?i)(mov|aaa|aad|aam|aas|adc|add|and|call|cbw|clc|cld|cli|cmc|cmp|cmpsb|cmpsw|cwd|daa|das|dec|div|esc|hlt|idiv|imul|in|inc|int|into|iret|ja|jae|jb|jbe|jc|je|jg|jge|jl|jle|jna|jnae|jnb|jnbe|jnc|jne|jng|jnge|jnl|jnle|jno|jnp|jns|jnz|jo|jp|jpe|jpo|js|jz|jcxz|jmp|lahf|lds|lea|les|lock|lodsb|lodsw|loop|loope|loopne|loopnz|loopz|movsb|movsw|mul|neg|nop|or|pop|popf|push|pushf|rcl|rcr|rep|repe|repne|repnz|repz|ret|retn|retf|rol|ror|sahf|sal|sar|sbb|scasb|scasw|shl|shr|stc|std|sti|stosb|stosw|sub|test|wait|xchg|xlat|xor)(?-i)\\b" + - statement: "\\b(?i)(bound|enter|ins|leave|outs|popa|pusha)(?-i)\\b" + - statement: "\\b(?i)(arpl|clts|lar|lgdt|lidt|lldt|lmsw|loadall|lsl|ltr|sgdt|sidt|sldt|smsw|str|verr|verw)(?-i)\\b" + - statement: "\\b(?i)(bsf|bsr|bt|btc|btr|bts|cdq|cmpsd|cwde|insd|iret|iretd|iretf|jecxz|lfs|lgs|lss|lodsd|loopw|loopew|loopnew|loopnzw|loopzw|loopd|looped|loopned|loopnzd|loopzd|cr|tr|dr|movsd|movsx|movzx|outsd|popad|popfd|pushad|pushfd|scasd|seta|setae|setb|setbe|setc|sete|setg|setge|setl|setle|setna|setnae|setnb|setnbe|setnc|setne|setng|setnge|setnl|setnle|setno|setnp|setns|setnz|seto|setp|setpe|setpo|sets|setz|shdl|shrd|stosd)(?-i)\\b" + - statement: "\\b(?i)(bswap|cmpxcgh|invd|invlpg|wbinvd|xadd)(?-i)\\b" + - statement: "\\b(?i)(cpuid|cmpxchg8b|rdmsr|rdtsc|wrmsr|rsm)(?-i)\\b" + - statement: "\\b(?i)(rdpmc)(?-i)\\b" + - statement: "\\b(?i)(syscall|sysret)(?-i)\\b" + - statement: "\\b(?i)(cmova|cmovae|cmovb|cmovbe|cmovc|cmove|cmovg|cmovge|cmovl|cmovle|cmovna|cmovnae|cmovnb|cmovnbe|cmovnc|cmovne|cmovng|cmovnge|cmovnle|cmovno|cmovpn|cmovns|cmovnz|cmovo|cmovp|cmovpe|cmovpo|cmovs|cmovz|sysenter|sysexit|ud2)(?-i)\\b" + - statement: "\\b(?i)(maskmovq|movntps|movntq|prefetch0|prefetch1|prefetch2|prefetchnta|sfence)(?-i)\\b" + - statement: "\\b(?i)(clflush|lfence|maskmovdqu|mfence|movntdq|movnti|movntpd|pause)(?-i)\\b" + - statement: "\\b(?i)(monitor|mwait)(?-i)\\b" + - statement: "\\b(?i)(cdqe|cqo|cmpsq|cmpxchg16b|iretq|jrcxz|lodsq|movsdx|popfq|pushfq|rdtscp|scasq|stosq|swapgs)(?-i)\\b" + - statement: "\\b(?i)(clgi|invlpga|skinit|stgi|vmload|vmmcall|vmrun|vmsave)(?-i)\\b" + - statement: "\\b(?i)(vmptrdl|vmptrst|vmclear|vmread|vmwrite|vmcall|vmlaunch|vmresume|vmxoff|vmxon)(?-i)\\b" + - statement: "\\b(?i)(lzcnt|popcnt)(?-i)\\b" + - statement: "\\b(?i)(bextr|blcfill|blci|blcic|blcmask|blcs|blsfill|blsic|t1mskc|tzmsk)(?-i)\\b" + + # x87 + - statement: "\\b(?i)(f2xm1|fabs|fadd|faddp|fbld|fbstp|fchs|fclex|fcom|fcomp|fcompp|fdecstp|fdisi|fdiv|fvidp|fdivr|fdivrp|feni|ffree|fiadd|ficom|ficomp|fidiv|fidivr|fild|fimul|fincstp|finit|fist|fistp|fisub|fisubr|fld|fld1|fldcw|fldenv|fldenvw|fldl2e|fldl2t|fldlg2|fldln2|fldpi|fldz|fmul|fmulp|fnclex|fndisi|fneni|fninit|fnop|fnsave|fnsavenew|fnstcw|fnstenv|fnstenvw|fnstsw|fpatan|fprem|fptan|frndint|frstor|frstorw|fsave|fsavew|fscale|fsqrt|fst|fstcw|fstenv|fstenvw|fstp|fstpsw|fsub|fsubp|fsubr|fsubrp|ftst|fwait|fxam|fxch|fxtract|fyl2x|fyl2xp1)(?-i)\\b" + - statement: "\\b(?i)(fsetpm)(?-i)\\b" + - statement: "\\b(?i)(fcos|fldenvd|fsaved|fstenvd|fprem1|frstord|fsin|fsincos|fstenvd|fucom|fucomp|fucompp)(?-i)\\b" + - statement: "\\b(?i)(fcmovb|fcmovbe|fcmove|fcmove|fcmovnb|fcmovnbe|fcmovne|fcmovnu|fcmovu)(?-i)\\b" + - statement: "\\b(?i)(fcomi|fcomip|fucomi|fucomip)(?-i)\\b" + - statement: "\\b(?i)(fxrstor|fxsave)(?-i)\\b" + - statement: "\\b(?i)(fisttp)(?-i)\\b" + - statement: "\\b(?i)(ffreep)(?-i)\\b" + + # SIMD + - statement: "\\b(?i)(emms|movd|movq|packssdw|packsswb|packuswb|paddb|paddw|paddd|paddsb|paddsw|paddusb|paddusw|pand|pandn|por|pxor|pcmpeqb|pcmpeqw|pcmpeqd|pcmpgtb|pcmpgtw|pcmpgtd|pmaddwd|pmulhw|pmullw|psllw|pslld|psllq|psrad|psraw|psrlw|psrld|psrlq|psubb|psubw|psubd|psubsb|psubsw|psubusb|punpckhbw|punpckhwd|punpckhdq|punkcklbw|punpckldq|punpcklwd)(?-i)\\b" + - statement: "\\b(?i)(paveb|paddsiw|pmagw|pdistib|psubsiw|pmwzb|pmulhrw|pmvnzb|pmvlzb|pmvgezb|pmulhriw|pmachriw)(?-i)\\b" + - statement: "\\b(?i)(femms|pavgusb|pf2id|pfacc|pfadd|pfcmpeq|pfcmpge|pfcmpgt|pfmax|pfmin|pfmul|pfrcp|pfrcpit1|pfrcpit2|pfrsqit1|pfrsqrt|pfsub|pfsubr|pi2fd|pmulhrw|prefetch|prefetchw)(?-i)\\b" + - statement: "\\b(?i)(pf2iw|pfnacc|pfpnacc|pi2fw|pswapd)(?-i)\\b" + - statement: "\\b(?i)(pfrsqrtv|pfrcpv)(?-i)\\b" + - statement: "\\b(?i)(addps|addss|cmpps|cmpss|comiss|cvtpi2ps|cvtps2pi|cvtsi2ss|cvtss2si|cvttps2pi|cvttss2si|divps|divss|ldmxcsr|maxps|maxss|minps|minss|movaps|movhlps|movhps|movlhps|movlps|movmskps|movntps|movss|movups|mulps|mulss|rcpps|rcpss|rsqrtps|rsqrtss|shufps|sqrtps|sqrtss|stmxcsr|subps|subss|ucomiss|unpckhps|unpcklps)(?-i)\\b" + - statement: "\\b(?i)(andnps|andps|orps|pavgb|pavgw|pextrw|pinsrw|pmaxsw|pmaxub|pminsw|pminub|pmovmskb|pmulhuw|psadbw|pshufw|xorps)(?-i)\\b" + - statement: "\\b(?i)(movups|movss|movlps|movhlps|movlps|unpcklps|unpckhps|movhps|movlhps|prefetchnta|prefetch0|prefetch1|prefetch2|nop|movaps|cvtpi2ps|cvtsi2ss|cvtps2pi|cvttss2si|cvtps2pi|cvtss2si|ucomiss|comiss|sqrtps|sqrtss|rsqrtps|rsqrtss|rcpps|andps|orps|xorps|addps|addss|mulps|mulss|subps|subss|minps|minss|divps|divss|maxps|maxss|pshufw|ldmxcsr|stmxcsr|sfence|cmpps|cmpss|pinsrw|pextrw|shufps|pmovmskb|pminub|pmaxub|pavgb|pavgw|pmulhuw|movntq|pminsw|pmaxsw|psadbw|maskmovq)(?-i)\\b" + - statement: "\\b(?i)(addpd|addsd|addnpd|cmppd|cmpsd)(?-i)\\b" + - statement: "\\b(?i)(addpd|addsd|andnpd|andpd|cmppd|cmpsd|comisd|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtps2dq|cvtps2pd|cvtsd2si|cvtsd2ss|cvtsi2sd|cvtss2sd|cvttpd2dq|cvttpd2pi|cvttps2dq|cvttsd2si|divpd|divsd|maxpd|maxsd|minpd|minsd|movapd|movhpd|movlpd|movmskpd|movsd|movupd|mulpd|mulsd|orpd|shufpd|sqrtpd|sqrtsd|subpd|subsd|ucomisd|unpckhpd|unpcklpd|xorpd)(?-i)\\b" + - statement: "\\b(?i)(movdq2q|movdqa|movdqu|movq2dq|paddq|psubq|pmuludq|pshufhw|pshuflw|pshufd|pslldq|psrldq|punpckhqdq|punpcklqdq)(?-i)\\b" + - statement: "\\b(?i)(addsubpd|addsubps|haddpd|haddps|hsubpd|hsubps|movddup|movshdup|movsldu)(?-i)\\b" + - statement: "\\b(?i)(lddqu)(?-i)\\b" + - statement: "\\b(?i)(psignw|psignd|psignb|pshufb|pmulhrsw|pmaddubsw|phsubw|phsubsw|phsubd|phaddw|phaddsw|phaddd|palignr|pabsw|pabsd|pabsb)(?-i)\\b" + - statement: "\\b(?i)(dpps|dppd|blendps|blendpd|blendvps|blendvpd|roundps|roundss|roundpd|roundsd|insertps|extractps)(?-i)\\b" + - statement: "\\b(?i)(mpsadbw|phminposuw|pmulld|pmuldq|pblendvb|pblendw|pminsb|pmaxsb|pminuw|pmaxuw|pminud|pmaxud|pminsd|pmaxsd|pinsrb|pinsrd/pinsrq|pextrb|pextrw|pextrd/pextrq|pmovsxbw|pmovzxbw|pmovsxbd|pmovzxbd|pmovsxbq|pmovzxbq|pmovsxwd|pmovzxwd|pmovsxwq|pmovzxwq|pmovsxdq|pmovzxdq|ptest|pcmpeqq|packusdw|movntdqa)(?-i)\\b" + - statement: "\\b(?i)(extrq|insertq|movntsd|movntss)(?-i)\\b" + - statement: "\\b(?i)(crc32|pcmpestri|pcmpestrm|pcmpistri|pcmpistrm|pcmpgtq)(?-i)\\b" + - statement: "\\b(?i)(vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfmsubss|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubps|vfnmsubsd|vfnmsubss)(?-i)\\b" + + # Crypto + - statement: "\\b(?i)(aesenc|aesenclast|aesdec|aesdeclast|aeskeygenassist|aesimc)(?-i)\\b" + - statement: "\\b(?i)(sha1rnds4|sha1nexte|sha1msg1|sha1msg2|sha256rnds2|sha256msg1|sha256msg2)(?-i)\\b" + + # Undocumented + - statement: "\\b(?i)(aam|aad|salc|icebp|loadall|loadalld|ud1)(?-i)\\b" + + ## Registers + - identifier: "\\b(?i)(al|ah|bl|bh|cl|ch|dl|dh|bpl|sil|r8b|r9b|r10b|r11b|dil|spl|r12b|r13b|r14b|r15)(?-i)\\b" + - identifier: "\\b(?i)(cw|sw|tw|fp_ds|fp_opc|fp_ip|fp_dp|fp_cs|cs|ss|ds|es|fs|gs|gdtr|idtr|tr|ldtr|ax|bx|cx|dx|bp|si|r8w|r9w|r10w|r11w|di|sp|r12w|r13w|r14w|r15w|ip)(?-i)\\b" + - identifier: "\\b(?i)(fp_dp|fp_ip|eax|ebx|ecx|edx|ebp|esi|r8d|r9d|r10d|r11d|edi|esp|r12d|r13d|r14d|r15d|eip|eflags|mxcsr)(?-i)\\b" + - identifier: "\\b(?i)(mm0|mm1|mm2|mm3|mm4|mm5|mm6|mm7|rax|rbx|rcx|rdx|rbp|rsi|r8|r9|r10|r11|rdi|rsp|r12|r13|r14|r15|rip|rflags|cr0|cr1|cr2|cr3|cr4|cr5|cr6|cr7|cr8|cr9|cr10|cr11|cr12|cr13|cr14|cr15|msw|dr0|dr1|dr2|dr3|r4|dr5|dr6|dr7|dr8|dr9|dr10|dr11|dr12|dr13|dr14|dr15)(?-i)\\b" + - identifier: "\\b(?i)(st0|st1|st2|st3|st4|st5|st6|st7)(?-i)\\b" + - identifier: "\\b(?i)(xmm0|xmm1|xmm2|xmm3|xmm4|xmm5|xmm6|xmm7|xmm8|xmm9|xmm10|xmm11|xmm12|xmm13|xmm14|xmm15)(?-i)\\b" + - identifier: "\\b(?i)(ymm0|ymm1|ymm2|ymm3|ymm4|ymm5|ymm6|ymm7|ymm8|ymm9|ymm10|ymm11|ymm12|ymm13|ymm14|ymm15)(?-i)\\b" + - identifier: "\\b(?i)(zmm0|zmm1|zmm2|zmm3|zmm4|zmm5|zmm6|zmm7|zmm8|zmm9|zmm10|zmm11|zmm12|zmm13|zmm14|zmm15|zmm16|zmm17|zmm18|zmm19|zmm20|zmm21|zmm22|zmm23|zmm24|zmm25|zmm26|zmm27|zmm28|zmm29|zmm30|zmm31)(?-i)\\b" + + ## Constants + # Number - it works + - constant.number: "\\b(|h|A|0x)+[0-9]+(|h|A)+\\b" + - constant.number: "\\b0x[0-9 a-f A-F]+\\b" + + ## Preprocessor (NASM) + - preproc: "%+(\\+|\\?|\\?\\?|)[a-z A-Z 0-9]+" + - preproc: "%\\[[. a-z A-Z 0-9]*\\]" + + ## Other + - statement: "\\b(?i)(extern|global|section|segment|_start|\\.text|\\.data|\\.bss)(?-i)\\b" + - statement: "\\b(?i)(db|dw|dd|dq|dt|ddq|do)(?-i)\\b" + - identifier: "[a-z A-Z 0-9 _]+:" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: ";" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + ## C-like comments (supported by some assemblers) + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/ats.yaml b/config/micro/syntax/ats.yaml new file mode 100644 index 0000000..e24d0e5 --- /dev/null +++ b/config/micro/syntax/ats.yaml @@ -0,0 +1,99 @@ +filetype: ATS + +detect: + filename: "\\.(d|h|s)ats$" + +rules: + - default: \b[[:alnum:]]+[^0-9A-Za-z] + + # Operators + - symbol.operator: "[.:;+`|~<>?='\\&]|/|%|-|,|!|\\*|@|\\#" + - symbol.operator: \^ + + # Types, abstract types and some predefined sorts + - type: \b(addr|age?z|bool|char|cls|schar|uchar|double|ldouble|eff|exn|float|int(ptr)?|lincloptr|uint)\b + - type: \b(lint|ulint|llint|ullint|nat|ptr|real|ref|size_t|ssize_t|sint|usint|string|tkind|viewt|v?t0p|vt|void)\b + - type: \b(prop|t[@0]ype|type|viewt[@0]ype|viewtype|vt[@0]ype|vtype|view)\b + - type: \b(prop[+-]|t[@0]ype[+-]|type[+-]|viewt[@0]ype[+-]|viewtype[+-]|vt[@0]ype[+-]|vtype[+-]|view[+-]) + + # Statements + - statement: \b(abstype|abst|absprop|absviewt|absvt(ype)?|absview|and|andalso|as|(re)?assume|begin|(pr)?case|s?case)\b + - statement: \b(classdec|dataprop|data(v|view)?type|dataview|datasort|do|dynload|else|end|exception|extype|extva(r|l)|s?if)\b + - statement: \b(ifcase|import|for|in|infix(l|r)?|let|local|macrodef|macdef|not|of|op|or|orelse|overload|(pre|post|non)fix)\b + - statement: \b(propdef|rec|sortdef|stacst|stadef|staload|stavar|sta(tic)?|symelim|symintr|tkindef|then|try|viewdef|v?typedef)\b + - statement: \b(viewtypedef|(pr)?va(l|r)|when|where|while|with|withtype|withprop|withv(iew)?type|withview)\b + - statement: \b(abst[@0]ype|absviewt[@0]?ype|absvt[@0]ype|abstbox|abstflat|absvtbox|absvtflat|absimpl|absreimpl|abs)\b + - statement: \b(case[+-]|(pr)?va(l|r)[+-]|for\*|while\*) + + # Numbers + - constant.number: \b[0-9.]+([eE][+-]?[0-9]+)?[fFlL]?\b + - constant.number: \b0[xX][0-9A-Fa-f]*(\.[0-9A-Fa-f]*)?[pP][+-]?[0-9]+[fFlL]?\b + - constant.number: \b([0-9]+|0[xX][0-9A-Fa-f]+)[lLuU]*\b + + # Function-related keywords, special functions and namespaces. Not really identifiers + - identifier: \b(fix|(pr)?fu?n|fnx|castfn|praxi|extern|lam|llam|(pr)?implement|(pr)?implmnt)\b + - identifier: \b(fix@|fold@|free@|lam@|llam@|addr@|view@|ref@|fn\*) + - identifier: \$\w*\b + + # Other keywords, function effects... + - special: (\$(arrpsz|arrptrsize|break|continue|d2ctype|delay|effmask_(ntm|exn|ref|wrt|all)))\b + - special: (\$(effmask|extern|extype_struct|extype|extkind|extval|extfcall|extmcall|ldelay|literal))\b + - special: (\$(li?st_vt|li?st_t|li?st|myfilename|myfunction|mylocation|raise|rec(ord)?_vt))\b + - special: (\$(rec(ord)?_t|rec(ord)?|showtype|solver_assert|solver_verify|tempenver))\b + - special: (\$(tup(le)?_vt|tup(le)?_t|tup(le)?|tyrep|vararg|vcopyenv_vt|vcopyenv_v))\b + - special: \!(wrt|exnref|exnwrt|exn|refwrt|ref|all|ntm|laz)\b + - special: \b(fun(0|1)|(lin)?cloptr(0|1)?|cloref(0|1)?|clo(0|1)?|lin|prf)\b + - special: \b(f?print(ln)?!|prerr(ln)?!|tupz!) + + # Some C macros and other ATS macros + - preproc: ^[[:space:]]*#[[:space:]]*(define|pragma|include|(un|ifn?)def|endif|el(if|se)|if|warning|error|assert)\b + - preproc: ^[[:space:]]*#[[:space:]]*(codegen2|codegen3|elifdef|elifndef|prerr|print|require|then|staload|dynload)\b + + # Boolean values + - constant.bool: \b(true|false|null)\b + + + # The "%{ ... %}" block inserts foreign code into ATS at compile-time + # Code inside of it is generally C or JavaScript + - default: + start: "%{[#^$]?" + end: "%}" + skip: "\\." + limit-group: symbol.operator + rules: + - include: "c" + - include: "javascript" + + + # Strings and chars + - constant.string: \"[^"]*\" + - constant.string: \'[^']*\' + + + # Comments + # "////" comments everything until it reaches EOF + - comment.block: + start: //// + end: $a + rules: + - todo: (TODO|XXX|FIXME) + + - comment.line: + start: // + end: $ + rules: + - todo: (TODO|XXX|FIXME) + + # ML-like block comment + - comment.block: + start: \(\* + end: \*\) + rules: + - todo: (TODO|XXX|FIXME) + + # C-like block comment + - comment.block: + start: /\* + end: \*\/ + rules: + - todo: (TODO|XXX|FIXME) diff --git a/config/micro/syntax/awk.yaml b/config/micro/syntax/awk.yaml new file mode 100644 index 0000000..ff3f698 --- /dev/null +++ b/config/micro/syntax/awk.yaml @@ -0,0 +1,44 @@ +filetype: awk + +detect: + filename: "\\.awk$" + header: "^#!.*bin/(env +)?awk( |$)" + +rules: + - preproc: "\\$[A-Za-z0-9_!@#$*?\\-]+" + - preproc: "\\b(ARGC|ARGIND|ARGV|BINMODE|CONVFMT|ENVIRON|ERRNO|FIELDWIDTHS)\\b" + - preproc: "\\b(FILENAME|FNR|FS|IGNORECASE|LINT|NF|NR|OFMT|OFS|ORS)\\b" + - preproc: "\\b(PROCINFO|RS|RT|RSTART|RLENGTH|SUBSEP|TEXTDOMAIN)\\b" + - identifier.class: "\\b(function|extension|BEGIN|END)\\b" + - symbol.operator: "[\\-+*/%^|!=&<>?;:]|\\\\|\\[|\\]" + - statement: "\\b(for|if|while|do|else|in|delete|exit)\\b" + - special: "\\b(break|continue|return)\\b" + - statement: "\\b(close|getline|next|nextfile|print|printf|system|fflush)\\b" + - statement: "\\b(atan2|cos|exp|int|log|rand|sin|sqrt|srand)\\b" + - statement: "\\b(asort|asorti|gensub|gsub|index|length|match)\\b" + - statement: "\\b(split|sprintf|strtonum|sub|substr|tolower|toupper)\\b" + - statement: "\\b(mktime|strftime|systime)\\b" + - statement: "\\b(and|compl|lshift|or|rshift|xor)\\b" + - statement: "\\b(bindtextdomain|dcgettext|dcngettext)\\b" + - special: "/.*[^\\\\]/" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/b.yaml b/config/micro/syntax/b.yaml new file mode 100644 index 0000000..f6bd219 --- /dev/null +++ b/config/micro/syntax/b.yaml @@ -0,0 +1,87 @@ +filetype: B + +detect: + filename: '\.b$' + # core control words + storage classes (Thompson B-ish) + signature: '\b(if|else|while|switch|case|default|break|return|goto|extrn|auto)\b' + +rules: + # ------------------------- + # Comments (B: /* ... */) + # ------------------------- + - comment: + start: '/\*' + end: '\*/' + rules: [] + + # Optional: // line comments (convenient, not ā€œoriginalā€ B) + - comment: + start: '//' + end: '$' + rules: [] + + # ------------------------- + # Strings + escapes + # ------------------------- + - constant.string: + start: '"' + end: '"' + skip: '\\\\.' + rules: + # common escapes: \n \t \e \r \0 \" \\ \( \) \* + - constant.specialChar: '\\\\([0netr"\\\\\\*\\(\\)])' + # printf-ish: %s %c %d %o and %% + - constant.specialChar: '%(%|[scdo])' + + - constant.string: + start: "'" + end: "'" + skip: '\\\\.' + rules: + - constant.specialChar: '\\\\([0netr"\\\\\\*\\(\\)])' + - constant.specialChar: '%(%|[scdo])' + + # ------------------------- + # Numbers + # (leading 0 commonly used for octal constants) + # ------------------------- + - constant.number: '\b0[0-7]+\b' + - constant.number: '\b[0-9]+\b' + + # ------------------------- + # Keywords / storage (keep tight + old-school) + # ------------------------- + - statement: '\b(if|else|while|switch|case|default|break|return|goto)\b' + - type: '\b(extrn|auto)\b' + + # ------------------------- + # Common B library calls (/etc/libb.a era list) + # ------------------------- + - constant.builtin: '\b(char|getchr|putchr|exit|printf|seek|setuid|stat|time|unlink|wait|lchar|chdir|chmod|chown|close|creat|execl|execv|fork|fstat|getuid|intr|link|makdir|open|read|write|ctime)\b' + + # ------------------------- + # Labels and function-ish identifiers + # ------------------------- + # label (often at bol) + - identifier: '^\s*[_A-Za-z][_A-Za-z0-9]*\s*:' + # function call/def name before '(' + - identifier: '\b[_A-Za-z][_A-Za-z0-9]*\s*\(' + + # ------------------------- + # Operators (order matters: longer first) + # Thompson-ish assignment operators in B are =+, =-, =*, =/, =%, =<<, =>>, =& , =| + # ------------------------- + - symbol.operator: '(=<<|=>>|=\+|=-|=\*|=/|=%|=&|=\|)' + - symbol.operator: '(==|!=|<=|>=|<<|>>)' + - symbol.operator: '(\+\+|--|\*\*)' + - symbol.operator: '[-+*/%&|^~!=<>?:=]' + + # ------------------------- + # Brackets + # ------------------------- + - symbol.brackets: '[(){}\[\]]' + + # ------------------------- + # Identifiers / variables (last so keywords win) + # ------------------------- + - identifier: '\b[_A-Za-z][_A-Za-z0-9]*\b' diff --git a/config/micro/syntax/bat.yaml b/config/micro/syntax/bat.yaml new file mode 100644 index 0000000..a719a6d --- /dev/null +++ b/config/micro/syntax/bat.yaml @@ -0,0 +1,57 @@ +filetype: batch + +detect: + filename: "(\\.bat$|\\.cmd$)" + +rules: + # Numbers + - constant.number: "\\b[0-9]+\\b" + # Brackets and symbols + - special: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|!|=|&|\\|)" + # Conditionals and control flow + # note (?i) means case insensitive match + - type: "\\b(?i)(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|then|until|while)\\b" + - type: "\\b(?i)(equ|neq|lss|leq|gtr|geq|on|off)\\b" + - type: "\\b(?i)(goto|for|in|do|call|exit|not|exist|errorlevel|defined)\\b" + - type: "\\b(?i)(prn|nul|lpt3|lpt2|lpt1|con|com4|com3|com2|com1|aux)\\b" + # keywords + - statement: "\\b(?i)(adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|break|brea)\\b" + - statement: "\\b(?i)(cacls|cd|certreq|certutil|chcp|change|choice|cipher|chdir|chkdsk|chkntfs|chglogon|chgport|chgusr|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color)\\b" + - statement: "\\b(?i)(comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm)\\b" + - statement: "\\b(?i)(echo|edit|endlocal|erase|esentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract)\\b" + - statement: "\\b(?i)(fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fs|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl)\\b" + - statement: "\\b(?i)(hashgen|hep|help|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|keyb|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile)\\b" + - statement: "\\b(?i)(makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group)\\b" + - statement: "\\b(?i)(net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb)\\b" + - statement: "\\b(?i)(nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd)\\b" + - statement: "\\b(?i)(powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess)\\b" + - statement: "\\b(?i)(query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset|restore)\\b" + - statement: "\\b(?i)(rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|scp|sc|setlocal|session|schtasks|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|set|setspn)\\b" + - statement: "\\b(?i)(setx|sfc|shadow|shift|showmount|shutdown|sort|ssh|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time)\\b" + - statement: "\\b(?i)(timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verify)\\b" + - statement: "\\b(?i)(verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|mic|wscript|xcopy)\\b" + # / Flags + - constant: "(/\\w+)" + # Variables + - special: "(%%\\w+)" + - special: "(%\\w+%)" + # Conditional flags + - type: "--[a-z-]+" + - type: "\\ -[a-z]+" + + - identifier: "\\$\\{?[0-9A-Z_!@#$*?-]+\\}?" + - identifier: "\\$\\{?[0-9A-Z_!@#$*?-]+\\}?" + # "" String + - constant.string: + start: \" + end: \" + skip: \. + rules: + - constant.specialChar: (\\0|\\\\|\\t|\\n|\\r|\\"|\\') + - constant.unicode: \\u\{[[:xdigit:]]+} + # '' string + - constant.string: "(\\'.+\\')" + # rem as comment + - comment.rem: "(?i)(rem\\s.*)" + # :: as comment + - comment.rem: "(?i)(\\:\\:\\s.*)" diff --git a/config/micro/syntax/c.yaml b/config/micro/syntax/c.yaml new file mode 100644 index 0000000..c6a4674 --- /dev/null +++ b/config/micro/syntax/c.yaml @@ -0,0 +1,60 @@ +filetype: c + +detect: + filename: "(\\.(c|C)$|\\.(h|H)$|\\.ii?$|\\.(def)$)" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + - type: "\\b(_Atomic|_BitInt|float|double|_Decimal32|_Decimal64|_Decimal128|_Complex|complex|_Imaginary|imaginary|_Bool|bool|char|int|short|long|enum|void|struct|union|typedef|typeof|typeof_unqual|(un)?signed|inline|_Noreturn)\\b" + - type: "\\b((s?size)|((u_?)?int(8|16|32|64|ptr))|char(8|16|32)|wchar)_t\\b" + # GCC float/decimal/fixed types + - type: "\\b(_Float16|__fp16|_Float32|_Float32x|_Float64|_Float64x|__float80|_Float128|_Float128x|__float128|__ibm128|__int128|_Fract|_Sat|_Accum)\\b" + - type: "\\b[a-z_][0-9a-z_]+(_t|_T)\\b" + - statement: "\\b(auto|volatile|register|restrict|_Alignas|alignas|_Alignof|alignof|static|const|constexpr|extern|_Thread_local|thread_local)\\b" + - statement: "\\b(for|if|while|do|else|case|default|switch|_Generic|_Static_assert|static_assert)\\b" + - statement: "\\b(goto|continue|break|return)\\b" + - statement: "\\b(asm|fortran)\\b" + - preproc: "^[[:space:]]*#[[:space:]]*(define|embed|pragma|include|(un|ifn?)def|endif|el(if|ifdef|ifndef|se)|if|line|warning|error|__has_include|__has_embed|__has_c_attribute)" + - preproc: "^[[:space:]]*_Pragma\\b" + # GCC builtins + - statement: "__attribute__[[:space:]]*\\(\\([^)]*\\)\\)" + - statement: "__(aligned|asm|builtin|extension|hidden|inline|packed|restrict|section|typeof|weak)__" + # Operator Color + - symbol.operator: "[-+*/%=<>.:;,~&|^!?]|\\b(offsetof|sizeof)\\b" + - symbol.brackets: "[(){}]|\\[|\\]" + # Integer Constants + - constant.number: "(\\b([1-9][0-9]*|0[0-7]*|0[Xx][0-9A-Fa-f]+|0[Bb][01]+)([Uu][Ll]?[Ll]?|[Ll][Ll]?[Uu]?)?\\b)" + # Decimal Floating Constants + - constant.number: "(\\b(([0-9]*[.][0-9]+|[0-9]+[.][0-9]*)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)[FfLl]?\\b)" + # Hexadecimal Floating Constants + - constant.number: "(\\b0[Xx]([0-9A-Za-z]*[.][0-9A-Za-z]+|[0-9A-Za-z]+[.][0-9A-Za-z]*)[Pp][+-]?[0-9]+[FfLl]?\\b)" + - constant.bool: "(\\b(true|false|NULL|nullptr|TRUE|FALSE)\\b)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + # TODO: Revert back to - error: "..+" once #3127 is merged + - error: "[[:graph:]]{2,}'" + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/caddyfile.yaml b/config/micro/syntax/caddyfile.yaml new file mode 100644 index 0000000..cb21821 --- /dev/null +++ b/config/micro/syntax/caddyfile.yaml @@ -0,0 +1,23 @@ +filetype: caddyfile + +detect: + filename: "Caddyfile" + +rules: + - identifier: "^\\s*\\S+(\\s|$)" + - type: "^([\\w.:/-]+,? ?)+[,{]$" + - constant.specialChar: "\\s{$" + - constant.specialChar: "^\\s*}$" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - preproc: "\\{(\\w+|\\$\\w+|%\\w+%)\\}" + - comment: + start: "#" + end: "$" + rules: [] + diff --git a/config/micro/syntax/cake.yaml b/config/micro/syntax/cake.yaml new file mode 100644 index 0000000..2a919e1 --- /dev/null +++ b/config/micro/syntax/cake.yaml @@ -0,0 +1,7 @@ +filetype: cake +detect: + filename: "\\.cake$" + +rules: + - include: "csharp" + - preproc: "^[[:space:]]*#(addin|break|l(oad)?|module|r(eference)?|tool)" diff --git a/config/micro/syntax/clojure.yaml b/config/micro/syntax/clojure.yaml new file mode 100644 index 0000000..9871b84 --- /dev/null +++ b/config/micro/syntax/clojure.yaml @@ -0,0 +1,38 @@ +filetype: clojure + +detect: + filename: "\\.(clj[sc]?|edn)$" + +rules: + + # Constants + - constant.bool: "\\b(true|false)\\b" + - constant.macro: "\\b(nil)\\b" + # Valid numbers + - constant.number: "[\\-]?[0-9]+?\\b" + - constant.number: "0x[0-9][A-Fa-f]+?\\b" + - constant.number: "[\\-]?(3[0-6]|2[0-9]|1[0-9]|[2-9])r[0-9A-Z]+?\\b" + # Invalid numbers + - error: "[\\-]?([4-9][0-9]|3[7-9]|1|0)r[0-9A-Z]+?\\b" + + # Symbols + - symbol.operator: "[=>+\\-*/'?]" + + # Types/casting + - type: "\\b(byte|short|(big)?int(eger)?|long|float|num|bigdec|rationalize)\\b" + + # String highlighting + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "(\\\\u[0-9A-fa-f]{4,4}|\\\\newline|\\\\space|\\\\tab|\\\\formfeed|\\\\backspace|\\\\return|\\\\.)" + + # Comments + - comment: + start: ";" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/cmake.yaml b/config/micro/syntax/cmake.yaml new file mode 100644 index 0000000..d23e613 --- /dev/null +++ b/config/micro/syntax/cmake.yaml @@ -0,0 +1,42 @@ +filetype: cmake + +detect: + filename: "(CMakeLists\\.txt|\\.cmake)$" + +rules: + - identifier.var: "^[[:space:]]*[A-Z0-9_]+" + - preproc: "^[[:space:]]*(include|include_directories|include_external_msproject)\\b" + + - statement: "^[[:space:]]*\\b((else|end)?if|else|(end)?while|(end)?foreach|break)\\b" + - statement: "\\b(COPY|NOT|COMMAND|PROPERTY|POLICY|TARGET|EXISTS|IS_(DIRECTORY|ABSOLUTE)|DEFINED)\\b[[:space:]]" + - statement: "[[:space:]]\\b(OR|AND|IS_NEWER_THAN|MATCHES|(STR|VERSION_)?(LESS|GREATER|EQUAL))\\b[[:space:]]" + + - special: "^[[:space:]]*\\b((end)?(function|macro)|return)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - preproc: + start: "\\$(\\{|ENV\\{)" + end: "\\}" + rules: [] + + - identifier.macro: "\\b(APPLE|UNIX|WIN32|CYGWIN|BORLAND|MINGW|MSVC(_IDE|60|71|80|90)?)\\b" + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/coffeescript.yaml b/config/micro/syntax/coffeescript.yaml new file mode 100644 index 0000000..677ae9c --- /dev/null +++ b/config/micro/syntax/coffeescript.yaml @@ -0,0 +1,56 @@ +filetype: coffeescript + +detect: + filename: "\\.coffee$" + +rules: + - symbol.operator: "([-+/*=<>!~%?:&|]|[.]{3})|\\b(and|or|is|isnt|not)\\b" + - identifier.class: "([A-Za-z_][A-Za-z0-9_]*:[[:space:]]*(->|\\()|->)" + - symbol.brackets: "[()]" + + - statement: "\\b(await|when|catch|continue|debugger|default|by|until)\\b" + - statement: "\\b(delete|do|else|export|finally|for|class|extends|while|then)\\b" + - statement: "\\b(get|if|import|from|in|instanceof|new|reject|resolve|return)\\b" + - statement: "\\b(set|super|switch|this|throw|try|typeof|with|yield|unless)\\b" + + - constant.bool: "\\b(true|false|yes|no|on|off)\\b" + - constant.bool.false: "\\b(false|no|off)\\b" + - constant.bool.true: "\\b(true|yes|on)\\b" + + - constant.number: "\\b[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\\b" + - constant.number: "\\b[-+]?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" + - constant.number: "\\b[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" + - identifier: "@[A-Za-z0-9_]*" + + - error: "\\b(enum|implements|interface|package|private|protected|public)" + - constant: "\\b(globalThis|Infinity|null|undefined|NaN)\\b" + - constant: "\\b(null|undefined|NaN)\\b" + - constant: "\\b(true|false|yes|no|on|off)\\b" + - type: "\\b(Array|Boolean|Date|Enumerator|Error|Function|Generator|Map|Math)\\b" + - type: "\\b(Number|Object|Promise|Proxy|Reflect|RegExp|Set|String|Symbol|WeakMap|WeakSet)\\b" + - type: "\\b(BigInt64Array|BigUint64Array|Float32Array|Float64Array|Int16Array)\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "###" + end: "###" + rules: [] + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/colortest.yaml b/config/micro/syntax/colortest.yaml new file mode 100644 index 0000000..c08dc47 --- /dev/null +++ b/config/micro/syntax/colortest.yaml @@ -0,0 +1,19 @@ +filetype: colortest + +detect: + filename: "ColorTest$" + +rules: + - black: "\\bPLAIN\\b" + - red: "\\bred\\b" + - green: "\\bgreen\\b" + - yellow: "\\byellow\\b" + - blue: "\\bblue\\b" + - magenta: "\\bmagenta\\b" + - cyan: "\\bcyan\\b" + - brightred: "\\bbrightred\\b" + - brightgreen: "\\bbrightgreen\\b" + - brightyellow: "\\bbrightyellow\\b" + - brightblue: "\\bbrightblue\\b" + - brightmagenta: "\\bbrightmagenta\\b" + - brightcyan: "\\bbrightcyan\\b" diff --git a/config/micro/syntax/conky.yaml b/config/micro/syntax/conky.yaml new file mode 100644 index 0000000..199efaf --- /dev/null +++ b/config/micro/syntax/conky.yaml @@ -0,0 +1,17 @@ +filetype: conky + +detect: + filename: "(\\.*conkyrc.*$|conky.conf)" + +rules: + - type: "\\b(alignment|append_file|background|border_inner_margin|border_outer_margin|border_width|color0|color1|color2|color3|color4|color5|color6|color7|color8|color9|colorN|cpu_avg_samples|default_bar_height|default_bar_width|default_color|default_gauge_height|default_gauge_width|default_graph_height|default_graph_width|default_outline_color|default_shade_color|diskio_avg_samples|display|double_buffer|draw_borders|draw_graph_borders|draw_outline|draw_shades|extra_newline|font|format_human_readable|gap_x|gap_y|http_refresh|if_up_strictness|imap|imlib_cache_flush_interval|imlib_cache_size|lua_draw_hook_post|lua_draw_hook_pre|lua_load|lua_shutdown_hook|lua_startup_hook|mail_spool|max_port_monitor_connections|max_text_width|max_user_text|maximum_width|minimum_height|minimum_width|mpd_host|mpd_password|mpd_port|music_player_interval|mysql_host|mysql_port|mysql_user|mysql_password|mysql_db|net_avg_samples|no_buffers|nvidia_display|out_to_console|out_to_http|out_to_ncurses|out_to_stderr|out_to_x|override_utf8_locale|overwrite_file|own_window|own_window_class|own_window_colour|own_window_hints|own_window_title|own_window_transparent|own_window_type|pad_percents|pop3|sensor_device|short_units|show_graph_range|show_graph_scale|stippled_borders|temperature_unit|template|template0|template1|template2|template3|template4|template5|template6|template7|template8|template9|text|text_buffer_size|times_in_seconds|top_cpu_separate|top_name_width|total_run_times|update_interval|update_interval_on_battery|uppercase|use_spacer|use_xft|xftalpha|xftfont)\\b" + + # Configuration item constants + - statement: "\\b(above|below|bottom_left|bottom_right|bottom_middle|desktop|dock|no|none|normal|override|skip_pager|skip_taskbar|sticky|top_left|top_right|top_middle|middle_left|middle_right|middle_middle|undecorated|yes)\\b" + + # Variables + - preproc: "\\b(acpiacadapter|acpifan|acpitemp|addr|addrs|alignc|alignr|apcupsd|apcupsd_cable|apcupsd_charge|apcupsd_lastxfer|apcupsd_linev|apcupsd_load|apcupsd_loadbar|apcupsd_loadgauge|apcupsd_loadgraph|apcupsd_model|apcupsd_name|apcupsd_status|apcupsd_temp|apcupsd_timeleft|apcupsd_upsmode|apm_adapter|apm_battery_life|apm_battery_time|audacious_bar|audacious_bitrate|audacious_channels|audacious_filename|audacious_frequency|audacious_length|audacious_length_seconds|audacious_main_volume|audacious_playlist_length|audacious_playlist_position|audacious_position|audacious_position_seconds|audacious_status|audacious_title|battery|battery_bar|battery_percent|battery_short|battery_time|blink|bmpx_album|bmpx_artist|bmpx_bitrate|bmpx_title|bmpx_track|bmpx_uri|buffers|cached|cmdline_to_pid|color|color0|color1|color2|color3|color4|color5|color6|color7|color8|color9|combine|conky_build_arch|conky_build_date|conky_version|cpu|cpubar|cpugauge|cpugraph|curl|desktop|desktop_name|desktop_number|disk_protect|diskio|diskio_read|diskio_write|diskiograph|diskiograph_read|diskiograph_write|distribution|downspeed|downspeedf|downspeedgraph|draft_mails|else|endif|entropy_avail|entropy_bar|entropy_perc|entropy_poolsize|eval|eve|exec|execbar|execgauge|execgraph|execi|execibar|execigauge|execigraph|execp|execpi|flagged_mails|font|format_time|forwarded_mails|freq|freq_g|fs_bar|fs_bar_free|fs_free|fs_free_perc|fs_size|fs_type|fs_used|fs_used_perc|goto|gw_iface|gw_ip|hddtemp|head|hr|hwmon|i2c|i8k_ac_status|i8k_bios|i8k_buttons_status|i8k_cpu_temp|i8k_left_fan_rpm|i8k_left_fan_status|i8k_right_fan_rpm|i8k_right_fan_status|i8k_serial|i8k_version|ibm_brightness|ibm_fan|ibm_temps|ibm_volume|ical|iconv_start|iconv_stop|if_empty|if_existing|if_gw|if_match|if_mixer_mute|if_mounted|if_mpd_playing|if_running|if_smapi_bat_installed|if_up|if_updatenr|if_xmms2_connected|image|imap_messages|imap_unseen|ioscheduler|irc|kernel|laptop_mode|lines|loadavg|loadgraph|lua|lua_bar|lua_gauge|lua_graph|lua_parse|machine|mails|mboxscan|mem|memwithbuffers|membar|memwithbuffersbar|memeasyfree|memfree|memgauge|memgraph|memmax|memperc|mixer|mixerbar|mixerl|mixerlbar|mixerr|mixerrbar|moc_album|moc_artist|moc_bitrate|moc_curtime|moc_file|moc_rate|moc_song|moc_state|moc_timeleft|moc_title|moc_totaltime|monitor|monitor_number|mpd_album|mpd_artist|mpd_bar|mpd_bitrate|mpd_elapsed|mpd_file|mpd_length|mpd_name|mpd_percent|mpd_random|mpd_repeat|mpd_smart|mpd_status|mpd_title|mpd_track|mpd_vol|mysql|nameserver|new_mails|nodename|nodename_short|no_update|nvidia|obsd_product|obsd_sensors_fan|obsd_sensors_temp|obsd_sensors_volt|obsd_vendor|offset|outlinecolor|pb_battery|pid_chroot|pid_cmdline|pid_cwd|pid_environ|pid_environ_list|pid_exe|pid_nice|pid_openfiles|pid_parent|pid_priority|pid_state|pid_state_short|pid_stderr|pid_stdin|pid_stdout|pid_threads|pid_thread_list|pid_time_kernelmode|pid_time_usermode|pid_time|pid_uid|pid_euid|pid_suid|pid_fsuid|pid_gid|pid_egid|pid_sgid|pid_fsgid|pid_read|pid_vmpeak|pid_vmsize|pid_vmlck|pid_vmhwm|pid_vmrss|pid_vmdata|pid_vmstk|pid_vmexe|pid_vmlib|pid_vmpte|pid_write|platform|pop3_unseen|pop3_used|processes|read_tcp|read_udp|replied_mails|rss|running_processes|running_threads|scroll|seen_mails|shadecolor|smapi|smapi_bat_bar|smapi_bat_perc|smapi_bat_power|smapi_bat_temp|sony_fanspeed|stippled_hr|stock|swap|swapbar|swapfree|swapmax|swapperc|sysname|tab|tail|tcp_ping|tcp_portmon|template0|template1|template2|template3|template4|template5|template6|template7|template8|template9|texeci|texecpi|threads|time|to_bytes|top|top_io|top_mem|top_time|totaldown|totalup|trashed_mails|tztime|gid_name|uid_name|unflagged_mails|unforwarded_mails|unreplied_mails|unseen_mails|updates|upspeed|upspeedf|upspeedgraph|uptime|uptime_short|user_names|user_number|user_terms|user_times|user_time|utime|voffset|voltage_mv|voltage_v|weather|wireless_ap|wireless_bitrate|wireless_essid|wireless_link_bar|wireless_link_qual|wireless_link_qual_max|wireless_link_qual_perc|wireless_mode|words|xmms2_album|xmms2_artist|xmms2_bar|xmms2_bitrate|xmms2_comment|xmms2_date|xmms2_duration|xmms2_elapsed|xmms2_genre|xmms2_id|xmms2_percent|xmms2_playlist|xmms2_size|xmms2_smart|xmms2_status|xmms2_timesplayed|xmms2_title|xmms2_tracknr|xmms2_url)\\b" + + - identifier.var: "\\$\\{?[0-9A-Z_!@#$*?-]+\\}?" + - symbol.operator: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|!|=|&|\\|)" + - constant.macro: "^TEXT$" diff --git a/config/micro/syntax/cpp.yaml b/config/micro/syntax/cpp.yaml new file mode 100644 index 0000000..edd09c6 --- /dev/null +++ b/config/micro/syntax/cpp.yaml @@ -0,0 +1,91 @@ +filetype: c++ + +detect: + filename: "(\\.c(c|pp|xx)$|\\.h(h|pp|xx)?$|\\.ii?$|\\.(def)$)" + signature: "\\b(namespace|class|public|protected|private|template|constexpr|noexcept|nullptr|throw)\\b" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]*\\b" + - type: "\\b(auto|float|double|bool|char|int|short|long|enum|void|struct|union|typedef|(un)?signed|inline)\\b" + - type: "\\b(((s?size)|((u_?)?int(8|16|32|64|ptr))|char(8|16|32))_t|wchar_t)\\b" + - type: "\\b[a-z_][0-9a-z_]+(_t|_T)\\b" + - type: "\\b(final|override)\\b" + - statement: "\\b(volatile|const(expr|eval|init)?|mutable|register|thread_local|static|extern|decltype|explicit|virtual)\\b" + - statement: "\\b(class|namespace|template|typename|this|friend|using|public|protected|private|noexcept)\\b" + - statement: "\\b(concept|requires)\\b" + - statement: "\\b(import|export|module)\\b" + - statement: "\\b(for|if|while|do|else|case|default|switch)\\b" + - statement: "\\b(try|throw|catch|operator|new|delete|static_assert)\\b" + - statement: "\\b(goto|continue|break|return)\\b" + - preproc: "^[[:space:]]*#[[:space:]]*(define|pragma|include|(un|ifn?)def|endif|el(if|se)|if|warning|error)|_Pragma" + + # Conditionally-supported/extension keywords + - statement: "\\b(asm|fortran)\\b" + + # GCC builtins + - statement: "(__attribute__[[:space:]]*\\(\\([^)]*\\)\\)|__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__)" + + # Operator Color + - symbol.operator: "[-+*/%=<>.:;,~&|^!?]|\\b(sizeof|alignof|typeid|(and|or|xor|not)(_eq)?|bitor|compl|bitand|(const|dynamic|reinterpret|static)_cast)\\b" + # Parenthetical Color + - symbol.brackets: "[(){}]|\\[|\\]" + + # Integer Literals + - constant.number: "(\\b([0-9]|0[0-7]|0[Xx][0-9A-Fa-f]|0[Bb][01])([Uu][Ll]?[Ll]?|[Ll][Ll]?[Uu]?)?\\b)" # Base case (Without ' separtor) + - constant.number: "(\\b([1-9][0-9']*[0-9])([Uu][Ll]?[Ll]?|[Ll][Ll]?[Uu]?)?\\b)" # Decimal + - constant.number: "(\\b(0[0-7][0-7']*[0-7])([Uu][Ll]?[Ll]?|[Ll][Ll]?[Uu]?)?\\b)" # Oct + - constant.number: "(\\b(0[Xx][0-9A-Fa-f][0-9A-Fa-f']*[0-9A-Fa-f])([Uu][Ll]?[Ll]?|[Ll][Ll]?[Uu]?)?\\b)" # Hex + - constant.number: "(\\b(0[Bb][01][01']*[01])([Uu][Ll]?[Ll]?|[Ll][Ll]?[Uu]?)?\\b)" # Binary + + # Decimal Floating-point Literals + - constant.number: "(([0-9]?[.]?\\b[0-9]+)([Ee][+-]?[0-9]+)?[FfLl]?\\b)" # Base case optional interger part with exponent base case + - constant.number: "(\\b([0-9]+[.][0-9]?)([Ee][+-]?[0-9]+)?[FfLl]?)" # Base case optional fractional part with exponent base case + - constant.number: "(([0-9]?[.]?\\b[0-9]+)([Ee][+-]?[0-9][0-9']*[0-9])?[FfLl]?\\b)" # Base case optional interger part with exponent + - constant.number: "(\\b([0-9]+[.][0-9]?)([Ee][+-]?[0-9][0-9']*[0-9])?[FfLl]?)" # Base case optional fractional part with exponent + + - constant.number: "(([0-9][0-9']*[0-9])?[.]?\\b([0-9][0-9']*[0-9])+([Ee][+-]?[0-9]+)?[FfLl]?\\b)" # Optional interger part with exponent base case + - constant.number: "(\\b([0-9][0-9']*[0-9])+[.]([0-9][0-9']*[0-9])?([Ee][+-]?[0-9]+)?[FfLl]?)" # Optional fractional part with exponent base case + - constant.number: "(([0-9][0-9']*[0-9])?[.]?\\b([0-9][0-9']*[0-9])+([Ee][+-]?[0-9][0-9']*[0-9])?[FfLl]?\\b)" # Optional interger part with exponent + - constant.number: "(\\b([0-9][0-9']*[0-9])+[.]([0-9][0-9']*[0-9])?([Ee][+-]?[0-9][0-9']*[0-9])?[FfLl]?)" # Optional fractional part with exponent + + # Hexadecimal Floating-point Literals + - constant.number: "(\\b0[Xx]([0-9a-zA-Z]?[.]?[0-9a-zA-Z]+)([Pp][+-]?[0-9]+)?[FfLl]?\\b)" # Base case optional interger part with exponent base case + - constant.number: "(\\b0[Xx]([0-9a-zA-Z]+[.][0-9a-zA-Z]?)([Pp][+-]?[0-9]+)?[FfLl]?)" # Base case optional fractional part with exponent base case + - constant.number: "(\\b0[Xx]([0-9a-zA-Z]?[.]?[0-9a-zA-Z]+)([Pp][+-]?[0-9][0-9']*[0-9])?[FfLl]?\\b)" # Base case optional interger part with exponent + - constant.number: "(\\b0[Xx]([0-9a-zA-Z]+[.][0-9a-zA-Z]?)([Pp][+-]?[0-9][0-9']*[0-9])?[FfLl]?)" # Base case optional fractional part with exponent + + - constant.number: "(\\b0[Xx]([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])?[.]?([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])+([Pp][+-]?[0-9]+)?[FfLl]?\\b)" # Optional interger part with exponent base case + - constant.number: "(\\b0[Xx]([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])+[.]([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])?([Pp][+-]?[0-9]+)?[FfLl]?)" # Optional fractional part with exponent base case + - constant.number: "(\\b0[Xx]([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])?[.]?([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])+([Pp][+-]?[0-9][0-9']*[0-9])?[FfLl]?\\b)" # Optional interger part with exponent + - constant.number: "(\\b0[Xx]([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])+[.]([0-9a-zA-Z][0-9a-zA-Z']*[0-9a-zA-Z])?([Pp][+-]?[0-9][0-9']*[0-9])?[FfLl]?)" # Optional fractional part with exponent + + - constant.bool: "(\\b(true|false|NULL|nullptr|TRUE|FALSE)\\b)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "(\\\\.)|\\b([1-9][0-9']+[0-9]|0[0-7']+[0-7]|0[Xx][0-9A-Fa-f][0-9A-Fa-f']+[0-9A-Fa-f]|0[Bb][01][01']*[01])([Uu][Ll]?[Ll]?|[Ll][Ll]?[Uu]?)?\\b" + rules: + # TODO: Revert back to - error: "..+" once #3127 is merged + - error: "[[:graph:]]{2,}'" + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/crontab.yaml b/config/micro/syntax/crontab.yaml new file mode 100644 index 0000000..2b63045 --- /dev/null +++ b/config/micro/syntax/crontab.yaml @@ -0,0 +1,36 @@ +filetype: crontab + +detect: + filename: "crontab$|/tmp/crontab\\.\\w+$" + header: "^#.*?/etc/crontab" + +rules: + # The time and date fields are: + # field allowed values + # ----- -------------- + # minute 0-59 + # hour 0-23 + # day of month 0-31 + # month 0-12 (or names, see below) + # day of week 0-7 (0 or 7 is Sun, or use names) + + - statement: "^([\\*0-9,\\-\\/]+)\\s+([\\*0-9,\\-\\/]+)\\s+([\\*0-9,\\-\\/]+)\\s+(([\\*0-9,\\-\\/]+)|(\\b(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\b))\\s+(([\\*0-9,\\-\\/]+)|(\\b(sun|mon|tue|wed|thu|fri|sat)\\b))\\s+(.*)$\\n?" + - constant: "^([\\*0-9,\\-\\/]+)\\s+([\\*0-9,\\-\\/]+)\\s+([\\*0-9,\\-\\/]+)\\s+(([\\*0-9,\\-\\/]+)|(\\b(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\b))\\s+(([\\*0-9,\\-\\/]+)|(\\b(sun|mon|tue|wed|thu|fri|sat)\\b))" + + # Shell Values + - type: "^[A-Z]+\\=" + + # Months and weekday keywords + - constant: "\\b(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\b" + - constant: "\\b(sun|mon|tue|wed|thu|fri|sat)\\b" + - type: "\\@(reboot|yearly|annually|monthly|weekly|daily|midnight|hourly)\\b" + + # Conditionals + - special: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|^|!|=|&|\\|)" + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/crystal.yaml b/config/micro/syntax/crystal.yaml new file mode 100644 index 0000000..896864f --- /dev/null +++ b/config/micro/syntax/crystal.yaml @@ -0,0 +1,72 @@ +filetype: crystal + +detect: + filename: "\\.cr$" + +rules: + # Asciibetical list of reserved words + - statement: "\\b(abstract|alias|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|in|include|instance_sizeof|lib|loop|macro|module|next|of|out|pointerof|private|protected|raise|require|rescue|return|select|self|sizeof|spawn|struct|super|then|type|typeof|uninitialized|union|unless|until|verbatim|when|while|with|yield)\\b" + # Constants + - constant: "\\b(true|false|nil)\\b" + - constant.number: "\\b[0-9]+\\b" + # Ones that can't be in the same regex because they include non-words. + # The nil? one has to be after the constants. + - statement: "\\b(nil\\?|as(\\?|\\b)|is_a\\?|responds_to\\?)" + - type: "(\\$|@|@@)?\\b[A-Z]+[0-9A-Z_a-z]*" + # Crystal "symbols" + - constant: "([ ]|^):[0-9A-Z_]+\\b" + # Some unique things we want to stand out + - constant: "\\b(__FILE__|__LINE__)\\b" + # Regular expressions + - constant: "/([^/]|(\\\\/))*/[iomx]*|%r\\{([^}]|(\\\\}))*\\}[iomx]*" + + # Shell command expansion is in `backticks` or like %x{this}. These are + # "double-quotish" (to use a perlism). + - constant.string: "`[^`]*`|%x\\{[^}]*\\}" + + - constant.string: + start: "`" + end: "`" + rules: [] + + - constant.string: + start: "%x\\{" + end: "\\}" + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment.bright: + start: "##" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - constant: + start: "<<-?'?EOT'?" + end: "^EOT" + rules: [] + diff --git a/config/micro/syntax/csharp.yaml b/config/micro/syntax/csharp.yaml new file mode 100644 index 0000000..e78a19c --- /dev/null +++ b/config/micro/syntax/csharp.yaml @@ -0,0 +1,52 @@ +filetype: csharp + +detect: + filename: "\\.cs$" + +rules: + # Class + - identifier.class: "class +[A-Za-z0-9]+ *((:) +[A-Za-z0-9.]+)?" + + # Annotation + - identifier.var: "@[A-Za-z]+" + + - preproc: "^[[:space:]]*#[[:space:]]*(define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)" + - identifier: "([A-Za-z0-9_]*[[:space:]]*[()])" + - type: "\\b(bool|byte|sbyte|char|decimal|double|float|IntPtr|int|uint|long|ulong|managed|unmanaged|nint|nuint|object|short|ushort|string|base|this|var|void)\\b" + - statement: "\\b(alias|as|case|catch|checked|default|do|dynamic|else|finally|fixed|for|foreach|goto|if|is|lock|new|null|return|switch|throw|try|unchecked|when|while|with)\\b" + - statement: "\\b(abstract|add|and|args|async|await|class|const|delegate|enum|event|explicit|extern|file|get|global|implicit|in|init|internal|interface|nameof|namespace|not|notnull|operator|or|out|override|params|partial|private|protected|public|readonly|record|ref|remove|required|scoped|sealed|set|sizeof|stackalloc|static|struct|typeof|unsafe|using|value|virtual|volatile|yield)\\b" + # LINQ-only keywords (ones that cannot be used outside of a LINQ query - lots others can) + - statement: "\\b(from|where|select|group|info|orderby|join|let|in|on|equals|by|ascending|descending)\\b" + - special: "\\b(break|continue)\\b" + - constant.bool: "\\b(true|false)\\b" + - symbol.operator: "[\\-+/*=<>?:!~%&|]" + - constant.number: "\\b([0-9._]+|0x[A-Fa-f0-9_]+|0b[0-1_]+)[FL]?\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([btnfr]|'|\\\"|\\\\)" + - constant.specialChar: "\\\\u[A-Fa-f0-9]{4}" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([btnfr]|'|\\\"|\\\\)" + - constant.specialChar: "\\\\u[A-Fa-f0-9]{4}" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/css.yaml b/config/micro/syntax/css.yaml new file mode 100644 index 0000000..e1acbe2 --- /dev/null +++ b/config/micro/syntax/css.yaml @@ -0,0 +1,44 @@ +filetype: css + +detect: + filename: "\\.(css|scss)$" + +rules: + # Classes and IDs + - statement: "(?i)." + # - normal: + # start: "\\{" + # end: "\\}" + # rules: [] + # css commands + - type: "(align-content|align-items|alignment-baseline|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|appearance|azimuth|backdrop-filter|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|baseline-shift|bookmark-label|bookmark-level|bookmark-state|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-boundary|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|box-snap|box-suppress|break-after|break-before|break-inside|caption-side|caret|caret-animation|caret-color|caret-shape|chains|clear|clip|clip-path|clip-rule|color|color-interpolation-filters|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|columns|column-span|column-width|content|continue|counter-increment|counter-reset|counter-set|cue|cue-after|cue-before|cursor|direction|display|dominant-baseline|elevation|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|float-defer|float-offset|float-reference|flood-color|flood-opacity|flow|flow-from|flow-into|font|font-family|font-feature-settings|font-kerning|font-language-override|font-size|font-size-adjust|font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-weight|footnote-display|footnote-policy|gap|glyph-orientation-vertical|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|hanging-punctuation|height|hyphenate-character|hyphenate-limit-chars|hyphenate-limit-last|hyphenate-limit-lines|hyphenate-limit-zone|hyphens|image-orientation|image-rendering|image-resolution|initial-letter|initial-letter-align|initial-letter-wrap|isolation|justify-content|justify-items|justify-self|left|letter-spacing|lighting-color|line-break|line-grid|line-height|line-snap|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|marker|marker-end|marker-knockout-left|marker-knockout-right|marker-mid|marker-pattern|marker-segment|marker-side|marker-start|marquee-direction|marquee-loop|marquee-speed|marquee-style|mask|mask-border|mask-border-mode|mask-border-outset|mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-height|max-lines|max-width|min-height|min-width|mix-blend-mode|motion|motion-offset|motion-path|motion-rotation|nav-down|nav-left|nav-right|nav-up|object-fit|object-position|offset-after|offset-before|offset-end|offset-start|opacity|order|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-style|overflow-wrap|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page|page-break-after|page-break-before|page-break-inside|pause|pause-after|pause-before|perspective|perspective-origin|pitch|pitch-range|play-during|pointer-events|polar-anchor|polar-angle|polar-distance|polar-origin|position|presentation-level|quotes|region-fragment|resize|rest|rest-after|rest-before|richness|right|rotation|rotation-point|ruby-align|ruby-merge|ruby-position|running|scrollbar-color|scroll-behavior|scroll-snap-align|scroll-snap-margin|scroll-snap-margin-block|scroll-snap-margin-block-end|scroll-snap-margin-block-start|scroll-snap-margin-bottom|scroll-snap-margin-inline|scroll-snap-margin-inline-end|scroll-snap-margin-inline-start|scroll-snap-margin-left|scroll-snap-margin-right|scroll-snap-margin-top|scroll-snap-padding|scroll-snap-padding-block|scroll-snap-padding-block-end|scroll-snap-padding-block-start|scroll-snap-padding-bottom|scroll-snap-padding-inline|scroll-snap-padding-inline-end|scroll-snap-padding-inline-start|scroll-snap-padding-left|scroll-snap-padding-right|scroll-snap-padding-top|scroll-snap-type|shape-image-threshold|shape-inside|shape-margin|shape-outside|size|speak|speak-as|speak-header|speak-numeral|speak-punctuation|speech-rate|stress|string-set|stroke|stroke-alignment|stroke-dashadjust|stroke-dasharray|stroke-dashcorner|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|table-layout|tab-size|text-align|text-align-all|text-align-last|text-combine-upright|text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-style|text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation|text-overflow|text-shadow|text-space-collapse|text-space-trim|text-spacing|text-transform|text-underline-offset|text-underline-position|text-wrap|top|transform|transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch|voice-range|voice-rate|voice-stress|voice-volume|volume|white-space|widows|width|will-change|word-break|word-spacing|word-wrap|wrap-after|wrap-before|wrap-flow|wrap-inside|wrap-through|writing-mode|z-index):" + # - default: + # start: ":" + # end: "[;^\\{]" + # rules: [] + - special: "!important" + - identifier: ":active|:focus|:hover|:link|:visited|:link|:after|:before|$" + - special: "(\\{|\\}|\\(|\\)|\\;|:|\\]|~|<|>|,)" + # SCSS Varaibles + - statement: "@import|@mixin|@extend" + # Strings + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - special: "\"|'" + # Comments & TODOs + - comment: + start: "\\/\\*" + end: "\\*\\/" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/csx.yaml b/config/micro/syntax/csx.yaml new file mode 100644 index 0000000..5ba6ea1 --- /dev/null +++ b/config/micro/syntax/csx.yaml @@ -0,0 +1,8 @@ +filetype: csharp-script +detect: + filename: "\\.csx$" + header: "^#!.*/(env +)?dotnet-script( |$)" + +rules: + - include: "csharp" + - preproc: "\\B(\\#!|\\#[r|load|]+\\b)" diff --git a/config/micro/syntax/cuda.yaml b/config/micro/syntax/cuda.yaml new file mode 100644 index 0000000..6875b1e --- /dev/null +++ b/config/micro/syntax/cuda.yaml @@ -0,0 +1,68 @@ +filetype: cuda + +detect: + filename: "(\\.cu[h]?$)" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]*\\b" + - type: "\\b(float|double|bool|char|int|short|long|enum|void|struct|union|typedef|(un)?signed|inline)\\b" + - type: "\\b(((s?size)|((u_?)?int(8|16|32|64|ptr))|char(8|16|32))_t|wchar_t)\\b" + - type: "\\b[a-z_][0-9a-z_]+(_t|_T)\\b" + - type: "\\b(final|override)\\b" + - type.keyword: "\\b(auto|volatile|const(expr|eval|init)?|mutable|register|thread_local|static|extern|decltype|explicit|virtual)\\b" + - statement: "\\b(class|namespace|template|typename|this|friend|using|public|protected|private|noexcept)\\b" + - statement: "\\b(concept|requires)\\b" + - statement: "\\b(import|export|module)\\b" + - statement: "\\b(for|if|while|do|else|case|default|switch)\\b" + - statement: "\\b(try|throw|catch|operator|new|delete|static_assert)\\b" + - statement: "\\b(goto|continue|break|return)\\b" + - preproc: "^[[:space:]]*#[[:space:]]*(define|pragma|include|(un|ifn?)def|endif|el(if|se)|if|warning|error)|_Pragma" + + # Conditionally-supported/extension keywords + - statement: "\\b(asm|fortran)\\b" + + # GCC builtins + - statement: "(__attribute__[[:space:]]*\\(\\([^)]*\\)\\)|__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__)" + + # CUDA specific keywords + - statement: "__(global|device|host|shared)__" + + # Operator Color + - symbol.operator: "[-+*/%=<>.:;,~&|^!?]|\\b(sizeof|alignof|typeid|(and|or|xor|not)(_eq)?|bitor|compl|bitand|(const|dynamic|reinterpret|static)_cast)\\b" + # Parenthetical Color + - symbol.brackets: "[(){}]|\\[|\\]" + # Integer Literals + - constant.number: "(\\b([1-9][0-9']*|0[0-7']*|0[Xx][0-9a-fA-F']+|0[Bb][01]+)([Uu]?[Ll][Ll]?|[Ll][Ll]?[Uu]?)?\\b)" + # Decimal Floating-point Literals + - constant.number: "(\\b(([0-9']*[.][0-9']+|[0-9']+[.][0-9']*)([Ee][+-]?[0-9']+)?|[0-9']+[Ee][+-]?[0-9']+)[FfLl]?\\b)" + # Hexadecimal Floating-point Literals + - constant.number: "(\\b0[Xx]([0-9a-zA-Z']*[.][0-9a-zA-Z']+|[0-9a-zA-Z']+[.][0-9a-zA-Z']*)[Pp][+-]?[0-9']+[FfLl]?\\b)" + - constant.bool: "(\\b(true|false|NULL|nullptr)\\b)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/cython.yaml b/config/micro/syntax/cython.yaml new file mode 100644 index 0000000..5a30c60 --- /dev/null +++ b/config/micro/syntax/cython.yaml @@ -0,0 +1,52 @@ +filetype: cython + +detect: + filename: "\\.pyx$|\\.pxd$|\\.pyi$" + +rules: + # Python Keyword Color + - statement: "\\b(and|as|assert|class|def|DEF|del|elif|ELIF|else|ELSE|except|exec|finally|for|from|global|if|IF|import|in|is|lambda|map|not|or|pass|print|raise|try|while|with|yield)\\b" + - special: "\\b(continue|break|return)\\b" + + # Cython Keyword Color + - identifier.macro: "\\b(cdef|cimport|cpdef|cppclass|ctypedef|extern|include|namespace|property|struct)\\b" + - type: "\\b(bint|char|double|int|public|void|unsigned)\\b" + + # Operator Color + - symbol: "[.:;,+*|=!\\%]|<|>|/|-|&" + + # Parenthetical Color + - symbol.brackets: "[(){}]|\\[|\\]" + + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'''" + end: "'''" + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/d.yaml b/config/micro/syntax/d.yaml new file mode 100644 index 0000000..e8d36e2 --- /dev/null +++ b/config/micro/syntax/d.yaml @@ -0,0 +1,121 @@ +filetype: d + +detect: + filename: "\\.(d(i|d)?)$" + +rules: + # Operators and punctuation + - statement: "(\\*|/|%|\\+|-|>>|<<|>>>|&|\\^(\\^)?|\\||~)?=" + - statement: "\\.\\.(\\.)?|!|\\*|&|~|\\(|\\)|\\[|\\]|\\\\|/|\\+|-|%|<|>|\\?|:|;" + # Octal integer literals are deprecated + - error: "(0[0-7_]*)(L[uU]?|[uU]L?)?" + # Decimal integer literals + - constant.number: "([0-9]|[1-9][0-9_]*)(L[uU]?|[uU]L?)?\\b" + # Binary integer literals + - constant: "(0[bB][01_]*)(L[uU]?|[uU]L?)?" + # Decimal float literals + - constant.number: "[0-9][0-9_]*\\.([0-9][0-9_]*)([eE][+-]?([0-9][0-9_]*))?[fFL]?i?" + - constant.number: "[0-9][0-9_]*([eE][+-]?([0-9][0-9_]*))[fFL]?i?" + - constant.number: "[^.]\\.([0-9][0-9_]*)([eE][+-]?([0-9][0-9_]*))?[fFL]?i?" + - constant.number: "[0-9][0-9_]*([fFL]?i|[fF])" + # Hexadecimal integer literals + - constant.number: "(0[xX]([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F]))(L[uU]?|[uU]L?)?" + # Hexadecimal float literals + - constant.number: "0[xX]([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])(\\.[0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])?[pP][+-]?([0-9][0-9_]*)[fFL]?i?" + - constant.number: "0[xX]\\.([0-9a-fA-F][0-9a-fA-F_]*|[0-9a-fA-F_]*[0-9a-fA-F])[pP][+-]?([0-9][0-9_]*)[fFL]?i?" + # Character literals + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + # Keywords + # a-e + - statement: "\\b(abstract|alias|align|asm|assert|auto|body|break|case|cast|catch|class|const|continue|debug|default|delegate|do|else|enum|export|extern)\\b" + # f-l + - statement: "\\b(false|final|finally|for|foreach|foreach_reverse|function|goto|if|immutable|import|in|inout|interface|invariant|is|lazy)\\b" + # m-r + - statement: "\\b(macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|ref|return)\\b" + # s-w + - statement: "\\b(scope|shared|static|struct|super|switch|synchronized|template|this|throw|true|try|typeid|typeof|union|unittest|version|while|with)\\b" + # __ + - statement: "\\b(__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)\\b" + # Deprecated keywords + - error: "\\b(delete|deprecated|typedef|volatile)\\b" + # Primitive types + - type: "\\b(bool|byte|cdouble|cent|cfloat|char|creal|dchar|double|float|idouble|ifloat|int|ireal|long|real|short|ubyte|ucent|uint|ulong|ushort|void|wchar)\\b" + # Globally defined symbols + - type: "\\b(string|wstring|dstring|size_t|ptrdiff_t)\\b" + # Special tokens + - constant: "\\b(__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\b" + # String literals + # DoubleQuotedString + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + # WysiwygString + - constant.string: + start: "r\"" + end: "\"" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "`" + end: "`" + rules: + - constant.specialChar: "\\\\." + # HexString + - constant.string: + start: "x\"" + end: "\"" + rules: + - constant.specialChar: "\\\\." + # DelimitedString + - constant.string: + start: "q\"\\(" + end: "\\)\"" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "q\"\\{" + end: "q\"\\}" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "q\"\\[" + end: "q\"\\]" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "q\"<" + end: "q\">" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "q\"[^({[<\"][^\"]*$" + end: "^[^\"]+\"" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "q\"([^({[<\"])" + end: "\"" + rules: + - constant.specialChar: "\\\\." + # Comments + - comment: + start: "//" + end: "$" + rules: [] + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + - comment: + start: "/\\+" + end: "\\+/" + rules: [] + diff --git a/config/micro/syntax/dart.yaml b/config/micro/syntax/dart.yaml new file mode 100644 index 0000000..5409d05 --- /dev/null +++ b/config/micro/syntax/dart.yaml @@ -0,0 +1,46 @@ +filetype: dart + +detect: + filename: "\\.dart$" + +rules: + - constant.number: "\\b[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\\b" + - constant.number: "\\b[-+]?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" + - constant.number: "\\b[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" + - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" + - statement: "\\b(break|case|catch|continue|default|else|finally)\\b" + - statement: "\\b(for|function|get|if|in|as|is|new|return|set|switch|final|await|async|sync)\\b" + - statement: "\\b(switch|this|throw|try|var|void|while|with|import|library|part|const|export)\\b" + - constant: "\\b(true|false|null)\\b" + - type: "\\b(List|String)\\b" + - type: "\\b(int|num|double|bool)\\b" + - statement: "[-+/*=<>!~%?:&|]" + - constant: "/[^*]([^/]|(\\\\/))*[^\\\\]/[gim]*" + - constant: "\\\\[0-7][0-7]?[0-7]?|\\\\x[0-9a-fA-F]+|\\\\[bfnrt'\"\\?\\\\]" + + - comment: + start: "//" + end: "$" + rules: + - todo: "TODO:?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "TODO:?" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + diff --git a/config/micro/syntax/default.yaml b/config/micro/syntax/default.yaml new file mode 100644 index 0000000..f619ca6 --- /dev/null +++ b/config/micro/syntax/default.yaml @@ -0,0 +1,10 @@ +filetype: unknown + +detect: + filename: "" + +rules: + # Mails + - special: "[[:alnum:].%_+-]+@[[:alnum:].-]+" + # URLs + - identifier: "(https?|ftp|ssh)://\\S*[^])>\\s,.]" diff --git a/config/micro/syntax/dockerfile.yaml b/config/micro/syntax/dockerfile.yaml new file mode 100644 index 0000000..ea7aa7b --- /dev/null +++ b/config/micro/syntax/dockerfile.yaml @@ -0,0 +1,36 @@ +filetype: dockerfile + +detect: + filename: "((Docker|Container)file[^/]*$|\\.(docker|container)file$)" + +rules: + ## Keywords + - type.keyword: "(?i)^(FROM|MAINTAINER|RUN|CMD|LABEL|EXPOSE|ENV|ADD|COPY|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|ARG|HEALTHCHECK|STOPSIGNAL|SHELL)[[:space:]]" + + ## Brackets & parenthesis + - statement: "(\\(|\\)|\\[|\\])" + + ## Double ampersand + - special: "&&" + + ## Comments + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + diff --git a/config/micro/syntax/dot.yaml b/config/micro/syntax/dot.yaml new file mode 100644 index 0000000..cea9a58 --- /dev/null +++ b/config/micro/syntax/dot.yaml @@ -0,0 +1,29 @@ +filetype: dot + +detect: + filename: "\\.(dot|gv)$" + +rules: + - type: "\\b(digraph|edge|graph|node|subgraph)\\b" + - statement: "\\b(arrow(head|size|tail)|(bg|fill|font)?color|center|constraint|decorateP|dir|distortion|font(name|size)|head(clip|label)|height|label(angle|distance|font(color|name|size))?|layer(s)?|margin|mclimit|minlen|name|nodesep|nslimit|ordering|orientation|page(dir)?|peripheries|port_label_distance|rank(dir|sep)?|ratio|regular|rotate|same(head|tail)|shape(file)?|sides|size|skew|style|tail(clip|label)|URL|weight|width)\\b" + - symbol: "=|->|--" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/elixir.yaml b/config/micro/syntax/elixir.yaml new file mode 100644 index 0000000..af7c607 --- /dev/null +++ b/config/micro/syntax/elixir.yaml @@ -0,0 +1,30 @@ +filetype: elixir + +detect: + filename: "\\.ex$|\\.exs$" + +rules: + - statement: "\\b(abs|trunc|rem|div|round|max|min|and|or|not|throw|raise|reraise|hd|tl|in|length|elem|put_elem|destructure|to_(string|charlist)|is_(atom|binary|bitstring|boolean|float|function|integer|list|map|nil|number|pid|port|reference|tuple)|(bit|byte|map|tuple)_size|binary_part|def(delegate|exception|guard|guardp|impl|macro|macrop|module|overridable|p|protocol|struct)?|sigil_[crswCRSWDNT]|if|else|unless|cond|binding|node|self|spawn|spawn_link|spawn_monitor|send|exit|struct|get_and_update_in|get_in|put_in|pop_in|update_in|apply|inspect|make_ref|use|do|end)\\b" + - statement: "\\b(alias|import|require|case|fn|receive|after|try|catch|rescue|super|quote|unquote|unquote_splicing|for|with)\\b" + + - constant: "\\b\\[A-Z]+\\b" + - constant.number: "\\b[0-9]+\\b" + + - constant.string: "`[^`]*`|%x\\{[^}]*\\}" + - constant.string: "\"([^\"]|(\\\\\"))*\"|%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - constant.string: "'([^']|(\\\\'))*'|%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + + - symbol.brackets: "\\{|\\}|\\[|\\]|\\(|\\)" + + - comment: "#[^{].*$|#$" + - comment.bright: "##[^{].*$|##$" + + - type.keyword: "\\:[a-zA-Z][a-zA-Z0-9_]*" + - type.keyword: "\\b(describe|test)" + - statement: "\\b(expected|assert|assert_raise|assert_in_delta|assert_received|catch_error|catch_throw|flunk|refute|refute_in_delta|refute_received)\\b" + - symbol.tag: "^\\s*\\@[a-zA-Z][a-zA-Z0-9_]*\\b" + + - identifier.macro: "\\b(__CALLER__|__DIR__|__ENV__|__MODULE__|__aliases__|__block__|defmacro)\\b" + + - todo: "(XXX|TODO|FIXME|\\?\\?\\?)" + - preproc.shebang: "\\W*#!.+?( |$)" diff --git a/config/micro/syntax/elm.yaml b/config/micro/syntax/elm.yaml new file mode 100644 index 0000000..be1dd3b --- /dev/null +++ b/config/micro/syntax/elm.yaml @@ -0,0 +1,38 @@ +filetype: elm + +detect: + filename: "\\.elm$" + +rules: + - statement: "\\b(as|alias|case|else|exposing|if|import|in|let|module|of|port|then|type|)\\b" + - statement: "(\\=|\\:|\\->)" + - type: "\\b([A-Z][A-Za-z\\d]*)\\b" + - identifier: "^([a-z][A-Za-z\\d]*)\\b" + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - comment: + start: "--" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + - comment: + start: "\\{-" + end: "-\\}" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/erb.yaml b/config/micro/syntax/erb.yaml new file mode 100644 index 0000000..fbe420b --- /dev/null +++ b/config/micro/syntax/erb.yaml @@ -0,0 +1,42 @@ +filetype: erb + +detect: + filename: "\\.erb$|\\.rhtml$" + +rules: + - error: "<[^!].*?>" + - symbol.tag: "(?i)<[/]?(a(bbr|cronym|ddress|pplet|rea|rticle|side|udio)?|b(ase(font)?|d(i|o)|ig|lockquote|r)?|ca(nvas|ption)|center|cite|co(de|l|lgroup)|d(ata(list)?|d|el|etails|fn|ialog|ir|l|t)|em(bed)?|fieldset|fig(caption|ure)|font|form|(i)?frame|frameset|h[1-6]|hr|i|img|in(put|s)|kbd|keygen|label|legend|li(nk)?|ma(in|p|rk)|menu(item)?|met(a|er)|nav|no(frames|script)|o(l|pt(group|ion)|utput)|p(aram|icture|re|rogress)?|q|r(p|t|uby)|s(trike)?|samp|se(ction|lect)|small|source|span|strong|su(b|p|mmary)|textarea|time|track|u(l)?|var|video|wbr)( .*|>)*?>" + - symbol.tag.extended: "(?i)<[/]?(body|div|html|head(er)?|footer|title|table|t(body|d|h(ead)?|r|foot))( .*|>)*?>" + - preproc: "(?i)<[/]?(script|style)( .*|>)*?>" + - special: "&[^;[[:space:]]]*;" + - symbol: "[:=]" + - identifier: "(alt|bgcolor|height|href|id|label|longdesc|name|onclick|onfocus|onload|onmouseover|size|span|src|style|target|type|value|width)=" + - constant.string: "\"[^\"]*\"" + - constant.number: "(?i)#[0-9a-fA-F]{6,6}" + - constant.string.url: "(ftp(s)?|http(s)?|git|chrome)://[^ ]+" + - comment: "" + - preproc: "" + - default: + start: "<%" + end: "%>" + rules: [] + + - preproc: "<%|%>" + - red: "&[^;[[:space:]]]*;" + - statement: "\\b(BEGIN|END|alias|and|begin|break|case|class|def|defined\\?|do|else|elsif|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\\b" + - identifier.var: "(\\$|@|@@)?\\b[A-Z]+[0-9A-Z_a-z]*" + - magenta: "(?i)([ ]|^):[0-9A-Z_]+\\b" + - identifier.macro: "\\b(__FILE__|__LINE__)\\b" + - brightmagenta: "!/([^/]|(\\\\/))*/[iomx]*|%r\\{([^}]|(\\\\}))*\\}[iomx]*" + - brightblue: "`[^`]*`|%x\\{[^}]*\\}" + - constant.string: "\"([^\"]|(\\\\\"))*\"|%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - brightgreen: "#\\{[^}]*\\}" + - green: "'([^']|(\\\\'))*'|%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + - comment: "#[^{].*$|#$" + - comment.bright: "##[^{].*$|##$" + - identifier.macro: + start: "<<-?'?EOT'?" + end: "^EOT" + rules: [] + + - todo: "(XXX|TODO|FIXME|\\?\\?\\?)" diff --git a/config/micro/syntax/erlang.yaml b/config/micro/syntax/erlang.yaml new file mode 100644 index 0000000..f4ef19d --- /dev/null +++ b/config/micro/syntax/erlang.yaml @@ -0,0 +1,45 @@ +filetype: erlang + +detect: + filename: "\\.erl$" + +rules: + - identifier: "\\b[A-Z][0-9a-z_]*\\b" + # See: https://erlang.org/doc/reference_manual/data_types.html + - constant.number: "\\b[0-9]+(\\.[0-9]+)?(e-?[0-9]+)?\\b" + - constant.number: "\\b[0-9]{1,2}\\#[a-zA-Z0-9]+\\b" + - constant.bool: "\\b(true|false)\\b" + - constant.number: "\\$\\\\?\\S{1}" + # See: https://erlang.org/doc/reference_manual/introduction.html + - statement: "\\b(after|and|andalso|band|begin|bnot|bor|bsl|bsr|bxor|case|catch|cond|div|end|fun|if|let|not|of|or|orelse|receive|rem|try|when|xor)\\b" + # See: https://erlang.org/doc/reference_manual/macros.html + - preproc: "\\-(module|export|record|include|include_lib|define|undef|ifdef|ifndef|else|endif|if|elif|error|warning)\\b" + - identifier.macro: "\\?[A-Z0-9_]+\\b" + # See: https://erlang.org/doc/man/erlang.html + - special: "\\b(ext_binary|binary|iovec|message_queue_data|time(_unit|stamp)|abs|apply|atom(_to_binary|_to_list)|binary_(part|to_atom|to_existing_atom|to_float|to_integer|to_list|to_term)|bit(_size|string_to_list)|byte_size|ceil|check_(old_code|process_code)|date|delete_module|demonitor|disconnect_node|element|erase|error|exit|float(_to_binary|_to_list)?|floor|garbage_collect|get|group_leader|halt|integer(_to_binary|to_list)|iolist_(size|to_binary)|is_(alive|atom|binary|bitstring|boolean|float|function|integer|list|map|map_key|number|pid|port|process_alive|record|reference|tuple|length)|link|list_to_(atom|binary|bitstring|existing_atom|float|integer|pid|port|ref|tuple)|load_module|make_ref|map_(get|size)|max|min|module_loaded|monitor(_node)?|nodes?|now|open_port|pid_to_list|port(_close|command|connect|control|to_list)|pre_loaded|process(_flag|_info|es)|purge_module|put|register(ed)?|round|self|setelement|size|spawn(_link|_monitor|_opt|_binary)?|statistics|trunc|tuple_(size|to_list)|unlink|unregister|whereis)\\b" + # See: https://erlang.org/doc/reference_manual/data_types.html#atom + - symbol: + start: "'" + end: "'" + skip: "\\\\." + rules: [] +# - constant.specialChar: "%." +# - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" +# - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + - comment: + start: "\\(\\*" + end: "\\*\\)" + rules: + - todo: "(TODO|FIXME|WONTFIX|NOTE|HACK):?" + - comment: + start: "%" + end: "$" + rules: [] diff --git a/config/micro/syntax/fish.yaml b/config/micro/syntax/fish.yaml new file mode 100644 index 0000000..73da226 --- /dev/null +++ b/config/micro/syntax/fish.yaml @@ -0,0 +1,48 @@ +filetype: fish + +detect: + filename: "\\.fish$" + header: "^#!.*/(env +)?fish( |$)" + +rules: + # Numbers + - constant: "\\b[0-9]+\\b" + + # Conditionals and control flow + - statement: "\\b(and|begin|break|case|continue|else|end|for|function|if|in|not|or|return|select|shift|switch|while)\\b" + - special: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|^|!|=|&|\\|)" + + # Fish commands + - type: "\\b(bg|bind|block|breakpoint|builtin|cd|count|command|commandline|complete|dirh|dirs|echo|emit|eval|exec|exit|fg|fish|fish_config|fish_ident|fish_pager|fish_prompt|fish_right_prompt|fish_update_completions|fishd|funced|funcsave|functions|help|history|jobs|math|mimedb|nextd|open|popd|prevd|psub|pushd|pwd|random|read|set|set_color|source|status|string|trap|type|ulimit|umask|vared)\\b" + + # Common linux commands + - type: "\\b((g|ig)?awk|bash|dash|find|\\w{0,4}grep|kill|killall|\\w{0,4}less|make|pkill|sed|sh|tar)\\b" + + # Coreutils commands + - type: "\\b(base64|basename|cat|chcon|chgrp|chmod|chown|chroot|cksum|comm|cp|csplit|cut|date|dd|df|dir|dircolors|dirname|du|env|expand|expr|factor|false|fmt|fold|head|hostid|id|install|join|link|ln|logname|ls|md5sum|mkdir|mkfifo|mknod|mktemp|mv|nice|nl|nohup|nproc|numfmt|od|paste|pathchk|pinky|pr|printenv|printf|ptx|pwd|readlink|realpath|rm|rmdir|runcon|seq|(sha1|sha224|sha256|sha384|sha512)sum|shred|shuf|sleep|sort|split|stat|stdbuf|stty|sum|sync|tac|tail|tee|test|time|timeout|touch|tr|true|truncate|tsort|tty|uname|unexpand|uniq|unlink|users|vdir|wc|who|whoami|yes)\\b" + + # Conditional flags + - statement: "--[a-z-]+" + - statement: "\\ -[a-z]+" + + - identifier: "(?i)\\{?\\$[0-9A-Z_!@#$*?-]+\\}?" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: [] + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/forth.yaml b/config/micro/syntax/forth.yaml new file mode 100644 index 0000000..44ca1a3 --- /dev/null +++ b/config/micro/syntax/forth.yaml @@ -0,0 +1,34 @@ +filetype: forth + +detect: + filename: "\\.(forth|4th|fs|fs8|ft|fth|frt)$" + +rules: + - identifier: "\\b[A-Za-z_0-9-]*\\b" + + - statement: "\\b(?i:(if|else|then|do|loop|case|endcase|of|endof|begin|while|repeat|until|again|unloop|leave|exit|done|next|\\?do|\\+do|\\-do|\\+loop|\\-loop|\\?leave))\\b" + + - statement: "(^:|;$)" + + - type: "\\b(?i:(variable|constant|cells))\\b" + + - special: "\\B[?.]\\B" #for some reason, \b and \B are inverted for symbols + + - constant.number: "\\b[0-9]+\\b" + + - constant.string: + start: "\\b([Ss.]\" )" + end: "\"" + rules: [] + + - comment: + start: "\\(" + end: "\\)" + rules: + - todo: "(TODO|NOTE|XXX|FIXME):?" + + - comment: + start: "\\\\" + end: "$" + rules: + - todo: "(TODO|NOTE|XXX|FIXME):?" diff --git a/config/micro/syntax/fortran.yaml b/config/micro/syntax/fortran.yaml new file mode 100644 index 0000000..0cc773d --- /dev/null +++ b/config/micro/syntax/fortran.yaml @@ -0,0 +1,64 @@ +filetype: fortran + +detect: + filename: "\\.([Ff]|[Ff]90|[Ff]95|[Ff][Oo][Rr])$" + +rules: + - type: "(?i)\\b(action|advance|all|allocatable|allocated|any|apostrophe)\\b" + - type: "(?i)\\b(append|asis|assign|assignment|associated|bind|character|common)\\b" + - type: "(?i)\\b(complex|data|default|delim|dimension|double precision)\\b" + - type: "(?i)\\b(elemental|enum|enumerator|epsilon|external|file|fmt|form|format|huge)\\b" + - type: "(?i)\\b(implicit|include|index|inquire|integer|intent|interface)\\b" + - type: "(?i)\\b(intrinsic|iostat|kind|logical|module|none|null|only)\\\\b" + - type: "(?i)\\b(operator|optional|pack|parameter|pointer|position|private)\\b" + - type: "(?i)\\b(program|public|real|recl|recursive|selected_int_kind)\\b" + - type: "(?i)\\b(selected_real_kind|subroutine|status|module|function|logical)\\b" + + - constant: "(?i)\\b(abs|achar|adjustl|adjustr|allocate|bit_size|call|char)\\b" + - constant: "(?i)\\b(close|contains|count|cpu_time|cshift|date_and_time)\\b" + - constant: "(?i)\\b(deallocate|digits|dot_product|eor|eoshift|iachar)\\b" + - constant: "(?i)\\b(iand|ibclr|ibits|ibset|ichar|ieor|iolength|ior|ishft|ishftc)\\b" + - constant: "(?i)\\b(lbound|len|len_trim|matmul|maxexponent|maxloc|maxval|merge)\\b" + - constant: "(?i)\\b(minexponent|minloc|minval|mvbits|namelist|nearest|nullify)\\b" + - constant: "(?i)\\b(open|pad|present|print|product|pure|quote|radix)\\b" + - constant: "(?i)\\b(random_number|random_seed|range|read|readwrite|replace)\\b" + - constant: "(?i)\\b(reshape|rewind|save|scan|sequence|shape|sign|size|spacing)\\b" + - constant: "(?i)\\b(spread|sum|system_clock|target|transfer|transpose|trim)\\b" + - constant: "(?i)\\b(ubound|unpack|verify|write|tiny|type|use|yes|true|false|not)\\b" + + - constant.number: "\\b([0-9]+)\\b" + + - statement: "(?i)\\b(.and.|case|do|else|else?if|else?where|end|end?do|end?if)\\b" + - statement: "(?i)\\b(end?select|.eqv.|forall|if|lge|lgt|lle|llt|.neqv.|.not.)\\b" + - statement: "(?i)\\b(or|and|repeat|select|case|then|where|while|import)\\b" + + - special: "(?i)\\b(continue|cycle|exit|go?to|result|return)\\b" + + #Operator Color + - symbol.operator: "[.:;,+*|=!\\%]|/|-|>|<|&" + + #Parenthetical Color + - symbol.bracket: "[(){}]|\\[|\\]" + + # Add preprocessor commands. + - preproc: "^[[:space:]]*#[[:space:]]*(define|include|(un|ifn?)def|endif|el(if|se)|if|warning|error)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "!" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/freebsd-kernel.yaml b/config/micro/syntax/freebsd-kernel.yaml new file mode 100644 index 0000000..2e42568 --- /dev/null +++ b/config/micro/syntax/freebsd-kernel.yaml @@ -0,0 +1,14 @@ +filetype: freebsd-kernel + +detect: + filename: "GENERIC$" + +rules: + - identifier: "^(cpu|ident|options|makeoptions|device|include)" + - statement: "\\s\\S*" + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/fsharp.yaml b/config/micro/syntax/fsharp.yaml new file mode 100644 index 0000000..bf58633 --- /dev/null +++ b/config/micro/syntax/fsharp.yaml @@ -0,0 +1,48 @@ +filetype: fsharp + +detect: + filename: "\\.fs?$" + +rules: + - identifier: "\\b[A-Z][0-9a-z_]{2,}\\b" + #declarations + - statement: "\\b(let|val|method|in|and|rec|private|virtual|constraint)\\b" + #structure items + - type: "\\b(type|open|class|module|exception|external)\\b" + #patterns + - statement: "\\b(fun|function|functor|match|try|with)\\b" + #patterns-modifiers + - statement: "\\b(as|when|of)\\b" + #conditions + - statement: "\\b(if|then|else)\\b" + #blocs + - type: "\\b(begin|end|object|struct|sig|for|while|do|done|to|downto)\\b" + #constantes + - constant.bool: "\\b(true|false)\\b" + #modules/classes + - special: "\\b(include|inherit|initializer)\\b" + #expr modifiers + - special: "\\b(new|ref|mutable|lazy|assert|raise)\\b" + #keywords which don't exist in ocaml + - type: "\\b(base|delegate|downcast|extern|finally|fixed|global|inline|interface|internal|let!|member|namespace|null|override|private|public)\\b" + - type: "\\b(return|return!|select|static|upcast|use|use!|void|yield|yield!)\\b" + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + - comment: + start: "\\(\\*" + end: "\\*\\)" + rules: [] diff --git a/config/micro/syntax/gdscript.yaml b/config/micro/syntax/gdscript.yaml new file mode 100644 index 0000000..0498ab5 --- /dev/null +++ b/config/micro/syntax/gdscript.yaml @@ -0,0 +1,61 @@ +filetype: gdscript + +detect: + filename: "\\.gd$" + +rules: + # Built-in constants + - constant: "\\b(INF|NAN|PI|TAU)\\b" + - constant.bool: "\\b(null|true|false)\\b" + # Built-in functions + - identifier: "\\b(abs|acos|asin|atan|atan2|ceil|clamp|convert|cos|cosh|db2linear|decimals|deg2rad|ease|exp|float|floor|fmod|fposmod|hash|int|isinf|isnan|lerp|linear2db|load|log|max|min|nearest_po2|pow|preload|print|printerr|printraw|prints|printt|rad2deg|rand_range|rand_seed|randomize|randi|randf|range|round|seed|sin|slerp|sqrt|str|str2var|tan|typeof|var2str|weakref)\\b" + # Built-in node names + - identifier: "\\b(AnimationPlayer|AnimationTreePlayer|Button|Control|Engine|HTTPClient|HTTPRequest|Input|InputEvent|MainLoop|Node|Node2D|OS|SceneTree|Spatial|StreamPeer|PacketPeer|PacketPeerUDP|Timer|Tween)\\b" + # Types + - type: "\\b(AABB|Array|Basis|Color|Dictionary|NodePath|Object|Plane|PoolByteArray|PoolColorArray|PoolIntArray|PoolRealArray|PoolVector2Array|PoolVector3Array|Quat|Rect2|RID|String|Transform|Transform2D|Vector2|Vector3)\\b" + # Definitions + - identifier: "func [a-zA-Z_0-9]+" + # Keywords + - statement: "\\b(and|as|assert|break|breakpoint|class|const|continue|elif|else|enum|export|extends|for|func|if|in|is|map|master|mastersync|match|not|onready|or|pass|remote|remotesync|return|self|setget|slave|slavesync|signal|sync|tool|var|while|yield)\\b" + + # Operators + - statement: "[.:;,+*|=!\\%@]|<|>|/|-|&" + + # Parentheses + - statement: "[(){}]|\\[|\\]" + + # Numbers + - constant: "\\b[0-9]+\\b" + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" + + - comment: + start: "\"\"\"" + end: "\"\"\"" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "'''" + end: "'''" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/gemini.yaml b/config/micro/syntax/gemini.yaml new file mode 100644 index 0000000..b3ea7bf --- /dev/null +++ b/config/micro/syntax/gemini.yaml @@ -0,0 +1,19 @@ +filetype: gemini + +detect: + filename: "\\.(gmi|gemini)$" + +rules: + # link lines + - constant: "^=>[[:space:]].*" + # preformatted text lines + - special: + start: "^```" + end: "^```" + rules: [] + # heading lines + - special: "^#{1,3}.*" + # unordered list items + - identifier: "^\\*[[:space:]]" + # quote lines + - statement: "^>.*" diff --git a/config/micro/syntax/gentoo-ebuild.yaml b/config/micro/syntax/gentoo-ebuild.yaml new file mode 100644 index 0000000..0d118f4 --- /dev/null +++ b/config/micro/syntax/gentoo-ebuild.yaml @@ -0,0 +1,48 @@ +filetype: ebuild + +detect: + filename: "\\.e(build|class)$" + +rules: + # All the standard portage functions + - identifier: "^src_(unpack|compile|install|test)|^pkg_(config|nofetch|setup|(pre|post)(inst|rm))" + # Highlight bash related syntax + - statement: "\\b(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while|continue|break)\\b" + - statement: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|!|=|&|\\|)" + - statement: "-(e|d|f|r|g|u|w|x|L)\\b" + - statement: "-(eq|ne|gt|lt|ge|le|s|n|z)\\b" + # Highlight variables ... official portage ones in red, all others in bright red + - preproc: "\\$\\{?[a-zA-Z_0-9]+\\}?" + - special: "\\b(ARCH|HOMEPAGE|DESCRIPTION|IUSE|SRC_URI|LICENSE|SLOT|KEYWORDS|FILESDIR|WORKDIR|(P|R)?DEPEND|PROVIDE|DISTDIR|RESTRICT|USERLAND)\\b" + - special: "\\b(S|D|T|PV|PF|P|PN|A)\\b|\\bC(XX)?FLAGS\\b|\\bLDFLAGS\\b|\\bC(HOST|TARGET|BUILD)\\b" + # Highlight portage commands + - identifier: "\\buse(_(with|enable))?\\b [!a-zA-Z0-9_+ -]*|inherit.*" + - statement: "\\be(begin|end|conf|install|make|warn|infon?|error|log|patch|new(group|user))\\b" + - statement: "\\bdie\\b|\\buse(_(with|enable))?\\b|\\binherit\\b|\\bhas\\b|\\b(has|best)_version\\b|\\bunpack\\b" + - statement: "\\b(do|new)(ins|s?bin|doc|lib(\\.so|\\.a)|man|info|exe|initd|confd|envd|pam|menu|icon)\\b" + - statement: "\\bdo(python|sed|dir|hard|sym|html|jar|mo)\\b|\\bkeepdir\\b" + - statement: "prepall(docs|info|man|strip)|prep(info|lib|lib\\.(so|a)|man|strip)" + - statement: "\\b(doc|ins|exe)into\\b|\\bf(owners|perms)\\b|\\b(exe|ins|dir)opts\\b" + # Highlight common commands used in ebuilds + - type: "\\bmake\\b|\\b(cat|cd|chmod|chown|cp|echo|env|export|grep|let|ln|mkdir|mv|rm|sed|set|tar|touch|unset)\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/gentoo-etc-portage.yaml b/config/micro/syntax/gentoo-etc-portage.yaml new file mode 100644 index 0000000..300687e --- /dev/null +++ b/config/micro/syntax/gentoo-etc-portage.yaml @@ -0,0 +1,23 @@ +filetype: etc-portage + +detect: + filename: "\\.(keywords|mask|unmask|use)(/.+)?$" + +rules: + # Use flags: + - constant.bool.false: "[[:space:]]+\\+?[a-zA-Z0-9_-]+" + - constant.bool.true: "[[:space:]]+-[a-zA-Z0-9_-]+" + # Likely version numbers: + - special: "-[[:digit:]].*([[:space:]]|$)" + # Accepted arches: + - identifier.class: "[~-]?\\b(alpha|amd64|arm|hppa|ia64|mips|ppc|ppc64|s390|sh|sparc|x86|x86-fbsd)\\b" + - identifier.class: "[[:space:]][~-]?\\*" + # Categories: + - statement: "^[[:space:]]*.*/" + # Masking regulators: + - symbol: "^[[:space:]]*(=|~|<|<=|=<|>|>=|=>)" + # Comments: + - comment: + start: "#" + end: "$" + rules: [] diff --git a/config/micro/syntax/git-commit.yaml b/config/micro/syntax/git-commit.yaml new file mode 100644 index 0000000..29c7353 --- /dev/null +++ b/config/micro/syntax/git-commit.yaml @@ -0,0 +1,35 @@ +filetype: git-commit + +detect: + filename: '^(.*[\\/])?(COMMIT_EDITMSG|TAG_EDITMSG|MERGE_MSG)$' + +rules: + # File changes + - type.keyword: "#[[:space:]](deleted|modified|new file|renamed):[[:space:]].*" + - type.keyword: "#[[:space:]]deleted:" + - type.keyword: "#[[:space:]]modified:" + - type.keyword: "#[[:space:]]new file:" + - type.keyword: "#[[:space:]]renamed:" + - type.keyword: "^#[[:space:]]Changes.*[:]" + - type.keyword: "^#[[:space:]]Your branch and '[^']+" + - type.keyword: "^#[[:space:]]Your branch and '" + - type.keyword: "^#[[:space:]]On branch [^ ]+" + - type.keyword: "^#[[:space:]]On branch" + # Color keywords for closing issues (such as on Github) + - type.keyword: "\\b(?i)((fix(es|ed)?|close(s|d)?) #[0-9]+)\\b" + + # Comments + - comment.line: + start: "^#" + end: "$" + rules: [] + + # Diffs (i.e. git commit --verbose) + - default: + start: "^diff --git" + # Diff output puts a space before file contents on each line so this + # should never match valid diff output and extend highlighting to the + # end of the file + end: "^ENDOFFILE" + rules: + - include: "patch" diff --git a/config/micro/syntax/git-config.yaml b/config/micro/syntax/git-config.yaml new file mode 100644 index 0000000..9a13b38 --- /dev/null +++ b/config/micro/syntax/git-config.yaml @@ -0,0 +1,14 @@ +filetype: git-config + +detect: + filename: 'git(config|modules)$|^(.*[\\/])?\.?git[\\/]config$' + +rules: + - constant: "\\<(true|false)\\>" + - type.keyword: "^[[:space:]]*[^=]*=" + - constant: "^[[:space:]]*\\[.*\\]$" + - constant: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - comment: + start: "#" + end: "$" + rules: [] diff --git a/config/micro/syntax/git-rebase-todo.yaml b/config/micro/syntax/git-rebase-todo.yaml new file mode 100644 index 0000000..07c93b6 --- /dev/null +++ b/config/micro/syntax/git-rebase-todo.yaml @@ -0,0 +1,19 @@ +filetype: git-rebase-todo + +detect: + filename: '^(.*[\\/])?git\-rebase\-todo$' + +rules: + # Rebase commands + - statement: "^(p(ick)?|r(eword)?|e(dit)?|s(quash)?|f(ixup)?|x|exec|b(reak)?|d(rop)?|l(abel)?|t|reset|m(erge)?)\\b" + # Commit IDs + - identifier: "\\b([0-9a-fA-F]{7,40})\\b" + + # Color keywords for Github (and others) + - type.keyword: "\\b(?i)((fix(es|ed)?|close(s|d)?) #[0-9]+)\\b" + + # Comments + - comment.line: + start: "^#" + end: "$" + rules: [] diff --git a/config/micro/syntax/gleam.yaml b/config/micro/syntax/gleam.yaml new file mode 100644 index 0000000..52f1b8c --- /dev/null +++ b/config/micro/syntax/gleam.yaml @@ -0,0 +1,69 @@ +filetype: gleam + +detect: + filename: "\\.gleam$" + +rules: + - identifier: "\\b[a-z][a-z0-9_]*\\b" + + - statement: "\\b(as|assert|auto|case|const|delegate|derive|echo|else|fn|if|implement|import|let|macro|opaque|panic|pub|test|todo|type|use)\\b" + + - type: "\\b[A-Z][a-zA-Z0-9_]*\\b" + + - type: "\\b(Int|Float|String|Bool|List|Option|Result|BitArray)\\b" + + - constant: "\\b(True|False|Nil)\\b" + + - preproc: "@[a-z][a-z_]*" + + - statement: "(\\|>|->|<-)" + - statement: "(\\.\\.|<>)" + - statement: "(==|!=|<=\\.|>=\\.|<\\.|>\\.|<=|>=)" + - statement: "(&&|\\|\\|)" + - statement: "(\\+\\.|-\\.|\\*\\.|/\\.|\\+|-|\\*|/|%)" + - statement: "(=|<|>|!|<<|>>)" + + - constant.number: "\\b0b[01](_?[01])*\\b" + - constant.number: "\\b0o[0-7](_?[0-7])*\\b" + - constant.number: "\\b0x[0-9a-fA-F](_?[0-9a-fA-F])*\\b" + - constant.number: "\\b[0-9](_?[0-9])*(\\.[0-9](_?[0-9])*)?([eE][+-]?[0-9](_?[0-9])*)?\\b" + + - default: + start: "#\\(" + end: "\\)" + limit-group: special + rules: + - identifier: "\\b[a-z][a-z0-9_]*\\b" + - statement: "\\b(as|assert|auto|case|const|delegate|derive|echo|else|fn|if|implement|import|let|macro|opaque|panic|pub|test|todo|type|use)\\b" + - type: "\\b[A-Z][a-zA-Z0-9_]*\\b" + - type: "\\b(Int|Float|String|Bool|List|Option|Result|BitArray)\\b" + - constant: "\\b(True|False|Nil)\\b" + - statement: "(\\|>|->|<-)" + - statement: "(\\.\\.|<>)" + - statement: "(==|!=|<=\\.|>=\\.|<\\.|>\\.|<=|>=)" + - statement: "(&&|\\|\\|)" + - statement: "(\\+\\.|-\\.|\\*\\.|/\\.|\\+|-|\\*|/|%)" + - statement: "(=|<|>|!|<<|>>)" + - constant.number: "\\b0b[01](_?[01])*\\b" + - constant.number: "\\b0o[0-7](_?[0-7])*\\b" + - constant.number: "\\b0x[0-9a-fA-F](_?[0-9a-fA-F])*\\b" + - constant.number: "\\b[0-9](_?[0-9])*(\\.[0-9](_?[0-9])*)?([eE][+-]?[0-9](_?[0-9])*)?\\b" + - constant.string: + start: '"' + end: '"' + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: '"' + end: '"' + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|FIXME|XXX):?" diff --git a/config/micro/syntax/glsl.yaml b/config/micro/syntax/glsl.yaml new file mode 100644 index 0000000..79063bd --- /dev/null +++ b/config/micro/syntax/glsl.yaml @@ -0,0 +1,26 @@ +filetype: glsl + +detect: + filename: "\\.(frag|vert|fp|vp|glsl)$" + +rules: + - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[()]" + - type: "\\b(void|bool|bvec2|bvec3|bvec4|int|ivec2|ivec3|ivec4|float|vec2|vec3|vec4|mat2|mat3|mat4|struct|sampler1D|sampler2D|sampler3D|samplerCUBE|sampler1DShadow|sampler2DShadow)\\b" + - identifier: "\\bgl_(DepthRangeParameters|PointParameters|MaterialParameters|LightSourceParameters|LightModelParameters|LightModelProducts|LightProducts|FogParameters)\\b" + - statement: "\\b(const|attribute|varying|uniform|in|out|inout|if|else|return|discard|while|for|do)\\b" + - statement: "\\b(break|continue)\\b" + - constant.bool: "\\b(true|false)\\b" + - symbol.operator: "[-+/*=<>?:!~%&|^]" + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b" + + - comment: + start: "//" + end: "$" + rules: + - todo: "TODO:?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "TODO:?" diff --git a/config/micro/syntax/gnuplot.yaml b/config/micro/syntax/gnuplot.yaml new file mode 100644 index 0000000..fa21183 --- /dev/null +++ b/config/micro/syntax/gnuplot.yaml @@ -0,0 +1,15 @@ +filetype: gnuplot + +detect: + filename: "\\.(gnu|gpi|plt|gp)$" + +rules: + - statement: "\\b(set|unset|plot|splot|replot|if|else|do|for|while|fit)\\b" + - symbol.operator: "[-+/*=<>?:!~%&|^$]" + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b" + + - comment: + start: "#" + end: "$" + rules: + - todo: "TODO:?" diff --git a/config/micro/syntax/go.yaml b/config/micro/syntax/go.yaml new file mode 100644 index 0000000..3885c7b --- /dev/null +++ b/config/micro/syntax/go.yaml @@ -0,0 +1,62 @@ +filetype: go + +detect: + filename: "\\.go$" + +rules: + # Conditionals and control flow + - special: "\\b(break|case|continue|default|go|goto|range|return|println|fallthrough)\\b" + - statement: "\\b(else|for|if|switch|select)\\b" + - preproc: "\\b(package|import|const|var|type|struct|func|defer|iota|make|new|copy|len|cap|panic|append|close|delete|print|recover)\\b" + - symbol.operator: "[-+/*=<>!~%&|^]|:=" + + # Types + - symbol: "(,|\\.)" + - type: "\\b(u?int(8|16|32|64)?|float(32|64)|complex(64|128))\\b" + - type: "\\b(uintptr|byte|rune|string|interface|bool|map|chan|error)\\b" + - type.keyword: "\\b(struct)\\b" + - constant.bool: "\\b(true|false|nil)\\b" + + # Brackets + - symbol.brackets: "(\\{|\\})" + - symbol.brackets: "(\\(|\\))" + - symbol.brackets: "(\\[|\\])" + + # Numbers and strings + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "`" + end: "`" + rules: [] + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/godoc.yaml b/config/micro/syntax/godoc.yaml new file mode 100644 index 0000000..383f309 --- /dev/null +++ b/config/micro/syntax/godoc.yaml @@ -0,0 +1,17 @@ +# godoc +# example: go doc -all | micro + +filetype: godoc + +detect: + filename: "\\.godoc$" + header: package.*import + +rules: + - preproc: "^[^ ].*" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/golo.yaml b/config/micro/syntax/golo.yaml new file mode 100644 index 0000000..54e0527 --- /dev/null +++ b/config/micro/syntax/golo.yaml @@ -0,0 +1,73 @@ +filetype: golo + +detect: + filename: "\\.golo$" + +rules: + - type: "\\b(function|fun|)\\b" + - type: "\\b(struct|DynamicObject|union|AdapterFabric|Adapter|DynamicVariable|Observable)\\b" + - type: "\\b(list|set|array|vector|tuple|map)\\b" + - type: "\\b(Ok|Error|Empty|None|Some|Option|Result|Result.ok|Result.fail|Result.error|Result.empty|Optional.empty|Optional.of)\\b" + + - identifier.class: "\\b(augment|pimp)\\b" + - identifier.class: "\\b(interfaces|implements|extends|overrides|maker|newInstance)\\b" + - identifier.class: "\\b(isEmpty|isNone|isPresent|isSome|iterator|flattened|toList|flatMap|`and|orElseGet|`or|toResult|apply|either)\\b" + - identifier.class: "\\b(result|option|trying|raising|nullify|catching)\\b" + - identifier.class: "\\b(promise|setFuture|failedFuture|all|any)\\b" + - identifier.class: "\\b(initialize|initializeWithinThread|start|future|fallbackTo|onSet|onFail|cancel|enqueue)\\b" + - identifier.class: "\\b(println|print|raise|readln|readPassword|secureReadPassword|requireNotNull|require|newTypedArray|range|reversedRange|mapEntry|asInterfaceInstance|asFunctionalInterface|isClosure|fileToText|textToFile|fileExists|currentDir|sleep|uuid|isArray|arrayTypeOf|charValue|intValue|longValue|doubleValue|floatValue|removeByIndex|box)\\b" + - identifier.class: "\\b(likelySupported|reset|bold|underscore|blink|reverse_video|concealed|fg_black|fg_red|fg_green|fg_yellow|fg_blue|fg_magenta|fg_cyan|fg_white|bg_black|bg_red|bg_green|bg_yellow|bg_blue|bg_magenta|bg_cyan|bg_white|cursor_position|cursor_save_position|cursor_restore_position|cursor_up|cursor_down|cursor_forward|cursor_backward|erase_display|erase_line)\\b" + - identifier.class: "\\b(emptyList|cons|lazyList|fromIter|generator|repeat|iterate)\\b" + - identifier.class: "\\b(asLazyList|foldl|foldr|take|takeWhile|drop|dropWhile|subList)\\b" + - identifier.class: "\\b(import)\\b" + - identifier.class: "\\b(module)\\b" + - identifier.class: "\\b(JSON)\\b" + - identifier.class: "\\b(stringify|parse|toJSON|toDynamicObject|updateFromJSON)\\b" + - identifier.class: "\\b(newInstance|define|getKey|getValue|properties|fallback)\\b" + - identifier.class: "\\b(times|upTo|downTo)\\b" + - identifier.class: "\\b(format|toInt|toInteger|toDouble|toFloat|toLong)\\b" + - identifier.class: "\\b(head|tail|isEmpty|reduce|each|count|exists)\\b" + - identifier.class: "\\b(newWithSameType|destruct|append|add|addIfAbsent|prepend|insert|last|unmodifiableView|find|filter|map|join|reverse|reversed|order|ordered|removeAt|include|exclude|remove|delete|has|contains|getOrElse|toArray)\\b" + - identifier.class: "\\b(add|addTo|succ|pred|mul|neg|sub|rsub|div|rdiv|mod|rmod|pow|rpow|str|lt|gt|eq|ne|ge|le|`and|`or|`not|xor|even|odd|contains|isEmpty|`is|`isnt|`oftype|`orIfNull|fst|snd|getitem|setitem|getter|id|const|False|True|Null|curry|uncurry|unary|spreader|varargs|swapArgs|swapCurry|swapCouple|swap|invokeWith|pipe|compose|io|andThen|until|recur|cond)\\b" + - identifier.class: "\\b(toUpperCase|equals|startsWith)\\b" + + - statement: "\\b(if|else|then|when|case|match|otherwise)\\b" + - special: "\\b(with|break|continue|return)\\b" + - error: "\\b(try|catch|finally|throw)\\b" + - identifier: "\\b(super|this|let|var|local)\\b" + - symbol.brackets: "[(){}]|\\[|\\]" + - statement: "\\b(for|while|foreach|in)\\b" + - constant: "\\b(and|in|is|not|or|isnt|orIfNull)\\b" + + - constant.bool: "\\b(true|false)\\b" + - constant: "\\b(null|undefined)\\b" + + - symbol.operator: "[\\-+/*=<>!~%&|^]|:=" + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "----" + end: "----" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/gomod.yaml b/config/micro/syntax/gomod.yaml new file mode 100644 index 0000000..5f2b7c6 --- /dev/null +++ b/config/micro/syntax/gomod.yaml @@ -0,0 +1,31 @@ +filetype: gomod + +detect: + filename: "go.mod" + +rules: + # URL + - type: "(^|[ \\t])+\\b([a-zA-Z0-9-]+\\.?)+(/[a-zA-Z0-9-_\\.]+)*\\b" + + # Keywords + - special: "(^|[ \\t])+\\b(module|go)\\b" + - preproc: "(^|[ \\t])+\\b(toolchain|require|exclude|replace|retract)\\b" + - symbol.operator: "=>" + + # Brackets + - type: "(\\(|\\))" + + # Go version + - type: "(^|[ \\t])+([0-9]+\\.?)+" + + # Version + - constant.string: "(^|[ \\t])+v([0-9]+\\.?){3}.*" + - constant.number: "(^|[ \\t])+v([0-9]+\\.?){3}" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(indirect):?" + +# (^|[ \\t])+ means after start of string or space or tab character diff --git a/config/micro/syntax/graphql.yaml b/config/micro/syntax/graphql.yaml new file mode 100644 index 0000000..d96abec --- /dev/null +++ b/config/micro/syntax/graphql.yaml @@ -0,0 +1,47 @@ +filetype: graphql + +detect: + filename: "\\.(gql|graphql)$" + +rules: + - type: "\\b(?:(query|mutation|subscription|type|input|scalar|fragment|schema|union|on|extends?))\\b" + + # scalar types + - statement: "\\b(ID|Int|Float|Boolean|String|Datetime|Null)\\b" + + # introspection types + - statement: "(__\\w+)" + + # parameters + - statement: "((\\w+)(?:\\:([\\s]*)?)(?:\\$))" + + # directive locations + - statement: "\\b(QUERY|MUTATION|SUBSCRIPTION|FIELD|FRAGMENT_DEFINITION|FRAGMENT_SPREAD|INLINE_FRAGMENT|SCHEMA|SCALAR|OBJECT|FIELD_DEFINITION|ARGUMENT_DEFINITION|INTERFACE|UNION|ENUM|ENUM_VALUE|INPUT_OBJECT|INPUT_FIELD_DEFINITION)\\b" + + # directives + - constant: "(@\\w+)" + + # root types + - constant: "\\b(Query|Mutation|Subscription|Schema|Root)\\b" + + # variables + - special: "(\\$\\w+)" + + # required symbol + - special: "(!)" + + - symbol: "(:|=|\\||\\(|\\)|\\{|\\}|\\[|\\])" + + - constant.bool: "\\b(true|false)\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: [] diff --git a/config/micro/syntax/groff.yaml b/config/micro/syntax/groff.yaml new file mode 100644 index 0000000..3eaea1f --- /dev/null +++ b/config/micro/syntax/groff.yaml @@ -0,0 +1,30 @@ +filetype: groff + +detect: + filename: "\\.m[ems]$|\\.rof|\\.tmac$|^tmac." + +rules: + - statement: "^\\.(ds|nr) [^[[:space:]]]*" + - constant.specialChar: "\\\\." + - constant.specialChar: "\\\\f.|\\\\f\\(..|\\\\s(\\+|\\-)?[0-9]" + - constant: "(\\\\|\\\\\\\\)n(.|\\(..)" + - constant: + start: "(\\\\|\\\\\\\\)n\\[" + end: "]" + rules: [] + + - type: "^\\.[[:space:]]*[^[[:space:]]]*" + - comment: "^\\.\\\\\".*$" + - constant.string: "(\\\\|\\\\\\\\)\\*(.|\\(..)" + - constant.string: + start: "(\\\\|\\\\\\\\)\\*\\[" + end: "]" + rules: [] + + - constant.specialChar: "\\\\\\(.." + - constant.specialChar: + start: "\\\\\\[" + end: "]" + rules: [] + + - identifier.macro: "\\\\\\\\\\$[1-9]" diff --git a/config/micro/syntax/groovy.yaml b/config/micro/syntax/groovy.yaml new file mode 100644 index 0000000..1830f8b --- /dev/null +++ b/config/micro/syntax/groovy.yaml @@ -0,0 +1,111 @@ +filetype: groovy + +detect: + filename: "(\\.(groovy|gy|gvy|gsh|gradle)$|^[Jj]enkinsfile$)" + header: "^#!.*/(env +)?groovy *$" + +rules: + # And the style guide for constants is CONSTANT_CASE + - identifier: "\\b[A-Z_$]+\\b" + # The style guide for JVM languages is PascalCase for classes and interfaces + - identifier.class: "\\b[A-Z][a-zA-Z0-9$]+\\b" + + # Primitive types + - type: "\\b(byte|short|int|long|float|double|char|boolean|void)\\b" + + # Type-related keywords + - type.keyword: "\\b(private|public|protected|static|final|var|def)\\b" + + # Keywords + - statement: "\\b(for|while|do|if|else|switch|case|default|try|catch|finally)\\b" + - statement: "\\b(break|continue|return|throw|assert)\\b" + - statement: "\\b(package|import|class|interface|trait|enum|extends|implements|throws)\\b" + - statement: "\\b(this|super)\\b" + # Unsused, but reserved keywords + - statement: "\\b(goto|const)\\b" + + # Operators and punctuation + - symbol.operator: "[-+*/%=<>^~&|!?:;,.@]|\\b(in|is|as|instanceof|new)\\b" + - symbol.brackets: "[(){}]|\\[|\\]" + + # Decimal integer literal + - constant.number: "(?i)\\b[1-9]([_0-9]*[0-9])?[GLIDF]?\\b" + # Binary integer literal + - constant.number: "(?i)\\b0b[01]([01_]*[01])?[GLIDF]?\\b" + # Octal integer literal + - constant.number: "(?i)\\b0[0-7]([0-7_]*[0-7])?[GLIDF]?\\b" + # Hexadecimal integer literal + - constant.number: "(?i)\\b0x[0-9a-fA-F]([0-9a-f_]*[0-9a-fA-F])?[GLIDF]?\\b" + # Floating-point literal + - constant.number: "(?i)\\b[0-9]([0-9_]*[0-9])?([.][0-9]([0-9_]*[0-9])?)?(e[+-]?[0-9]([0-9_]*[0-9])?)?[DF]?\\b" + - constant.bool: "\\b(true|false|null)\\b" + + # Annotations + - identifier: "@[A-Za-z_$][A-Za-z0-9_$]*\\b" + + # Triple-double-quoted strings + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})" + - identifier.var: "\\x24[\\w\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+([.][a-zA-Z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+)*" + - identifier: + start: "[$][{]" + end: "[}]" + rules: [] + + # Triple-single-quoted strings + - constant.string: + start: "'''" + end: "'''" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})" + + # Nesting ${} are never going to be matched correctly with just regex either, so highlighting will break if one is to nest interpolation + # Double-quoted strings + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})" + - identifier.var: "\\x24[\\w\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+([.][a-zA-Z0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE]+)*" + - identifier: "\\x24[{].*[}]" + + # Single-quoted strings + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'bfnrst\\x24\\\\]|u[a-fA-F0-9]{4})" + + # Slashy strings are left out, because they match in unwanted places pretty much all the time + # Dollar-slashy strings + - constant.string: + start: "[$]/" + end: "/[$]" + rules: [] + + # Single-line comments + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + # Multiline comments + - comment: + start: "/[*]" + end: "[*]/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + # Groovydoc comments + - comment: + start: "/[*][*]@?" + end: "[*]/" + rules: [] diff --git a/config/micro/syntax/haml.yaml b/config/micro/syntax/haml.yaml new file mode 100644 index 0000000..f15fe28 --- /dev/null +++ b/config/micro/syntax/haml.yaml @@ -0,0 +1,16 @@ +filetype: haml + +detect: + filename: "\\.haml$" + +rules: + - symbol: "-|=" + - default: "->|=>" + - constant: "([ ]|^)%[0-9A-Za-z_]+>" + - special: ":[0-9A-Za-z_]+>" + - type: "\\.[A-Za-z_]+>" + - constant.string: "\"([^\"]|(\\\\\"))*\"|%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - constant.string: "'([^']|(\\\\'))*'|%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + - identifier: "#\\{[^}]*\\}" + - identifier.var: "(@|@@)[0-9A-Z_a-z]+" + - comment: "#[^{].*$|#$" diff --git a/config/micro/syntax/hare.yaml b/config/micro/syntax/hare.yaml new file mode 100644 index 0000000..081831d --- /dev/null +++ b/config/micro/syntax/hare.yaml @@ -0,0 +1,52 @@ +filetype: hare + +detect: + filename: "\\.ha$" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + + - type: "\\b(bool|char|str|rune|void)\\b" + - type: "\\b(f32|f64|uint|int|u8|u16|u32|u64|i8|i16|i32|i64|uintptr)\\b" + + - statement: "\\b(case|else|for|if|switch)\\b" + - statement: "\\b(continue|break|return)\\b" + + - special: "\\b(as|const|def|defer|enum|export|fn|is|let|match|static|struct|type|union|yield|_)\\b" + - preproc: "\\b(abort|alloc|append|assert|delete|free|insert|len|nullable|offset|size)\\b" + - preproc: "^use .+;" + - preproc: "\\@([a-zA-Z_][0-9a-zA-Z_]+)\\b" + + - constant: "\\b(false|null|true)\\b" + - constant.number: "\\b(0x[0-9A-Fa-f]+(i(8|16|32|64)?|u(8|16|32|64)?|z)?)\\b" + - constant.number: "\\b(0o[0-7]+(i(8|16|32|64)?|u(8|16|32|64)?|z)?)\\b" + - constant.number: "\\b(0b[01]+(i(8|16|32|64)?|u(8|16|32|64)?|z)?)\\b" + + - constant.specialChar: "\\\".*\\\"" + - constant.specialChar: "`.*`" + - constant.specialChar: "'([^'\\\\]|\\\\(0|a|b|f|n|r|t|v|\\\\|'|\\\"|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}))'" + + - symbol.operator: "([.:;,+*|=!\\%]|<|>|/|-|&)" + - symbol.brackets: "[(){}]|\\[|\\]" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + diff --git a/config/micro/syntax/haskell.yaml b/config/micro/syntax/haskell.yaml new file mode 100644 index 0000000..76d8051 --- /dev/null +++ b/config/micro/syntax/haskell.yaml @@ -0,0 +1,52 @@ +filetype: haskell + +detect: + filename: "\\.hs$" + +rules: + - symbol.operator: "[!#$%&:*+/<=>?@.\\\\^\\|~\\p{Sm}\\-]+" + + # Identifiers (with or without a module name) + - type: "\\b([A-Z][A-Za-z0-9_]*\\.)*[A-Z]+[A-Za-z0-9_']*\\b" + - default: "\\b([A-Z][A-Za-z0-9_]*\\.)*[a-z][A-Za-z0-9_']*\\b" + + - statement: ";" + - symbol.bracket: "[\\(\\)\\[\\]\\{\\}]" + - special: "`[A-Za-z0-9']+`" + + # Keywords + - statement: "\\b(case|of|class|data|default|deriving|do|forall|foreign|hiding|if|then|else|import|infix|infixl|infixr|instance|let|in|mdo|module|newtype|qualified|type|where)\\b" + + # Data constructors + - constant.bool: "\\b(True|False)\\b" + - constant: "\\b(Nothing|Just|Left|Right|LT|EQ|GT)\\b" + + - constant: "\\(\\)" # Unit + - constant.number: "\\b(0[xX][0-9A-Fa-f]+|0[oO][0-7]+|0[bB][01]+|[-]?[0-9]+([.][0-9]+)?([eE][+-]?[0-9]+)?)\\b" + + # Data classes + - identifier.class: "\\b(Additive|Applicative|Bounded|Data|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|MonadPlus|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Semigroup|Show|Traversable|Typeable|Zip)[ ]" + + # Strings + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - special: "\\\\&" + - constant.specialChar: "\\\\([abfnrtv\"'\\\\]|[0-9]+|x[0-9a-fA-F]+|o[0-7]+|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC[1-4]|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL)" + + # Comments + - comment: + start: "--" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "\\{-" + end: "-\\}" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - identifier.macro: "undefined" diff --git a/config/micro/syntax/hc.yaml b/config/micro/syntax/hc.yaml new file mode 100644 index 0000000..9b94b0c --- /dev/null +++ b/config/micro/syntax/hc.yaml @@ -0,0 +1,52 @@ +filetype: hc + +detect: + filename: "(\\.(hc|HC)$|\\.(hh|HH)$|\\.ii?$|\\.(def)$)" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + - type: "\\b(F64|I8|U8|I16|U16|I32|U32|I64|U64|sizeof|enum|U0|static|extern|struct|union|class|intern|public|argc|argv|asm)\\b" + + - statement: "\\b(for|if|while|do|else|case|default|switch)\\b" + - statement: "\\b(try|catch|throw|goto|continue|break|return)\\b" + - preproc: "^[[:space:]]*#[[:space:]]*(define|pragma|include|(un|ifn?)def|endif|el(if|se)|if|help_index|ifjit|ifaot|exe)" + + # Operator Color + - symbol.operator: "([.:;,+*|=!\\%]|<|>|/|-|&)" + - symbol.brackets: "[(){}]|\\[|\\]" + # Integer Constants + - constant.number: "(\\b([1-9][0-9]*|0[0-7]*|0[Xx][0-9A-Fa-f]+|0[Bb][01]+)([Uu]?[Ll][Ll]?|[Ll][Ll]?[Uu]?)?\\b)" + # Decimal Floating Constants + - constant.number: "(\\b(([0-9]*[.][0-9]+|[0-9]+[.][0-9]*)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)[FfLl]?\\b)" + # Hexadecimal Floating Constants + - constant.number: "(\\b0[Xx]([0-9A-Za-z]*[.][0-9A-Za-z]+|[0-9A-Za-z]+[.][0-9A-Za-z]*)[Pp][+-]?[0-9]+[FfLl]?\\b)" + - constant.number: "NULL" + - constant.number: "TRUE" + - constant.number: "FALSE" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/html.yaml b/config/micro/syntax/html.yaml new file mode 100644 index 0000000..d32339e --- /dev/null +++ b/config/micro/syntax/html.yaml @@ -0,0 +1,70 @@ +filetype: html + +detect: + filename: "\\.htm[l]?$" + +rules: + # Doctype is case-insensitive + - preproc: "" + # Opening tag + - symbol.tag: + start: "<(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|main|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|section|select|small|source|span|strike|strong|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr)\\b" + end: ">" + rules: + - identifier: "\\b(placeholder|style|alt|bgcolor|height|href|id|(aria|data)\\-.+|label|longdesc|name|on(click|focus|load|mouseover)|size|span|src|target|type|value|width|class|charset|content|rel|integrity|crossorigin|for|onsubmit|lang|role)\\b" + - special: "\\b(required)\\b" + # Match double-quote strings + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string.url: "((ftp(s)?|http(s)?|git|chrome)://[^\\s]+)" + # Match single-quote strings + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string.url: "((ftp(s)?|http(s)?|git|chrome)://[^\\s]+)" + # Highlight the equals and any colon between words + - symbol: "\\b(=|:\\b)" + + # Closing tag + - symbol.tag: + start: "" + rules: + # Anything in the closing tag is an error + - error: "." + + # Reserved entities like a   and Ī + - special: "(([a-zA-Z]&#[0-9]+|&[a-zA-Z]+|&#[a-zA-Z0-9]+);)" + + # TODO: Add `limit-rules` to both the `default` rules below once it's implemented into Micro + - default: + start: "" + end: "" + limit-group: symbol.tag + rules: + - include: "javascript" + + - default: + start: "" + end: "" + limit-group: symbol.tag + rules: + - include: "css" + + # This weird empty comment thing is technically valid + - comment: "" + + - comment.block: + start: "" + rules: + - todo: "(FIXME|NOTE|TODO):?" + # While technically not a "true" error, these are recommended to not be used inside a comment + - error: "(\\-\\-|>)" diff --git a/config/micro/syntax/html4.yaml b/config/micro/syntax/html4.yaml new file mode 100644 index 0000000..c132d61 --- /dev/null +++ b/config/micro/syntax/html4.yaml @@ -0,0 +1,25 @@ +filetype: html4 + +detect: + filename: "\\.htm[l]?4$" + header: "" + +rules: + - error: "<[^!].*?>" + - symbol.tag: "(?i)<[/]?(a(bbr|cronym|ddress|pplet|rea|rticle|side|udio)?|b(ase(font)?|d(i|o)|ig|lockquote|r)?|ca(nvas|ption)|center|cite|co(de|l|lgroup)|d(ata(list)?|d|el|etails|fn|ialog|ir|l|t)|em(bed)?|fieldset|fig(caption|ure)|font|form|(i)?frame|frameset|h[1-6]|hr|i|img|in(put|s)|kbd|keygen|label|legend|li(nk)?|ma(in|p|rk)|menu(item)?|met(a|er)|nav|no(frames|script)|o(l|pt(group|ion)|utput)|p(aram|icture|re|rogress)?|q|r(p|t|uby)|s(trike)?|samp|se(ction|lect)|small|source|span|strong|su(b|p|mmary)|textarea|time|track|u(l)?|var|video|wbr)( .*|>)*?>" + - symbol.tag.extended: "(?i)<[/]?(body|div|html|head(er)?|footer|title|table|t(body|d|h(ead)?|r|foot))( .*)*?>" + - preproc: "(?i)<[/]?(script|style)( .*)*?>" + - special: "&[^;[[:space:]]]*;" + - symbol: "[:=]" + - identifier: "(alt|bgcolor|height|href|id|label|longdesc|name|on(click|focus|load|mouseover)|size|span|src|style|target|type|value|width)=" + - constant.string: "\"[^\"]*\"" + - constant.number: "(?i)#[0-9a-fA-F]{6,6}" + - default: + start: ">" + end: "<" + rules: [] + + - symbol.tag: "<|>" + - constant.string.url: "(ftp(s)?|http(s)?|git|chrome)://[^ ]+" + - comment: "" + - preproc: "" diff --git a/config/micro/syntax/html5.yaml b/config/micro/syntax/html5.yaml new file mode 100644 index 0000000..411d538 --- /dev/null +++ b/config/micro/syntax/html5.yaml @@ -0,0 +1,25 @@ +filetype: html5 + +detect: + filename: "\\.htm[l]?5$" + header: "" + +rules: + - error: "<[^!].*?>" + - symbol.tag: "(?i)<[/]?(a|a(bbr|ddress|rea|rticle|side|udio)|b|b(ase|d(i|o)|lockquote|r|utton)|ca(nvas|ption)|center|cite|co(de|l|lgroup)|d(ata|atalist|d|el|etails|fn|ialog|l|t)|em|embed|fieldset|fig(caption|ure)|form|iframe|h[1-6]|hr|i|img|in(put|s)|kbd|keygen|label|legend|li|link|ma(in|p|rk)|menu|menuitem|met(a|er)|nav|noscript|o(bject|l|pt(group|ion)|utput)|p|param|picture|pre|progress|q|r(p|t|uby)|s|samp|se(ction|lect)|small|source|span|strong|su(b|p|mmary)|textarea|time|track|u|ul|var|video|wbr)( .*)*?>" + - symbol.tag.extended: "(?i)<[/]?(body|div|html|head(er)?|footer|title|table|t(body|d|h(ead)?|r|foot))( .*)*?>" + - preproc: "(?i)<[/]?(script|style)( .*)*?>" + - special: "&[^;[[:space:]]]*;" + - symbol: "[:=]" + - identifier: "(alt|bgcolor|height|href|id|label|longdesc|name|on(click|focus|load|mouseover)|size|span|src|style|target|type|value|width)=" + - constant.string: "\"[^\"]*\"" + - constant.number: "(?i)#[0-9a-fA-F]{6,6}" + - default: + start: ">" + end: "<" + rules: [] + + - symbol.tag: "<|>" + - constant.string.url: "(ftp(s)?|http(s)?|git|chrome)://[^ ]+" + - comment: "" + - preproc: "" diff --git a/config/micro/syntax/ini.yaml b/config/micro/syntax/ini.yaml new file mode 100644 index 0000000..902d66a --- /dev/null +++ b/config/micro/syntax/ini.yaml @@ -0,0 +1,23 @@ +filetype: ini + +detect: + filename: "\\.(ini|desktop|lfl|override|tscn|tres)$|(mimeapps\\.list|pinforc|setup\\.cfg|project\\.godot)$|weechat/.+\\.conf$" + +rules: + - constant.bool.true: "\\btrue\\b" + - constant.bool.false: "\\bfalse\\b" + - identifier: "^[[:space:]]*[^=]*=" + - special: "^[[:space:]]*\\[.*\\]$" + - statement: "[=;]" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + - comment: + start: ";" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/inputrc.yaml b/config/micro/syntax/inputrc.yaml new file mode 100644 index 0000000..fb8ed06 --- /dev/null +++ b/config/micro/syntax/inputrc.yaml @@ -0,0 +1,14 @@ +filetype: inputrc + +detect: + filename: "inputrc$" + +rules: + - constant.bool.false: "\\b(off|none)\\b" + - constant.bool.true: "\\bon\\b" + - preproc: "\\bset|\\$include\\b" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - constant.specialChar: "\\\\.?" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/java.yaml b/config/micro/syntax/java.yaml new file mode 100644 index 0000000..8d298b9 --- /dev/null +++ b/config/micro/syntax/java.yaml @@ -0,0 +1,37 @@ +filetype: java + +detect: + filename: "\\.java$" + +rules: + - type: "\\b(boolean|byte|char|double|float|int|long|new|var|short|this|transient|void)\\b" + - statement: "\\b(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\\b" + - type: "\\b(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\\b" + - constant: "\\b(true|false|null)\\b" + - constant.number: "\\b[0-9]+\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - preproc: "..+" + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: [] + + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + diff --git a/config/micro/syntax/javascript.yaml b/config/micro/syntax/javascript.yaml new file mode 100644 index 0000000..dcf7442 --- /dev/null +++ b/config/micro/syntax/javascript.yaml @@ -0,0 +1,76 @@ +filetype: javascript + +detect: + filename: "(\\.(m|c)?js$|\\.es[5678]?$)" + header: "^#!.*/(env +)?node( |$)" + +rules: + - constant.number: "\\b[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\\b" + - constant.number: "\\b[-+]?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" + - constant.number: "\\b[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" + #- identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" + # ^ this is not correct usage of the identifier color + - symbol.brackets: "[(){}]|\\[|\\]" + - symbol.operator: "([-+/*=<>!~%?:&|]|[.]{3})" + - statement: "\\b(async|await|break|case|catch|const|continue|debugger|default)\\b" + - statement: "\\b(delete|do|else|export|finally|for|function\\*?|class|extends)\\b" + - statement: "\\b(get|if|import|from|in|of|instanceof|let|new|reject|resolve|return)\\b" + - statement: "\\b(set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b" + # reserved but unassigned + - error: "\\b(enum|implements|interface|package|private|protected|public)\\b" + - constant: "\\b(globalThis|Infinity|null|undefined|NaN)\\b" + - constant: "\\b(null|undefined|NaN)\\b" + - constant: "\\b(true|false)\\b" + - type: "\\b(Array|Boolean|Date|Enumerator|Error|Function|Generator|Map|Math)\\b" + - type: "\\b(Number|Object|Promise|Proxy|Reflect|RegExp|Set|String|Symbol|WeakMap|WeakSet)\\b" + - type: "\\b(BigInt64Array|BigUint64Array|Float32Array|Float64Array|Int16Array)\\b" + + # - constant: "/[^*]([^/]|(\\\\/))*[^\\\\]/[gim]*" + - constant: "\\\\[0-7][0-7]?[0-7]?|\\\\x[0-9a-fA-F]+|\\\\[bfnrt'\"\\?\\\\]" + - comment: "^#!.*/(env +)?node( |$)" + + - identifier: "\\b(alert|decodeURI|decodeURIComponent|document|encodeURI|encodeURIComponent|escape|eval|isFinite|isNaN|parseFloat|parseInt|unescape|uneval|window)\\b" + - identifier: "\\b(Intl|WebAssembly)\\b" + - identifier: "\\b(Arguments)\\b" + + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "`" + end: "`" + rules: + - constant.specialChar: "\\\\." + - identifier: "\\x24\\{.*?\\}" + + - constant.bool: "\\b(true|false)\\b" + - constant.bool.false: "\\b(false)\\b" + - constant.bool.true: "\\b(true)\\b" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME)" + + - comment: + start: "/\\*" + end: "\\*/" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + # function documentation + - identifier: "\\s\\*\\s.*" + - todo: "(TODO|XXX|FIXME)" diff --git a/config/micro/syntax/jinja2.yaml b/config/micro/syntax/jinja2.yaml new file mode 100644 index 0000000..5579ccd --- /dev/null +++ b/config/micro/syntax/jinja2.yaml @@ -0,0 +1,19 @@ +filetype: jinja2 + +rules: + - include: "html" + - special: "({{|}}|{%-?|-?%})" + - default: + start: "({%-?|{{)" + end: "(-?%}|}})" + limit-group: special + rules: + - include: "python" + - statement: "\\b(ignore missing|with(out)? context|block|call|endblock|endcall|endfilter|endfor|endmacro|endraw|endset|extends|filter|for|include|macro|raw|recursive|scoped|set)\\b" + - identifier.builtinfunc: "\\b(attr|batch|capitalize|center|count|d|default|dictsort|e|escape|filesizeformat|first|forceescape|groupby|indent|join|last|length|lower|pprint|random|reject|rejectattr|replace|reverse|safe|select|selectattr|striptags|title|tojson|trim|truncate|unique|upper|urlencode|urlize|wordcount|wordwrap|xmlattr)\\b" + - identifier.builtintest: "\\b(callable|defined|divisibleby|eq|equalto|escaped|even|ge|gt|iterable|le|lower|lt|mapping|ne|none|number|odd|sameas|sequence|string|undefined|upper)\\b" + - identifier.defaultglobal: "\\b(lipsum|cycler|joiner|namespace)\\b" + - comment: + start: "{#" + end: "#}" + rules: [] diff --git a/config/micro/syntax/json.yaml b/config/micro/syntax/json.yaml new file mode 100644 index 0000000..f69a304 --- /dev/null +++ b/config/micro/syntax/json.yaml @@ -0,0 +1,39 @@ +filetype: json + +detect: + filename: "\\.json$" + header: "^\\{$" + +rules: + - constant.number: "\\b[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\\b" + - constant.number: "\\b[-+]?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" + - constant.number: "\\b[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" + - constant: "\\b(null)\\b" + - constant: "\\b(true|false)\\b" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - statement: "\\\"(\\\\\"|[^\"])*\\\"[[:space:]]*:\" \"'(\\'|[^'])*'[[:space:]]*:" + - constant: "\\\\u[0-9a-fA-F]{4}|\\\\[bfnrt'\"/\\\\]" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/jsonnet.yaml b/config/micro/syntax/jsonnet.yaml new file mode 100644 index 0000000..928b78d --- /dev/null +++ b/config/micro/syntax/jsonnet.yaml @@ -0,0 +1,92 @@ +filetype: jsonnet + +detect: + filename: "\\.jsonnet$" + +# Spec: https://jsonnet.org/ref/spec.html + +rules: + # built-in objects + # FIXME: $ won't match + - constant: "\\b(self|\\$|super)\\b" + # boolean constants + - constant.bool: "\\b(null|true|false)\\b" + # the standard library + - identifier: "\\bstd\\.(extVar|thisFile|type|length|objectHas|objectFields|objectHasAll|objectFieldsAll|prune|mapWithKey|abs|sign|max|min|pow|exp|log|exponent|mantissa|floor|ceil|sqrt|sin|cos|tan|asin|acos|atan|mod|assertEqual|toString|codepoint|char|substr|findSubstr|startsWith|endsWith|split|splitLimit|strReplace|asciiUpper|asciiLower|stringChars|format|escapeStringDollars|escapeStringPython|parseInt|parseOctal|parseHex|parseJson|encodeUTF8|decodeUTF8|manifestIni|manifestPython|manifestPythonVars|manifestJsonEx|manifestYamlDoc|manifestYamlStream|manifestXmlJsonml|makeArray|count|find|map|mapWithIndex|filterMap|filter|foldl|foldr|range|join|lines|flattenArrays|sort|uniq|set|setInter|setUnion|setDiff|setMember|base64|base64DecodeBytes|base64Decode|md5|mergePatch|trace)\\b" + # unquoted object keys + - type: "[_a-zA-Z][_a-zA-Z0-9]*\\s*:" + # object key separator + - statement: ":" + # keywords + - statement: "\\b(assert|else|error|for|function|if|import|importstr|in|local|tailstrict|then)\\b" + # operators + - symbol.operator: "([.;,+*|=!\\%]|<|>|/|-|&)" + # parentheses + - symbol.brackets: "([(){}]|\\[|\\])" + # numbers + - constant.number: "\\b(0|([1-9][0-9]*))(\\.[0-9]+)?([eE][\\+-]?[0-9]+)?\\b" + + # double-quoted string + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\\"" + rules: + - constant.specialChar: "\\\\u[0-9a-fA-F]{4}|\\\\[bfnrt'\"/\\\\]" + + # single-quoted string + - constant.string: + start: "'" + end: "'" + skip: "\\\\'" + rules: + - constant.specialChar: "\\\\u[0-9a-fA-F]{4}|\\\\[bfnrt'\"/\\\\]" + + # double-quoted verbatim string + - constant.string: + start: "@\"" + end: "\"" + skip: "\\\\\"" + rules: + - constant.specialChar: "\\\\\"" + + # single-quoted verbatim string + - constant.string: + start: "@'" + end: "'" + skip: "\\\\'" + rules: + - constant.specialChar: "\\\\'" + + # block string + - constant.string: + # FIXME: + # This isn't quite right. + # The spec says this: + + # beginning with |||, followed by optional whitespace and a new-line. + # The next non-blank line must be prefixed with some non-zero length + # whitespace W. The block ends at the first subsequent line that does + # not begin with W, and it is an error if this line does not contain + # some optional whitespace followed by |||. + + # We need to match ^(\s+) on the first non-blank line after ||| + # Then we need to skip ^\1.*$ + + start: "\\|\\|\\| *$" + end: "^ *\\|\\|\\|" + rules: [] + + # multi-line comment + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + # single-line comment + - comment: + start: "#|(//)" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/julia.yaml b/config/micro/syntax/julia.yaml new file mode 100644 index 0000000..6555032 --- /dev/null +++ b/config/micro/syntax/julia.yaml @@ -0,0 +1,57 @@ +filetype: julia + +detect: + filename: "\\.jl$" + header: "^#!.*/(env +)?julia( |$)" + +rules: + + # built-in objects + - constant.bool: "\\b(true|false)\\b" + - constant: "\\b(nothing|missing)\\b" + # built-in attributes + - constant: "__[A-Za-z0-9_]+__" + # definitions + - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" + # keywords + - statement: "\\b(baremodule|begin|break|catch|const|continue|do|else|elseif|end|export|finally|for|function|global|if|import|let|local|macro|module|public|quote|return|struct|try|using|while)\\b" + - statement: "\\b(abstract\\s+type|primitive\\s+type|mutable\\s+struct)\\b" + # decorators + - identifier.macro: "@[A-Za-z0-9_]+" + # operators + - symbol.operator: "[:+*|=!%~<>/\\-?&\\\\Ć·āˆˆāˆ‰āˆ˜]|\\b(in|isa|where)\\b" + # for some reason having ^ in the same regex with the other operators broke things + - symbol.operator: "\\^" + # parentheses + - symbol.brackets: "([(){}]|\\[|\\])" + # numbers + - constant.number: "\\b([0-9]+(_[0-9]+)*|0x[0-9a-fA-F]+(_[0-9a-fA-F]+)*|0b[01]+(_[01]+)*|0o[0-7]+(_[0-7]+)*|Inf(16|32|64)?|NaN(16|32|64)?)\\b" + + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([\"'abfnrtv\\\\]|[0-3]?[0-7]{1,2}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{1,4}|U[0-9A-Fa-f]{1,8})" + + # Lifted from Rust's syntax highlighting + - constant.string: "'(\\\\.|.)'" + - constant.string: + start: "'\"" + end: "'" + rules: [] + + - comment: + start: "#=" + end: "=#" + rules: [] + + - comment: + start: "#" + end: "$" + rules: [] diff --git a/config/micro/syntax/justfile.yaml b/config/micro/syntax/justfile.yaml new file mode 100644 index 0000000..926edb2 --- /dev/null +++ b/config/micro/syntax/justfile.yaml @@ -0,0 +1,40 @@ +# For more information, see https://github.com/casey/just +filetype: 'justfile' + +detect: + filename: "(^\\.?[Jj]ustfile|\\.just)$" + header: "^#!.*/(env +)?[bg]?just --justfile" + +rules: + - preproc: "\\<(ifeq|ifdef|ifneq|ifndef|else|endif)\\>" + - statement: "^(export|include|override)\\>" + - symbol.operator: "^[^:= ]+:" + - symbol.operator: "([=,%]|\\+=|\\?=|:=|&&|\\|\\|)" + - statement: "\\$\\((abspath|addprefix|addsuffix|and|basename|call|dir)[[:space:]]" + - statement: "\\$\\((error|eval|filter|filter-out|findstring|firstword)[[:space:]]" + - statement: "\\$\\((flavor|foreach|if|info|join|lastword|notdir|or)[[:space:]]" + - statement: "\\$\\((origin|patsubst|realpath|shell|sort|strip|suffix)[[:space:]]" + - statement: "\\$\\((value|warning|wildcard|word|wordlist|words)[[:space:]]" + # default functions - probably shouldn't be overwritten by assignment + - statement: "\\b(arch|os|os_family|env_var|invocation_directory|justfile|justfile_directory|just_executable|lowercase|quote|replace|trim|trim_end|trim_end|trim_end_match|trim_end_matches|trim_start|trim_start_match|trim_start_matches|uppercase)\\b" + - identifier: "^.+:" + - identifier: "[()$]" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - identifier: "\\$+(\\{[^} ]+\\}|\\([^) ]+\\))" + - identifier: "\\$[@^<*?%|+]|\\$\\([@^<*?%+-][DF]\\)" + - identifier: "\\$\\$|\\\\.?" + - comment: + start: "#" + end: "$" + rules: [] diff --git a/config/micro/syntax/keymap.yaml b/config/micro/syntax/keymap.yaml new file mode 100644 index 0000000..317a1ee --- /dev/null +++ b/config/micro/syntax/keymap.yaml @@ -0,0 +1,27 @@ +filetype: keymap + +detect: + filename: "\\.(k|key)?map$|Xmodmap$" + +rules: + - statement: "\\b(add|clear|compose|keycode|keymaps|keysym|remove|string)\\b" + - statement: "\\b(control|alt|shift)\\b" + - constant.number: "\\b[0-9]+\\b" + - special: "=" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - comment: + start: "^!" + end: "$" + rules: [] + diff --git a/config/micro/syntax/kickstart.yaml b/config/micro/syntax/kickstart.yaml new file mode 100644 index 0000000..359678e --- /dev/null +++ b/config/micro/syntax/kickstart.yaml @@ -0,0 +1,16 @@ +filetype: kickstart + +detect: + filename: "\\.ks$|\\.kickstart$" + +rules: + - special: "%[a-z]+" + - statement: "^[[:space:]]*(install|cdrom|text|graphical|volgroup|logvol|reboot|timezone|lang|keyboard|authconfig|firstboot|rootpw|user|firewall|selinux|repo|part|partition|clearpart|bootloader)" + - constant: "--(name|mirrorlist|baseurl|utc)(=|\\>)" + - statement: "\\$(releasever|basearch)\\>" + - brightblack: "^@[A-Za-z][A-Za-z-]*" + - brightred: "^-@[a-zA-Z0-9*-]+" + - red: "^-[a-zA-Z0-9*-]+" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/kotlin.yaml b/config/micro/syntax/kotlin.yaml new file mode 100644 index 0000000..5e28abd --- /dev/null +++ b/config/micro/syntax/kotlin.yaml @@ -0,0 +1,66 @@ +filetype: kotlin + +detect: + filename: "\\.kts?$" + +rules: + + # Operators + - symbol.operator: ([.:;,+*|=!?\\%]|<|>|/|-|&) + + # Statements Keywords + - statement: \b(as|by|class|constructor|companion|const|fun|import|in|infix|interface|inline|is|out|operator|package|return|suspend|super|this|when|val|var)\b + - statement.properties: \b(get|set)\b + - statement.control: \b(break|continue|else|do|if|try|catch|finally|for|while)\b + - statement.class: \b(abstract|annotation|data|enum|final|open|sealed)\b + - statement.member: \b(override|lateinit|init)\b + - statement.access: \b(internal|private|protected|public)\b + - statement.parameter: \b(crossinline|noinline|reified|vararg)\b + + # Expression and types + - type: \b(dynamic|object|throw|typealias)\b + + # Meta + - statement.meta: \@(\bfile|delegate|field|get|property|receiver|set|setparam|param|)\b + + # Constant + - constant: \b(true|false|null) + - constant.number: ([0-9]+) + + # Storage Types + - type.storage: \b(Byte|UByte|Char|Double|Float|Int|UInt|Long|ULong|Short|UShort|Boolean|Unit|Nothing)\b + + # Collections + - type.collections: \b(Array)\b + + # String + - constant.string: + start: \" + end: \" + skip: \\. + rules: + - constant.specialChar: (\\0|\\\\|\\t|\\n|\\r|\\"|\\') + - constant.unicode: \\u\{[[:xdigit:]]+} + + # Shebang Line + - comment.shebang: ^(#!).* + + # Line Comment + - comment.line: "//.*" + + # Block Comment + - comment.block: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + # Doc Block Comment + - comment.block: + start: "/\\*\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + # Todo + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/kvlang.yaml b/config/micro/syntax/kvlang.yaml new file mode 100644 index 0000000..e40d348 --- /dev/null +++ b/config/micro/syntax/kvlang.yaml @@ -0,0 +1,67 @@ +filetype: "kvlang" + +detect: + filename: "\\.kv$" + +rules: +# layouts +- special: "\\b[a-z].+" +- identifier: "\\b(self|app|root)\\b" + +- type: "\\b[A-Z].+" +- type: "\\b(AnchorLayout|BoxLayout|FloatLayout|RelativeLayout|GridLayout|PageLayout|StackLayout)\\b" + +- type: "\\b(canvas)\\b" + +# functions +- identifier.function: "[a-zA-Z_0-9]+\\(" + +# built-in functions +- type: "\\b(abs|all|any|ascii|bin|bool|breakpoint|bytearray|bytes)\\b" +- type: "\\b(callable|chr|classmethod|compile|copyright|credits|oct)\\b" +- type: "\\b(delattr|dict|dir|display|divmod|enumerate|eval|filter)\\b" +- type: "\\b(float|format|frozenset|get_ipython|getattr|globals|type)\\b" +- type: "\\b(hash|help|hex|id|input|int|isinstance|issubclass|iter|len)\\b" +- type: "\\b(license|list|locals|map|max|memoryview|min|next|object)\\b" +- type: "\\b(open|ord|pow|print|property|range|repr|reversed|round|set)\\b" +- type: "\\b(setattr|slice|sorted|staticmethod|hasattr|super|tuple|str)\\b" +- type: "\\b(vars|zip|exec|sum|complex)\\b" + +# keywords +- statement.built_in: "\\b(and|as|assert|async|await|break|class|continue|def)\\b" +- statement.built_in: "\\b(del|elif|else|except|finally|for|from|global|if)\\b" +- statement.built_in: "\\b(import|in|is|lambda|nonlocal|not|or|pass|raise)\\b" +- statement.built_in: "\\b(return|try|while|with|yield|match|case)\\b" + +# operators +- symbol.operator: "([~^.:;,+*|=!\\%]|<|>|/|-|&)" + +# parentheses +- symbol.brackets: "([(){}]|\\[|\\])" + +# numbers +- constant.number: "\\b[0-9](_?[0-9])*(\\.([0-9](_?[0-9])*)?)?(e[0-9](_?[0-9])*)?\\b" # decimal +- constant.number: "\\b0b(_?[01])+\\b" # bin +- constant.number: "\\b0o(_?[0-7])+\\b" # oct +- constant.number: "\\b0x(_?[0-9a-f])+\\b" # hex + +- constant.bool.none: "\\b(None)\\b" +- constant.bool.true: "\\b(True)\\b" +- constant.bool.false: "\\b(False)\\b" + +# strings +- constant.string: + start: "\"" + end: "(\"|$)" + skip: "\\\\." + rules: [] +- constant.string: + start: "'" + end: "('|$)" + skip: "\\\\." + rules: [] + +- comment: + start: "#" + end: "$" + rules: [] diff --git a/config/micro/syntax/ledger.yaml b/config/micro/syntax/ledger.yaml new file mode 100644 index 0000000..0121ae0 --- /dev/null +++ b/config/micro/syntax/ledger.yaml @@ -0,0 +1,14 @@ +filetype: ledger + +detect: + filename: "(^|\\.|/)(ledger|ldgr|beancount|bnct)$" + +rules: + - special: "^([0-9]{4}(/|-)[0-9]{2}(/|-)[0-9]{2}|[=~]) .*" + - constant: "^[0-9]{4}(/|-)[0-9]{2}(/|-)[0-9]{2}" + - statement: "^~ .*" + - identifier.var: "^= .*" + - identifier: "^[[:space:]]+(![[:space:]]+)?\\(?[A-Za-z ]+(:[A-Za-z ]+)*\\)?" + - identifier: "^[[:space:]]+(![[:space:]]+)?\\(?[A-Za-z_\\-]+(:[A-Za-z_\\-]+)*\\)?" + - symbol: "[*!]" + - comment: "^[[:space:]]*;.*" diff --git a/config/micro/syntax/lfe.yaml b/config/micro/syntax/lfe.yaml new file mode 100644 index 0000000..a767a52 --- /dev/null +++ b/config/micro/syntax/lfe.yaml @@ -0,0 +1,17 @@ +filetype: lfe + +detect: + filename: "lfe$|\\.lfe$" + +rules: + - symbol.brackets: "\\(|\\)" + - type: "defun|define-syntax|define|defmacro|defmodule|export" + - constant: "\\ [A-Za-z][A-Za-z0-9_-]+\\ " + - symbol.operator: "\\(([\\-+*/<>]|<=|>=)|'" + - constant.number: "\\b[0-9]+\\b" + - constant.string: "\\\"(\\\\.|[^\"])*\\\"" + - special: "['|`][A-Za-z][A-Za-z0-9_\\-]+" + - constant.specialChar: "\\\\.?" + - comment: "(^|[[:space:]]);.*" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/lilypond.yaml b/config/micro/syntax/lilypond.yaml new file mode 100644 index 0000000..8023091 --- /dev/null +++ b/config/micro/syntax/lilypond.yaml @@ -0,0 +1,26 @@ +filetype: lilypond + +detect: + filename: "\\.ly$|\\.ily$|\\.lly$" + +rules: + - constant.number: "\\d+" + - identifier: "\\b(staff|spacing|signature|routine|notes|handler|corrected|beams|arpeggios|Volta_engraver|Voice|Vertical_align_engraver|Vaticana_ligature_engraver|VaticanaVoice|VaticanaStaff|Tweak_engraver|Tuplet_engraver|Trill_spanner_engraver|Timing_translator|Time_signature_performer|Time_signature_engraver|Tie_performer|Tie_engraver|Text_spanner_engraver|Text_engraver|Tempo_performer|Tab_tie_follow_engraver|Tab_staff_symbol_engraver|Tab_note_heads_engraver|TabVoice|TabStaff|System_start_delimiter_engraver|Stem_engraver|Stanza_number_engraver|Stanza_number_align_engraver|Staff_symbol_engraver|Staff_performer|Staff_collecting_engraver|StaffGroup|Staff|Spanner_break_forbid_engraver|Span_bar_stub_engraver|Span_bar_engraver|Span_arpeggio_engraver|Spacing_engraver|Slur_performer|Slur_engraver|Slash_repeat_engraver|Separating_line_group_engraver|Script_row_engraver|Script_engraver|Script_column_engraver|Score|Rhythmic_column_engraver|RhythmicStaff|Rest_engraver|Rest_collision_engraver|Repeat_tie_engraver|Repeat_acknowledge_engraver|Pure_from_neighbor_engraver|Pitched_trill_engraver|Pitch_squash_engraver|Piano_pedal_performer|Piano_pedal_engraver|Piano_pedal_align_engraver|PianoStaff|Phrasing_slur_engraver|PetrucciVoice|PetrucciStaff|Percent_repeat_engraver|Part_combine_engraver|Parenthesis_engraver|Paper_column_engraver|Output_property_engraver|Ottava_spanner_engraver|OneStaff|NullVoice|Note_spacing_engraver|Note_performer|Note_name_engraver|Note_heads_engraver|Note_head_line_engraver|NoteName\\|NoteHead|New_fingering_engraver|Multi_measure_rest_engraver|Midi_control_function_performer|Metronome_mark_engraver|Mensural_ligature_engraver|MensuralVoice|MensuralStaff|Mark_engraver|Lyrics|Lyric_performer|Lyric_engraver|Ligature_bracket_engraver|Ledger_line_engraver|Laissez_vibrer_engraver|Kievan_ligature_engraver|KievanVoice|KievanStaff|Key_performer|Key_engraver|Keep_alive_together_engraver|Instrument_switch_engraver|Instrument_name_engraver|Hyphen_engraver|Grob_pq_engraver|GregorianTranscriptionVoice|GregorianTranscriptionStaff|GrandStaff|Grace_spacing_engraver|Grace_engraver|Grace_beam_engraver|Grace_auto_beam_engraver|Global|Glissando_engraver|Fretboard_engraver|FretBoards|Forbid_line_break_engraver|Footnote_engraver|Font_size_engraver|Fingering_engraver|Fingering_column_engraver|Figured_bass_position_engraver|Figured_bass_engraver|FiguredBass|Extender_engraver|Episema_engraver|Dynamics|Dynamic_performer|Dynamic_engraver|Dynamic_align_engraver|Drum_notes_engraver|Drum_note_performer|DrumVoice|DrumStaff|Double_percent_repeat_engraver|Dots_engraver|Dot_column_engraver|Devnull|Default_bar_line_engraver|Custos_engraver|Cue_clef_engraver|CueVoice|Control_track_performer|Concurrent_hairpin_engraver|Collision_engraver|Cluster_spanner_engraver|Clef_engraver|Chord_tremolo_engraver|Chord_name_engraver|ChordNames|ChoirStaff|Breathing_sign_engraver|Break_align_engraver|Bend_engraver|Beam_performer|Beam_engraver|Beam_collision_engraver|Bar_number_engraver|Bar_engraver|Axis_group_engraver|Auto_beam_engraver|Arpeggio_engraver|Accidental_engraver|Score)\\b" + - statement: "[-_^]?\\\\[-A-Za-z_]+" + - preproc: "\\b(((gisis|gis|geses|ges|g|fisis|fis|feses|fes|f|eisis|eis|eeses|ees|e|disis|dis|deses|des|d|cisis|cis|ceses|ces|c|bisis|bis|beses|bes|b|aisis|ais|aeses|aes|a)[,']*[?!]?)|s|r|R|q)(128|64|32|16|8|4|2|1|\\\\breve|\\\\longa|\\\\maxima)?([^\\\\\\w]|_|\\b)" + - special: "[(){}<>]|\\[|\\]" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - comment: + start: "%\\{" + end: "%\\}" + rules: [] + - comment: + start: "%" + end: "$" + rules: [] + diff --git a/config/micro/syntax/lisp.yaml b/config/micro/syntax/lisp.yaml new file mode 100644 index 0000000..902d20f --- /dev/null +++ b/config/micro/syntax/lisp.yaml @@ -0,0 +1,17 @@ +filetype: lisp + +detect: + filename: "(emacs|zile)$|\\.(el|li?sp|scm|ss|rkt)$" + +rules: + - default: "\\([a-z-]+" + - symbol: "\\(([\\-+*/<>]|<=|>=)|'" + - constant.number: "\\b[0-9]+b>" + - special: "\\bnil\\b" + - preproc: "\\b[tT]b>" + - constant.string: "\\\"(\\\\.|[^\"])*\\\"" + - constant.specialChar: "'[A-Za-z][A-Za-z0-9_-]+" + - constant.specialChar: "\\\\.?" + - comment: "(^|[[:space:]]);.*" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/log.yaml b/config/micro/syntax/log.yaml new file mode 100644 index 0000000..34ef765 --- /dev/null +++ b/config/micro/syntax/log.yaml @@ -0,0 +1,92 @@ +filetype: log + +detect: + filename: "(\\.log|log\\.txt)$" + +rules: +- diff-modified: "\\b(WARN(ING)?|[Ww]arn(ing)?|w(r)?n|w|W/)\\b" +- diff-modified: "\\b(CRITICAL|[Cc]ritical)\\b" + +- constant: "\\b(INFO(RMATION)?|[Ii]nfo(rmation)?|[Ii]n(f)?|i|I/)\\b" +- constant: "\\b(DEBUG|[Dd]ebug|dbug|dbg|de|d|D/)\\b" +- constant: "\\b(VERBOSE|[Vv]erbose|V/)\\b" +- constant: "\\b(ALERT|[Aa]lert)\\b" + +- preproc: "\\b(TRACE|Trace|NOTICE|VERBOSE|verb|vrb|vb|v)\\b" + +- gutter-error: "\\b(ERROR|[Ee]rr(or)?|[Ee]r(or)?|e|E\\x2F)\\b" +- gutter-error: "\\b(FATAL|[Ff]atal)\\b" +- gutter-error: "\\b(EMERGENCY|[Ee]mergency)\\b" +- gutter-error: "\\b(FAIL(URE)?|[Ff]ail(ure)?)\\b" + +# constants +- constant.bool.true: "\\b(YES|yes|Y|y|ON|on|TRUE|True|true)\\b" +- constant.bool.false: "\\b(NO|no|N|n|OFF|off|FALSE|False|false)\\b" +- constant.bool.false: "\\b(None|null|nil)\\b" + +# numbers +- constant.number: "\\b[0-9](_?[0-9])*(\\.([0-9](_?[0-9])*)?)?(e[0-9](_?[0-9])*)?\\b" # decimal +- constant.number: "\\b0b(_?[01])+\\b" # bin +- constant.number: "\\b0o(_?[0-7])+\\b" # oct +- constant.number: "\\b0x(_?[0-9a-f])+\\b" # hex + +# operators +- symbol.operator: "([~^.:;,+*|=!\\%]|<|>|/|-|&)" + +# parentheses +- symbol.brackets: "([(){}]|\\[|\\])" + +# string +- constant.string: + start: "\"" + end: "(\"|$)" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + +- constant.string: + start: "'" + end: "('|$)" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + +# file +- preproc: "\\b(FILE|File|file)\\b" + +# time +- identifier: "\\b((([Mm]on|[Tt]ues|[Ww]ed(nes)?|[Tt]hur(s)?|[Ff]ri|[Ss]at(ur)?|[Ss]un)(day)?\\s)?([Jj]an(uary)?|[Ff]eb(ruary)?|[Mm]ar(ch)?|[Aa]pr(il)?|[Mm]ay|[Jj]un(e)?|[Jj]ul(y)?|[Aa]ug(ust)?|[Aa]go|[Ss]ep(tember)?|[Oo]ct(ober)?|[Nn]ov(ember)?|[Dd]ec(ember)?)\\s\\d{1,2},?(\\s\\d{4})?)\\b" # date +- identifier: "\\b(\\d{2,4}[-/\\.]?\\d{2,3}[-/\\.]?\\d{2,4})\\b" # date +- identifier: "\\b(\\d{2}:\\d{2}(:\\d{2})?([\\.,]?\\d{1,8}[\\.\\+,]?\\d{1,8}?)?([\\.\\+,]?\\d{1,8}[\\.\\+,]?\\d{1,8}?)?([\\.\\+,]?\\d{1,8}?)?(\\s-\\d{0,4})?)\\b" # time +- identifier: "^([0-2][0-9][0-2][0-9][-/]?[0-9][0-9][-/]?[0-9][0-9])" +# - identifier: "^([0-2][0-9][0-2][0-9][-/]?[0-9][0-9][-/]?[0-9][0-9]\\s[0-9][0-9]:[0-9][0-9](:[0-9][0-9])?(\\.?[0-9][0-9][0-9])?)" +- identifier: "^(\\d{4}[-/]?\\d{2}[-/]?\\d{2}\\s\\d{2}:\\d{2}(:\\d{2})?(\\.?\\d{2,8})?)" +- identifier: "^([0-2][0-9]|[0-2]-?[0-9][0-9]-?[0-9][0-9])\\-([0-1][0-9])\\-([0-3][0-9]) ([0-2][0-9])\\:([0-5][0-9])\\:([0-5][0-9]),([0-9][0-9][0-9])" +# Complete precision: +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))" +# No milliseconds: +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))" +# No Seconds: +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))" +# Putting it all together: +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))" +# Complete precision: +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+)" +# No milliseconds +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d)" +# No Seconds +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d)" +# Putting it all together +- identifier: "^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d)" + +# link +- constant.string.url: + start: "https?://" + end: "\\s" + rules: [] + +# path +# - constant.string.url: "\\b(.+)/([^/]+)\\b" # linux +# - constant.string.url: "\\b(^[a-zA-Z]:)\\b" # windowns + +- diff-modified: "([Cc]ommit:)\\s\\w+\\[\\w+]" diff --git a/config/micro/syntax/lua.yaml b/config/micro/syntax/lua.yaml new file mode 100644 index 0000000..ddf0d05 --- /dev/null +++ b/config/micro/syntax/lua.yaml @@ -0,0 +1,111 @@ +filetype: lua + +detect: + filename: "\\.lua$" + +rules: + - statement: "\\b(do|end|while|break|repeat|until|if|elseif|then|else|for|in|function|local|return|goto)\\b" + - statement: "\\b(not|and|or)\\b" + - statement: "\\b(debug|string|math|table|io|coroutine|os|utf8|bit32)\\b\\." + - statement: "\\b(_ENV|_G|_VERSION|assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|load|loadfile|module|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\\s*\\(" + - identifier: "io\\.\\b(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)\\b" + - identifier: "math\\.\\b(abs|acos|asin|atan2|atan|ceil|cosh|cos|deg|exp|floor|fmod|frexp|huge|ldexp|log10|log|max|maxinteger|min|mininteger|modf|pi|pow|rad|random|randomseed|sin|sqrt|tan|tointeger|type|ult)\\b" + - identifier: "os\\.\\b(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)\\b" + - identifier: "package\\.\\b(config|cpath|loaded|loadlib|path|preload|seeall|searchers|searchpath)\\b" + - identifier: "string\\.\\b(byte|char|dump|find|format|gmatch|gsub|len|lower|match|pack|packsize|rep|reverse|sub|unpack|upper)\\b" + - identifier: "table\\.\\b(concat|insert|maxn|move|pack|remove|sort|unpack)\\b" + - identifier: "utf8\\.\\b(char|charpattern|codes|codepoint|len|offset)\\b" + - identifier: "coroutine\\.\\b(create|isyieldable|resume|running|status|wrap|yield)\\b" + - identifier: "debug\\.\\b(debug|getfenv|gethook|getinfo|getlocal|getmetatable|getregistry|getupvalue|getuservalue|setfenv|sethook|setlocal|setmetatable|setupvalue|setuservalue|traceback|upvalueid|upvaluejoin)\\b" + - identifier: "bit32\\.\\b(arshift|band|bnot|bor|btest|bxor|extract|replace|lrotate|lshift|rrotate|rshift)\\b" + - identifier: "\\:\\b(close|flush|lines|read|seek|setvbuf|write|byte|char|dump|find|format|gmatch|gsub|len|lower|match|pack|packsize|rep|reverse|sub|unpack|upper)\\b" + - identifier: "\\b(self|arg)\\b" + - constant: "\\b(false|nil|true)\\b" + - statement: "(\\b(dofile|require|include)|%q|%!|%Q|%r|%x)\\b" + + - symbol.brackets: "[(){}\\[\\]]" + - symbol: "(\\*|//|/|%|\\+|-|\\^|>|>=|<|<=|~=|=|[\\.]{2,3}|#)" + + - constant.number: "\\b((0[xX](([0-9A-Fa-f]+\\.[0-9A-Fa-f]*)|(\\.?[0-9A-Fa-f]+))([pP][-+]?[0-9]+)?)|((([0-9]+\\.[0-9]*)|(\\.?[0-9]+))([eE][-+]?[0-9]+)?))" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([abfnrtvz\\'\"]|[0-9]{1,3}|x[0-9a-fA-F][0-9a-fA-F]|u\\{[0-9a-fA-F]+\\})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([abfnrtvz\\'\"]|[0-9]{1,3}|x[0-9a-fA-F][0-9a-fA-F]|u\\{[0-9a-fA-F]+\\})" + + - constant.string: + start: "\\[\\[" + end: "\\]\\]" + rules: [] + +# support first few lengths of "long brackets" explicitly +# brackets longer than that will give false positives + + - constant.string: + start: "\\[=\\[" + end: "\\]=\\]" + rules: [] + + - constant.string: + start: "\\[==\\[" + end: "\\]==\\]" + rules: [] + + - constant.string: + start: "\\[===\\[" + end: "\\]===\\]" + rules: [] + + - constant.string: + start: "\\[====+\\[" + end: "\\]====+\\]" + rules: [] + + - comment.block: + start: "\\-\\-\\[\\[" + end: "\\]\\]" + rules: + - todo: "(TODO|NOTE|FIXME):?" + +# support long brackets, same as with multiline strings + + - comment.block: + start: "\\-\\-\\[=\\[" + end: "\\]=\\]" + rules: + - todo: "(TODO|NOTE|FIXME):?" + + - comment.block: + start: "\\-\\-\\[==\\[" + end: "\\]==\\]" + rules: + - todo: "(TODO|NOTE|FIXME):?" + + - comment.block: + start: "\\-\\-\\[===\\[" + end: "\\]===\\]" + rules: + - todo: "(TODO|NOTE|FIXME):?" + + - comment.block: + start: "\\-\\-\\[====+\\[" + end: "\\]====+\\]" + rules: + - todo: "(TODO|NOTE|FIXME):?" + +# this has to go after block comment or block comment does not work + + - comment: + start: "\\-\\-" + end: "$" + rules: + - todo: "(TODO|NOTE|FIXME):?" diff --git a/config/micro/syntax/mail.yaml b/config/micro/syntax/mail.yaml new file mode 100644 index 0000000..6ffe873 --- /dev/null +++ b/config/micro/syntax/mail.yaml @@ -0,0 +1,25 @@ +filetype: mail + +detect: + filename: "(.*/mutt-.*|\\.eml)$" + header: "^From .* \\d+:\\d+:\\d+ \\d+" + +rules: + - type: "^From .*" + - identifier: "^[^[:space:]]+:" + - preproc: "^List-(Id|Archive|Subscribe|Unsubscribe|Post|Help):" + - constant: "^(To|From):" + - constant.string: + start: "^Subject:.*" + end: "$" + rules: + - constant.specialChar: "\\\\." + - statement: "?" + - default: + start: "^\\n\\n" + end: ".*" + rules: [] + - comment: + start: "^>.*" + end: "$" + rules: [] diff --git a/config/micro/syntax/make_headers.go b/config/micro/syntax/make_headers.go new file mode 100644 index 0000000..dba810c --- /dev/null +++ b/config/micro/syntax/make_headers.go @@ -0,0 +1,80 @@ +//go:build ignore +// +build ignore + +package main + +import ( + "bytes" + "fmt" + "os" + "strings" + "time" + + yaml "gopkg.in/yaml.v2" +) + +type HeaderYaml struct { + FileType string `yaml:"filetype"` + Detect struct { + FNameRgx string `yaml:"filename"` + HeaderRgx string `yaml:"header"` + SignatureRgx string `yaml:"signature"` + } `yaml:"detect"` +} + +type Header struct { + FileType string + FNameRgx string + HeaderRgx string + SignatureRgx string +} + +func main() { + if len(os.Args) > 1 { + os.Chdir(os.Args[1]) + } + files, _ := os.ReadDir(".") + for _, f := range files { + fname := f.Name() + if strings.HasSuffix(fname, ".yaml") { + convert(fname[:len(fname)-5]) + } + } +} + +func convert(name string) { + filename := name + ".yaml" + var hdr HeaderYaml + source, err := os.ReadFile(filename) + if err != nil { + panic(err) + } + err = yaml.Unmarshal(source, &hdr) + if err != nil { + panic(err) + } + encode(name, hdr) +} + +func encode(name string, c HeaderYaml) { + f, _ := os.Create(name + ".hdr") + f.WriteString(c.FileType + "\n") + f.WriteString(c.Detect.FNameRgx + "\n") + f.WriteString(c.Detect.HeaderRgx + "\n") + f.WriteString(c.Detect.SignatureRgx + "\n") + f.Close() +} + +func decode(name string) Header { + start := time.Now() + data, _ := os.ReadFile(name + ".hdr") + strs := bytes.Split(data, []byte{'\n'}) + var hdr Header + hdr.FileType = string(strs[0]) + hdr.FNameRgx = string(strs[1]) + hdr.HeaderRgx = string(strs[2]) + hdr.SignatureRgx = string(strs[3]) + fmt.Printf("took %v\n", time.Since(start)) + + return hdr +} diff --git a/config/micro/syntax/makefile.yaml b/config/micro/syntax/makefile.yaml new file mode 100644 index 0000000..7e90cde --- /dev/null +++ b/config/micro/syntax/makefile.yaml @@ -0,0 +1,38 @@ +filetype: makefile + +detect: + filename: "([Mm]akefile|\\.ma?k)$" + header: "^#!.*/(env +)?[bg]?make( |$)" + +rules: + - preproc: "\\<(ifeq|ifdef|ifneq|ifndef|else|endif)\\>" + - statement: "^(export|include|override)\\>" + - symbol.operator: "^[^:= ]+:" + - symbol.operator: "([=,%]|\\+=|\\?=|:=|&&|\\|\\|)" + - statement: "\\$\\((abspath|addprefix|addsuffix|and|basename|call|dir)[[:space:]]" + - statement: "\\$\\((error|eval|filter|filter-out|findstring|firstword)[[:space:]]" + - statement: "\\$\\((flavor|foreach|if|info|join|lastword|notdir|or)[[:space:]]" + - statement: "\\$\\((origin|patsubst|realpath|shell|sort|strip|suffix)[[:space:]]" + - statement: "\\$\\((value|warning|wildcard|word|wordlist|words)[[:space:]]" + - identifier: "^.+:" + - identifier: "[()$]" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - identifier: "\\$+(\\{[^} ]+\\}|\\([^) ]+\\))" + - identifier: "\\$[@^<*?%|+]|\\$\\([@^<*?%+-][DF]\\)" + - identifier: "\\$\\$|\\\\.?" + - comment: + start: "#" + end: "$" + rules: [] + diff --git a/config/micro/syntax/man.yaml b/config/micro/syntax/man.yaml new file mode 100644 index 0000000..8e26c66 --- /dev/null +++ b/config/micro/syntax/man.yaml @@ -0,0 +1,12 @@ +filetype: man + +detect: + filename: "\\.[1-9]x?$" + +rules: + - green: "\\.(S|T)H.*$" + - brightgreen: "\\.(S|T)H|\\.TP" + - brightred: "\\.(BR?|I[PR]?).*$" + - brightblue: "\\.(BR?|I[PR]?|PP)" + - brightwhite: "\\\\f[BIPR]" + - yellow: "\\.(br|DS|RS|RE|PD)" diff --git a/config/micro/syntax/markdown.yaml b/config/micro/syntax/markdown.yaml new file mode 100644 index 0000000..7ea4326 --- /dev/null +++ b/config/micro/syntax/markdown.yaml @@ -0,0 +1,49 @@ +filetype: markdown + +detect: + filename: "\\.(livemd|md|mkd|mkdn|markdown)$" + +rules: + # Tables (Github extension) + - type: ".*[ :]\\|[ :].*" + + # quotes + - statement: "^>.*" + + # Emphasis + - type: "(^|[[:space:]])(_[^ ][^_]*_|\\*[^ ][^*]*\\*)" + + # Strong emphasis + - type: "(^|[[:space:]])(__[^ ][^_]*__|\\*\\*[^ ][^*]*\\*\\*)" + + # strike-through + - type: "(^|[[:space:]])~~[^ ][^~]*~~" + + # horizontal rules + - special: "^(---+|===+|___+|\\*\\*\\*+)\\s*$" + + # headlines + - special: "^#{1,6}.*" + + # lists + - identifier: "^[[:space:]]*[\\*+-] |^[[:space:]]*[0-9]+\\. " + + # misc + - preproc: "(\\(([CcRr]|[Tt][Mm])\\)|\\.{3}|(^|[[:space:]])\\-\\-($|[[:space:]]))" + + # links + - constant: "\\[[^]]+\\]" + - constant: "\\[([^][]|\\[[^]]*\\])*\\]\\([^)]+\\)" + + # images + - underlined: "!\\[[^][]*\\](\\([^)]+\\)|\\[[^]]+\\])" + + # urls + - underlined: "https?://[^ )>]+" + + - special: "^```$" + + - special: + start: "`" + end: "`" + rules: [] diff --git a/config/micro/syntax/mc.yaml b/config/micro/syntax/mc.yaml new file mode 100644 index 0000000..bcf1177 --- /dev/null +++ b/config/micro/syntax/mc.yaml @@ -0,0 +1,23 @@ +# sendmail config files + +filetype: mc + +detect: + filename: "\\.mc$" + +rules: + - statement: "^(divert|VERSIONID|OSTYPE|DOMAIN|FEATURE|define)" + - statement: "^(DAEMON_OPTIONS|MAILER)" + - comment: + start: "#" + end: "$" + rules: [] + - comment: + start: "dnl" + end: "$" + rules: [] + - constant.string: + start: "`" + end: "'" + rules: [] + diff --git a/config/micro/syntax/meson.yaml b/config/micro/syntax/meson.yaml new file mode 100755 index 0000000..744abc2 --- /dev/null +++ b/config/micro/syntax/meson.yaml @@ -0,0 +1,51 @@ +filetype: meson + +detect: + filename: "(meson\\.build|meson_options\\.txt|meson\\.options)" + +rules: + + # refer to https://mesonbuild.com/Syntax.html + + - statement: "\\b(elif|else|if|endif)\\b" + - statement: "\\b(foreach|endforeach)\\b" + - statement: "\\b(continue|break)\\b" + - statement: "\\b(and|not|or|in)\\b" + + - symbol.operator: "[<>?:+*/-]|[+!<>=]?=" + - symbol.brackets: "[(){}\\[\\]]" + + - constant.number: "\\b(0|[1-9][0-9]*)\\b" # decimal + - constant.number: "\\b(0b[01]+)\\b" # bin + - constant.number: "\\b(0o[0-7]+)\\b" # oct + - constant.number: "\\b(0x[0-9a-fA-F]+)\\b" # hex + + # meson builtins + - identifier: "\\b(add_global_arguments|add_global_link_arguments|add_languages|add_project_arguments|add_project_dependencies)\\b" + - identifier: "\\b(add_project_link_arguments|add_test_setup|alias_target|assert|benchmark|both_libraries|build_machine|build_target|configuration_data)\\b" + - identifier: "\\b(configure_file|custom_target|debug|declare_dependency|dependency|disabler|environment|error|executable|files)\\b" + - identifier: "\\b(find_program|generator|get_option|get_variable|host_machine|import|include_directories|install_data|install_emptydir)\\b" + - identifier: "\\b(install_headers|install_man|install_subdir|install_symlink|is_disabler|is_variable|jar|join_paths|library|meson)\\b" + - identifier: "\\b(message|option|project|range|run_command|run_target|set_variable|shared_library|shared_module|static_library)\\b" + - identifier: "\\b(structured_sources|subdir|subdir_done|subproject|summary|target_machine|test|unset_variable|vcs_tag|warning)\\b" + + - constant.bool: "\\b(true|false)\\b" + + - comment: + start: "#" + end: "$" + rules: [] + + # multiline strings do not support escape sequences + - constant.string: + start: "'''" + end: "'''" + rules: [] + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[abfnrtv\\\\']" + - constant.specialChar: "\\\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|N\\{[^\\}]+\\})" diff --git a/config/micro/syntax/micro.yaml b/config/micro/syntax/micro.yaml new file mode 100644 index 0000000..276fb09 --- /dev/null +++ b/config/micro/syntax/micro.yaml @@ -0,0 +1,34 @@ +filetype: micro + +detect: + filename: "\\.(micro)$" + +rules: + - statement: "\\b(syntax|color(-link)?)\\b" + - statement: "\\b(start=|end=)\\b" + # Simple one-liners + - identifier: "\\b(default|number|statement|underlined|error|todo|statusline|indent-char|cursor\\-line|color\\-column|ignore|divider|tabbar)\\b" + # Separate identifiers to keep "complex" regex clean + - identifier: "\\b(special(Char)?)\\b" + - identifier: "\\b((current\\-)?line\\-number)\\b" + - identifier: "\\b(gutter\\-(info|error|warning){1})\\b" + - identifier: "\\b(comment(\\.bright)?)\\b" + - identifier: "\\b(symbol(\\.(brackets|operator|tag))?)\\b" + - identifier: "\\b(identifier(\\.(class|macro|var))?)\\b" + - identifier: "\\b(constant(\\.(bool(\\.(true|false){1})?|number|specialChar|string(\\.url)?){1})?)\\b" + - identifier: "\\b(preproc(\\.shebang)?)\\b" + - identifier: "\\b(type(\\.keyword)?)\\b" + - constant.number: "\\b(|h|A|0x)+[0-9]+(|h|A)+\\b" + - constant.number: "\\b0x[0-9 a-f A-F]+\\b" + - comment: + start: "#" + end: "$" + rules: + - todo: "(FIXME|TODO|NOTE):?" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.number: "#[0-9 A-F a-f]+" diff --git a/config/micro/syntax/mpdconf.yaml b/config/micro/syntax/mpdconf.yaml new file mode 100644 index 0000000..002ea6c --- /dev/null +++ b/config/micro/syntax/mpdconf.yaml @@ -0,0 +1,13 @@ +filetype: mpd + +detect: + filename: "mpd\\.conf$" + +rules: + - statement: "\\b(user|group|bind_to_address|host|port|plugin|name|type)\\b" + - statement: "\\b((music|playlist)_directory|(db|log|state|pid|sticker)_file)\\b" + - special: "^(input|audio_output|decoder)[[:space:]]*\\{|\\}" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/msbuild.yaml b/config/micro/syntax/msbuild.yaml new file mode 100644 index 0000000..2c79213 --- /dev/null +++ b/config/micro/syntax/msbuild.yaml @@ -0,0 +1,6 @@ +filetype: msbuild +detect: + filename: "\\.(.*proj|props|targets|tasks)$" + +rules: + - include: "xml" diff --git a/config/micro/syntax/nanorc.yaml b/config/micro/syntax/nanorc.yaml new file mode 100644 index 0000000..36ae25a --- /dev/null +++ b/config/micro/syntax/nanorc.yaml @@ -0,0 +1,16 @@ +filetype: nanorc + +detect: + filename: "\\.?nanorc$" + +rules: + - default: "(?i)^[[:space:]]*((un)?set|include|syntax|i?color).*$" + - type: "(?i)^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|backupdir|backwards|boldtext|brackets|casesensitive|const|cut|fill|historylog|matchbrackets|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nonewlines|nowrap|operatingdir|preserve|punct)\\>|^[[:space:]]*(set|unset)[[:space:]]+(quickblank|quotestr|rebinddelete|rebindkeypad|regexp|smarthome|smooth|speller|suspend|tabsize|tabstospaces|tempfile|undo|view|whitespace|wordbounds)\\b" + - preproc: "(?i)^[[:space:]]*(set|unset|include|syntax|header)\\b" + - constant.bool.true: "(?i)(set)\\b" + - constant.bool.false: "(?i)(unset)\\b" + - identifier: "(?i)^[[:space:]]*(i)?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\\b" + - special: "(?i)^[[:space:]]*(i)?color\\b|\\b(start|end)=" + - constant.string: "\"(\\\\.|[^\"])*\"" + - comment: "^[[:space:]]*#.*$" + - comment.bright: "^[[:space:]]*##.*$" diff --git a/config/micro/syntax/nftables.yaml b/config/micro/syntax/nftables.yaml new file mode 100644 index 0000000..489fdb0 --- /dev/null +++ b/config/micro/syntax/nftables.yaml @@ -0,0 +1,30 @@ +filetype: nftables + +detect: + filename: "(nftables\\.(conf|rules)$|nftables(\\.rules)?\\.d/)" + header: "^(#!.*/(env +)?nft( |$)|flush +ruleset)" + +rules: + - type: "\\b(chain|counter|map|rule|ruleset|set|table)\\b" + - type: "\\b(ether|inet|i(cm)?p(x|(v?(4|6))?)|tcp|udp|8021q)\\b" + - special: "\\b(element(s)?|hook|policy|priority|type|state)\\b" + - identifier: "\\b(ct|iif|iifname|meta|oif|oifname|th|dport|sport|saddr|daddr|l4proto)\\b" + - statement: "\\b(accept|drop|goto|jump|log|masquerade|reject|limit|queue)\\b" + - preproc: "\\b(add|define|flush|include|delete)\\b" + - symbol.operator: "[<>.&|^!=:;,@]|\\b(and|ge|gt|le|lt|or|xor)\\b" + - constant.string: + start: "\"" + end: "\"" + rules: [] + # Integer Constants + - constant.number: "\\b([0-9]+)\\b" + - constant.number: "\\b(0x[0-9a-fA-F]+)\\b" + - identifier.var: "[$@][a-zA-Z_.][a-zA-Z0-9_/.-]*" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|FIXME):?" diff --git a/config/micro/syntax/nginx.yaml b/config/micro/syntax/nginx.yaml new file mode 100644 index 0000000..af4598b --- /dev/null +++ b/config/micro/syntax/nginx.yaml @@ -0,0 +1,22 @@ +filetype: nginx + +detect: + filename: "nginx.*\\.conf$|\\.nginx$|\\.sub(domain|folder)\\.conf$" + header: "^(server|upstream)[a-z ]*\\{$" + +rules: + - preproc: "\\b(events|server|http|location|upstream)[[:space:]]*\\{" + - statement: "(^|[[:space:]{;])(access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth_basic|auth_basic_user_file|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|default_type|deny|directio|directio_alignment|disable_symlinks|empty_gif|env|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|log_format|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|port_in_redirect|postpone_output|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_header|proxy_read_timeout|proxy_redirect|proxy_send_timeout|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|working_directory|xml_entities|xslt_stylesheet|xslt_types)([[:space:]]|$)" + - constant.bool.true: "\\b(on)\\b" + - constant.bool.false: "\\b(off)\\b" + - identifier: "\\$[A-Za-z][A-Za-z0-9_]*" + - symbol: "[*]" + - constant-string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - constant.string: + start: "'$" + end: "';$" + rules: [] + + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/nim.yaml b/config/micro/syntax/nim.yaml new file mode 100644 index 0000000..45f73d1 --- /dev/null +++ b/config/micro/syntax/nim.yaml @@ -0,0 +1,27 @@ +filetype: nim + +detect: + filename: "\\.nims?$|nim.cfg" + +rules: + - preproc: "[\\{\\|]\\b(atom|lit|sym|ident|call|lvalue|sideeffect|nosideeffect|param|genericparam|module|type|let|var|const|result|proc|method|iterator|converter|macro|template|field|enumfield|forvar|label|nk[a-zA-Z]+|alias|noalias)\\b[\\}\\|]" + - statement: "\\b(addr|and|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|div|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|in|include|interface|is|isnot|iterator|let|macro|method|mixin|mod|nil|not|notin|object|of|or|out|proc|ptr|raise|ref|return|shl|shr|static|template|try|tuple|type|using|var|when|while|with|without|xor|yield)\\b" + - statement: "\\b(deprecated|noSideEffect|constructor|destructor|override|procvar|compileTime|noReturn|acyclic|final|shallow|pure|asmNoStackFrame|error|fatal|warning|hint|line|linearScanEnd|computedGoto|unroll|immediate|checks|boundsChecks|overflowChecks|nilChecks|assertations|warnings|hints|optimization|patterns|callconv|push|pop|global|pragma|experimental|bitsize|volatile|noDecl|header|incompleteStruct|compile|link|passC|passL|emit|importc|importcpp|importobjc|codegenDecl|injectStmt|intdefine|strdefine|varargs|exportc|extern|bycopy|byref|union|packed|unchecked|dynlib|cdecl|thread|gcsafe|threadvar|guard|locks|compileTime)\\b" + - symbol.operator: "[=\\+\\-\\*/<>@\\$~&%\\|!\\?\\^\\.:\\\\]+" + - special: "\\{\\.|\\.\\}|\\[\\.|\\.\\]|\\(\\.|\\.\\)|;|,|`" + - statement: "\\.\\." + - type: "\\b(int|cint|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float|float32|float64|bool|char|enum|string|cstring|cstringArray|cdouble|csize_t|pointer|array|openarray|seq|varargs|tuple|object|set|void|auto|cshort|clong|range|nil|T|untyped|typedesc)\\b" + - type: "'[iI](8|16|32|64)?\\b|'[uU](8|16|32|64)?\\b|'[fF](32|64|128)?\\b|'[dD]\\b" + - constant.number: "\\b[0-9]+\\b" + - constant.number: "\\b0[xX][0-9A-Fa-f][0-9_A-Fa-f]+\\b" + - constant.number: "\\b0[ocC][0-7][0-7_]+\\b" + - constant.number: "\\b0[bB][01][01_]+\\b" + - constant.number: "\\b[0-9_]((\\.?)[0-9_]+)?[eE][+\\-][0-9][0-9_]+\\b" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - comment: "[[:space:]]*(?:[^\\\\]|^)#.*$" + - comment: + start: "\\#\\[" + end: "\\]\\#" + rules: [] + + - todo: "(TODO|FIXME|XXX):?" diff --git a/config/micro/syntax/nix.yaml b/config/micro/syntax/nix.yaml new file mode 100644 index 0000000..a60780a --- /dev/null +++ b/config/micro/syntax/nix.yaml @@ -0,0 +1,32 @@ +filetype: nix + +detect: + filename: "\\.nix$" + +rules: + - special: "\\b(Ellipsis|null|self|super|true|false|abort)\\b" + - statement: "\\b(let|in|with|import|rec|inherit)\\b" + - symbol.operator: "([~^.:;,+*|=!\\%@]|<|>|/|-|&)" + - symbol.brackets: "([(){}]|\\[|\\])" + + - constant.number: "\\b[0-9](_?[0-9])*(\\.([0-9](_?[0-9])*)?)?(e[0-9](_?[0-9])*)?\\b" + + - constant.string: + start: "\"" + end: "\"" + rules: [] + + - constant.string: + start: "''" + end: "''" + rules: [] + + - comment: + start: "#" + end: "$" + rules: [] + + - comment: + start: "/\\*" + end: "\\*/" + rules: [] diff --git a/config/micro/syntax/nu.yaml b/config/micro/syntax/nu.yaml new file mode 100644 index 0000000..cdf7d1a --- /dev/null +++ b/config/micro/syntax/nu.yaml @@ -0,0 +1,110 @@ +filetype: nu + +detect: + filename: "\\.nu$" + +rules: + - symbol: "[-+/*=<>!~%?:&|]" + # https://www.nushell.sh/book/command_reference.html + - statement: "\\b(agg-groups|agg|alias|all-false|all-true|all?|ansi gradient)\\b" + - statement: "\\b(ansi strip|ansi|any?|append|append|arg-max)\\b" + - statement: "\\b(arg-min|arg-sort|arg-true|arg-unique|as-date)\\b" + - statement: "\\b(as-datetime|as|benchmark|build-string|cache|cal|cd)\\b" + - statement: "\\b(char|clear|col|collect|columns|compact|complete)\\b" + - statement: "\\b(concatenate|config|config env|config nu|contains)\\b" + - statement: "\\b(count|count-null|cp|cumulative|date format|date humanize)\\b" + - statement: "\\b(date list-timezone|date now|date to-record|date to-table)\\b" + - statement: "\\b(date to-timezone|date|db and|db as|db col|db collect)\\b" + - statement: "\\b(db describe|db fn|db from|db group-by|db join|db limit)\\b" + - statement: "\\b(db open|db or|db order-by|db over|db query|db schema)\\b" + - statement: "\\b(db select|db testing|db where|db|debug|decode)\\b" + - statement: "\\b(def-env|default|def|describe|describe|detect columns)\\b" + - statement: "\\b(df-not|do|drop|drop|drop column|drop nth|drop-duplicates)\\b" + - statement: "\\b(drop-nulls|dtypes|du|each while|each|echo|empty?)\\b" + - statement: "\\b(enter|env|error make|every|exec|exit|explode)\\b" + - statement: "\\b(export alias|export def|export def-env|export env)\\b" + - statement: "\\b(export extern|export|expr-not|extern|fetch|fill-na)\\b" + - statement: "\\b(fill-null|filter-with|find|first|flatten)\\b" + - statement: "\\b(fmt|format filesize|format|for|from csv|from eml)\\b" + - statement: "\\b(from ics|from ini|from json|from nuon|from ods|from ssv)\\b" + - statement: "\\b(from toml|from tsv|from url|from vcf|from xlsx|from xml)\\b" + - statement: "\\b(from yaml|from yml|from|get-day|get-hour|get-minute)\\b" + - statement: "\\b(get-month|get-nanosecond|get-ordinal|get-second|get-week)\\b" + - statement: "\\b(get-weekday|get-year|get|glob|grid|group-by)\\b" + - statement: "\\b(group|gstat|g|hash base64|hash md5|hash sha256|hash)\\b" + - statement: "\\b(headers|help|hide|histogram|history|if|ignore)\\b" + - statement: "\\b(inc|input|insert|into binary|into bool|into datetime|into decimal)\\b" + - statement: "\\b(into duration|into filesize|into int|into string|into)\\b" + - statement: "\\b(is-admin|is-duplicated|is-in|is-not-null)\\b" + - statement: "\\b(is-null|is-unique|join|keep|keep until)\\b" + - statement: "\\b(keep while|keybindings default|keybindings listen|keybindings list)\\b" + - statement: "\\b(keybindings|kill|last|length|let-env|let)\\b" + - statement: "\\b(lines|list|lit|load-env|ls|ls-df|match|math abs)\\b" + - statement: "\\b(math avg|math ceil|math eval|math floor|math max)\\b" + - statement: "\\b(math median|math min|math mode|math product|math round)\\b" + - statement: "\\b(math sqrt|math stddev|math sum|math variance|math|max)\\b" + - statement: "\\b(mean|median|melt|merge|metadata)\\b" + - statement: "\\b(min|mkdir|module|move|mv|n|n-unique|n-unique)\\b" + - statement: "\\b(nth|nu-highlight|open|open-df|otherwise|overlay)\\b" + - statement: "\\b(overlay add|overlay list|overlay new|overlay remove|p)\\b" + - statement: "\\b(par-each|parse|path basename|path dirname|path exists)\\b" + - statement: "\\b(path expand|path join|path parse|path relative-to|path split)\\b" + - statement: "\\b(path type|path|pivot|post|prepend|print|ps|quantile)\\b" + - statement: "\\b(quantile|query json|query web|query xml|query|random bool)\\b" + - statement: "\\b(random chars|random decimal|random dice|random integer)\\b" + - statement: "\\b(random uuid|random|range|reduce|register|reject|rename)\\b" + - statement: "\\b(replace|replace-all|reverse|reverse|rm|roll down)\\b" + - statement: "\\b(roll left|roll right|roll up|rolling|roll|rotate)\\b" + - statement: "\\b(run-external|sample|save|select|select|seq|seq char)\\b" + - statement: "\\b(seq date|set|set-with-idx|shape|shells|shift|shuffle)\\b" + - statement: "\\b(size|skip until|skip while|skip|sleep|slice|sort)\\b" + - statement: "\\b(sort-by|source|split chars|split column|split row)\\b" + - statement: "\\b(split-by|split|std|std|str camel-case|str capitalize)\\b" + - statement: "\\b(str collect|str contains|str downcase|str ends-with|str find-replace)\\b" + - statement: "\\b(str index-of|str kebab-case|str length|str lpad|str pascal-case)\\b" + - statement: "\\b(str replace|str reverse|str rpad|str screaming-snake-case)\\b" + - statement: "\\b(str snake-case|str starts-with|str substring|str title-case)\\b" + - statement: "\\b(str to-datetime|str to-decimal|str to-int|str trim|str upcase)\\b" + - statement: "\\b(str-lengths|str-slice|strftime|str|sum|sys|table)\\b" + - statement: "\\b(take until|take while|take|term size|to csv)\\b" + - statement: "\\b(to html|to json|to md|to nuon|to text|to toml|to tsv)\\b" + - statement: "\\b(to url|to xml|to yaml|to-csv|to-df|to-dummies|to-lazy)\\b" + - statement: "\\b(to-lowercase|to-nu|to-parquet|to-uppercase|touch|to)\\b" + - statement: "\\b(transpose|tutor|unalias|uniq|unique|update|update cells)\\b" + - statement: "\\b(upsert|url host|url path|url query|url scheme|url)\\b" + - statement: "\\b(use|value-counts|var|version|view-source|watch)\\b" + - statement: "\\b(when|where|which|window|with-column|with-env|wrap)\\b" + # https://www.nushell.sh/book/types_of_data.html#booleans + - constant: "\\b(false|true)\\b" + - constant.number: "\\b[-+]?([1-9][0-9])*\\b" + # https://www.nushell.sh/book/types_of_data.html#binary-data + - constant.number: "\\b[-+]?(0(x|b|o)\\[[0-9a-fA-F ]+\\])" + # https://www.nushell.sh/book/types_of_data.html#file-sizes + - constant.number: "\\b[-+]?([0-9]+[BbMmGgTtPp][i]?[Bb]?)?\\b" + # https://www.nushell.sh/book/types_of_data.html#duration + - constant.number: "\\b[-+]?([0-9]+[num]?[s])?\\b" + - constant.number: "\\b[-+]?([0-9]+(sec|min|hr|day|wk))?\\b" + # https://www.nushell.sh/book/types_of_data.html#dates + - constant.number: "\\b([0-9]+[-][0-9]+[-][0-9]+([T][0-9]+[:][0-9]+[:][0-9]+)?([\\+][0-9]+[:][0-9]+)?)\\b" + # https://www.nushell.sh/book/types_of_data.html#ranges + - constant.number: "([0-9]+(\\.\\.)[0-9]+)?" + # https://www.nushell.sh/book/types_of_data.html#open-ended-ranges + - constant.number: "((\\.\\.)[0-9]+)?" + - constant.number: "([0-9]+(\\.\\.))?" + - comment: + start: "#" + end: "$" + rules: + - todo: "(FIXME|TODO|NOTE):?" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." diff --git a/config/micro/syntax/objc.yaml b/config/micro/syntax/objc.yaml new file mode 100644 index 0000000..d4cccac --- /dev/null +++ b/config/micro/syntax/objc.yaml @@ -0,0 +1,60 @@ +filetype: objective-c + +detect: + filename: "\\.(m|mm|h)$" + signature: "(obj|objective)-c|#import|@(encode|end|interface|implementation|selector|protocol|synchronized|try|catch|finally|property|optional|required|import|autoreleasepool)" + +rules: + - type: "\\b(float|double|CGFloat|id|bool|BOOL|Boolean|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline|Class|SEL|IMP|NS(U)?Integer)\\b" + - type: "\\b((s?size)|((u_?)?int(8|16|32|64|ptr)))_t\\b" + - type: "\\b[A-Z][A-Z][[:alnum:]]*\\b" + - type: "\\b[A-Za-z0-9_]*_t\\b" + - type: "\\bdispatch_[a-zA-Z0-9_]*_t\\b" + + - statement: "(__attribute__[[:space:]]*\\(\\([^)]*\\)\\)|__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__|__unused|_Nonnull|_Nullable|__block|__builtin.*)" + - statement: "\\b(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\\b" + - statement: "\\b(for|if|while|do|else|case|default|switch)\\b" + - statement: "\\b(try|throw|catch|operator|new|delete)\\b" + - statement: "\\b(goto|continue|break|return)\\b" + - statement: "\\b(nonatomic|atomic|readonly|readwrite|strong|weak|assign)\\b" + - statement: "@(encode|end|interface|implementation|class|selector|protocol|synchronized|try|catch|finally|property|optional|required|import|autoreleasepool)" + + - preproc: "^[[:space:]]*#[[:space:]]*(define|include|import|(un|ifn?)def|endif|el(if|se)|if|warning|error|pragma).*$" + - preproc: "__[A-Z0-9_]*__" + + - special: "^[[:space:]]*[#|@][[:space:]]*(import|include)[[:space:]]*[\"|<].*\\/?[>|\"][[:space:]]*$" + + - statement: "([.:;,+*|=!\\%\\[\\]]|<|>|/|-|&)" + + - constant.number: "(\\b(-?)?[0-9]+\\b|\\b\\[0-9]+\\.[0-9]+\\b|\\b0x[0-9a-fA-F]+\\b)" + - constant: "(@\\[(\\\\.|[^\\]])*\\]|@\\{(\\\\.|[^\\}])*\\}|@\\((\\\\.|[^\\)])*\\))" + - constant: "\\b<(\\\\.[^\\>])*\\>\\b" + - constant: "\\b(nil|NULL|YES|NO|TRUE|true|FALSE|false|self)\\b" + - constant: "\\bk[[:alnum]]*\\b" + - constant.string: "'.'" + + - constant.string: + start: "@\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/ocaml.yaml b/config/micro/syntax/ocaml.yaml new file mode 100644 index 0000000..d7915e5 --- /dev/null +++ b/config/micro/syntax/ocaml.yaml @@ -0,0 +1,43 @@ +filetype: ocaml + +detect: + filename: "\\.mli?$" + +rules: + - identifier: "\\b[A-Z][0-9a-z_]{2,}\\b" + #declarations + - statement: "\\b(let|val|method|in|and|rec|private|virtual|constraint)\\b" + #structure items + - type: "\\b(type|open|class|module|exception|external)\\b" + #patterns + - statement: "\\b(fun|function|functor|match|try|with)\\b" + #patterns-modifiers + - statement: "\\b(as|when|of)\\b" + #conditions + - statement: "\\b(if|then|else)\\b" + #blocs + - type: "\\b(begin|end|object|struct|sig|for|while|do|done|to|downto)\\b" + - type: "'[0-9A-Za-z_]+" + #constantes + - constant.bool: "\\b(true|false)\\b" + #modules/classes + - special: "\\b(include|inherit|initializer)\\b" + #expr modifiers + - special: "\\b(new|ref|mutable|lazy|assert|raise)\\b" + #character literal + - constant.string: "'(\\\\[0-7]{3}|\\\\x[A-Fa-f0-9]{2}|\\\\u[A-Fa-f0-9]{4}|\\\\U[A-Fa-f0-9]{8}|\\\\[abfnrtv'\\\"\\\\]|.)'" + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + #string literal + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + - comment: + start: "\\(\\*" + end: "\\*\\)" + rules: [] diff --git a/config/micro/syntax/octave.yaml b/config/micro/syntax/octave.yaml new file mode 100644 index 0000000..ce740a2 --- /dev/null +++ b/config/micro/syntax/octave.yaml @@ -0,0 +1,83 @@ +# References +# https://github.com/micro-editor/micro/blob/master/runtime/syntax/go.yaml +# https://github.com/vim-scripts/octave.vim--/blob/master/syntax/octave.vim +# +# TODO +# include only needed operators +# ... highlighting +# built-in function highlighting? +# highlight eps/pi/e etc. as functions when followed by () +# what are skip and error fields in strings? +# multiline comments not working + +filetype: octave + +detect: + filename: "\\.m$" + +rules: + # Statements https://www.gnu.org/software/octave/doc/v4.0.0/Statements.html + - statement: "\\b(function|endfunction|return|end|global|persistent)\\b" + - statement: "\\b(if|elseif|else|endif|switch|case|otherwise|endswitch)\\b" + - statement: "\\b(while|endwhile|do|until|for|endfor|parfor|endparfor|break|continue)\\b" + - statement: "\\b(unwind_protect|unwind_protect_cleanup|end_unwind_protect|try|catch|end_try_catch)\\b" + + # Operators + - symbol.operator: "[-+/*=<>!~%&|^]|:=" + + # Brackets + - symbol.brackets: "(\\{|\\})" + - symbol.brackets: "(\\(|\\))" + - symbol.brackets: "(\\[|\\])" + + # Commas + - symbol: "," + + # Numbers https://www.gnu.org/software/octave/doc/v4.0.1/Mathematical-Constants.html + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" + - constant.number: "\\b(pi|e|I|Inf|NaN|eps|realmax|realmin)\\b|" + + # Boolean + - constant.bool: "\\b(true|false)\\b" + + # Strings https://www.gnu.org/software/octave/doc/v4.0.1/Strings.html + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%" + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "%" + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + # Comments https://www.gnu.org/software/octave/doc/v4.2.1/Comments.html + - comment: + start: "%" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + - comment: + start: "%{" + end: "%}" + rules: + - todo: "(TODO|XXX|FIXME):?" + - comment: + start: "#{" + end: "#}" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/odin.yaml b/config/micro/syntax/odin.yaml new file mode 100644 index 0000000..1326356 --- /dev/null +++ b/config/micro/syntax/odin.yaml @@ -0,0 +1,64 @@ +filetype: odin + +detect: + filename: "\\.odin$" + +rules: + # Conditionals and control flow + - special: "\\b(asm|auto_cast|break|case|cast|context|continue|do|dynamic|fallthrough|return|transmute|using|where)\\b" + - statement: "\\b(else|for|if|switch|in|not_in|or_else|or_return|when)\\b" + - preproc: "\\b(assert|package|foreign|import|proc|defer|make|new|free|delete|copy|len|cap|append|raw_data)\\b" + - preproc: "\\b((size|align|offset|type|type_info|typeid)_of|offset_of_by_string)\\b" + - preproc: "\\b(swizzle|complex|quaternion|real|imag|jmag|kmag|conj|expand_to_tuple|min|max|abs|clamp|soa_zip|soa_unzip|transpose|outer_product|hadamard_product|matrix_flatten)\\b" + - symbol.operator: "[-+/*=<>!~%&|^@]|:\\s*=|:\\s*:|\\?" + + # Types + - symbol: "(,|\\.)" + - type: "\\b(b(8|16|32|64)|(i|u)(8|(16|32|64|128)(le|be)?)|f(16|32|64)(le|be)?|complex(32|64|128)|quaternion(64|128|256))\\b" + - type: "\\b(any|bool|byte|rune|u?int|uintptr|rawptr|c?string|map|matrix|typeid)\\b" + - type.keyword: "\\b(distinct|struct|enum|union|bit_set)\\b" + - constant.bool: "\\b(true|false|nil)\\b" + + # Brackets + - symbol.brackets: "(\\{|\\})" + - symbol.brackets: "(\\(|\\))" + - symbol.brackets: "(\\[|\\])" + + # Numbers and strings + - constant.number: "\\b(0b[01]*|0o[0-7]*|0x[0-9a-fA-F]*|[0-9_]+|0d[0-9]*|0z[0-9abAB]*)\\b|'.'" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{1,3}|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" + + - constant.string: + start: "`" + end: "`" + rules: [] + + - comment: + start: "//" + end: "$" + rules: + - todo: "TODO:?|NOTE(\\(.*\\))?:?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "TODO:?|NOTE(\\(.*\\))?:?" diff --git a/config/micro/syntax/pascal.yaml b/config/micro/syntax/pascal.yaml new file mode 100644 index 0000000..ca6a416 --- /dev/null +++ b/config/micro/syntax/pascal.yaml @@ -0,0 +1,45 @@ +filetype: pascal + +detect: + filename: "\\.pas$" + +rules: + - type: "\\b(?i:(string|ansistring|widestring|shortstring|char|ansichar|widechar|boolean|byte|shortint|word|smallint|longword|cardinal|longint|integer|int64|single|currency|double|extended))\\b" + - statement: "\\b(?i:(and|asm|array|begin|break|case|const|constructor|continue|destructor|div|do|downto|else|end|file|for|function|goto|if|implementation|in|inline|interface|label|mod|not|object|of|on|operator|or|packed|procedure|program|record|repeat|resourcestring|set|shl|shr|then|to|type|unit|until|uses|var|while|with|xor))\\b" + - statement: "\\b(?i:(as|class|dispose|except|exit|exports|finalization|finally|inherited|initialization|is|library|new|on|out|property|raise|self|threadvar|try))\\b" + - statement: "\\b(?i:(absolute|abstract|alias|assembler|cdecl|cppdecl|default|export|external|forward|generic|index|local|name|nostackframe|oldfpccall|override|pascal|private|protected|public|published|read|register|reintroduce|safecall|softfloat|specialize|stdcall|virtual|write))\\b" + - constant: "\\b(?i:(false|true|nil))\\b" + - special: + start: "asm" + end: "end" + rules: [] + - constant.number: "\\$[0-9A-Fa-f]+" + - constant.number: "\\b[+-]?[0-9]+([.]?[0-9]+)?(?i:e[+-]?[0-9]+)?" + - constant.string: + start: "#[0-9]{1,}" + end: "$" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - preproc: + start: "{\\$" + end: "}" + rules: [] + - comment: + start: "//" + end: "$" + rules: [] + - comment: + start: "\\(\\*" + end: "\\*\\)" + rules: [] + - comment: + start: "({)(?:[^$])" + end: "}" + rules: [] + diff --git a/config/micro/syntax/patch.yaml b/config/micro/syntax/patch.yaml new file mode 100644 index 0000000..996bdc3 --- /dev/null +++ b/config/micro/syntax/patch.yaml @@ -0,0 +1,14 @@ +filetype: patch + +detect: + filename: "\\.(patch|diff)$" + header: "^diff" + +rules: + - brightgreen: "^\\+.*" + - green: "^\\+\\+\\+.*" + - brightblue: "^ .*" + - brightred: "^-.*" + - red: "^---.*" + - brightyellow: "^@@.*" + - magenta: "^diff.*" diff --git a/config/micro/syntax/peg.yaml b/config/micro/syntax/peg.yaml new file mode 100644 index 0000000..0b8d1ed --- /dev/null +++ b/config/micro/syntax/peg.yaml @@ -0,0 +1,16 @@ +filetype: peg + +detect: + filename: "\\.l?peg$" + +rules: + - identifier: "^[[:space:]]*[A-Za-z][A-Za-z0-9_]*[[:space:]]*<-" + - constant.number: "\\^[+-]?[0-9]+" + - symbol.operator: "[-+*?^/!&]|->|<-|=>" + - identifier.var: "%[A-Za-z][A-Za-z0-9_]*" + - special: "\\[[^]]*\\]" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - comment: "(^|[[:space:]])\\-\\-.*$" + - todo: "TODO:?" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/perl.yaml b/config/micro/syntax/perl.yaml new file mode 100644 index 0000000..2b01b89 --- /dev/null +++ b/config/micro/syntax/perl.yaml @@ -0,0 +1,58 @@ +filetype: perl + +detect: + filename: "\\.p[lmp]$" + header: "^#!.*/(env +)?perl( |$)" + +rules: + - type: "\\b(accept|alarm|atan2|bin(d|mode)|c(aller|homp|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\\b|\\b(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\\b|\\b(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|say|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\\b|\\b(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\\b|\\b(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\\b" + - statement: "\\b(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\\b" + + - special: "\\-\\>" + - symbol: "(,|\\.)" + + #regexes + - identifier.macro: "m?\\/.*?\\/[a-z]*" + - identifier.macro: "m?\\|.*?\\|[a-z]*" + - identifier.macro: "\\bs/.*?/.*?/[a-z]*" + - identifier.macro: "\\bs\\|.*?\\|.*?\\|[a-z]*" + + - constant.string: + start: '"' + end: '"' + skip: '\\"' + rules: + - identifier.var: '[\\$@%].[a-zA-Z0-9_]*' + + - constant.string: + start: "'" + end: "'" + skip: "\\\\'" + rules: [] + + - comment: + start: "#" + end: "$" + rules: [] + + - constant.string: "\"\\(.*\\)\"|qq?\\|.*\\||qq?\\{.*\\}|qq?\\/.*\\/" + - constant.number: "\\b([0-9]*[.])?[0-9]+" + - constant.number: "\\b[0-9]+" + - constant.number: "\\b0x[a-f0-9]+" + - constant.string.url: "`(.+?)`" + - identifier.var: '[\\$@%].[a-zA-Z0-9_]*' + + - preproc: + start: "(^use| = new)" + end: ";" + rules: [] + + - comment: + start: "^=" + end: "^=cut" + rules: [] + + - identifier.macro: + start: "<< 'STOP'" + end: "STOP" + rules: [] diff --git a/config/micro/syntax/php.yaml b/config/micro/syntax/php.yaml new file mode 100644 index 0000000..eb8cbdc --- /dev/null +++ b/config/micro/syntax/php.yaml @@ -0,0 +1,60 @@ +filetype: php + +detect: + filename: "\\.php[2345s~]?$" + +rules: + - symbol.operator: "<|>" + - error: "<[^!].*?>" + - symbol.tag: "(?i)<[/]?(a(bbr|cronym|ddress|pplet|rea|rticle|side|udio)?|b(ase(font)?|d(i|o)|ig|lockquote|r)?|ca(nvas|ption)|center|cite|co(de|l|lgroup)|d(ata(list)?|d|el|etails|fn|ialog|ir|l|t)|em(bed)?|fieldset|fig(caption|ure)|font|form|(i)?frame|frameset|h[1-6]|hr|i|img|in(put|s)|kbd|keygen|label|legend|li(nk)?|ma(in|p|rk)|menu(item)?|met(a|er)|nav|no(frames|script)|o(l|pt(group|ion)|utput)|p(aram|icture|re|rogress)?|q|r(p|t|uby)|s(trike)?|samp|se(ction|lect)|small|source|span|strong|su(b|p|mmary)|textarea|time|track|u(l)?|var|video|wbr)( .*|>)*?>" + - symbol.tag.extended: "(?i)<[/]?(body|div|html|head(er)?|footer|title|table|t(body|d|h(ead)?|r|foot))( .*|>)*?>" + - preproc: "(?i)<[/]?(script|style)( .*|>)*?>" + - preproc: "<\\?(php|=)?" + - preproc: "\\?>" + - preproc: "" + - special: "&[^;[[:space:]]]*;" + - symbol: "[:=]" + - identifier: "(alt|bgcolor|height|href|label|longdesc|name|onclick|onfocus|onload|onmouseover|size|span|src|style|target|type|value|width)=" + - constant.number: "(?i)#[0-9a-fA-F]{6,6}" + - constant.string.url: "(ftp(s)?|http(s)?|git|chrome)://[^ ]+" + - comment: "" + - default: "<\\?(php|=)\" end=\"\\?>" + - identifier.class: "([a-zA-Z0-9_-]+)\\(" + - type: "\\b(array|bool|callable|float|int|iterable|object|mixed|string|void)\\b" + - identifier.class: "[a-zA-Z\\\\]+::" + - identifier: "\\b([A-Z][a-zA-Z0-9_]+)\\b" + - identifier: "([A-Z0-9_]+)[;|\\s|\\)|,]" + - type.keyword: "\\b(global|final|public|private|protected|static|const|var)\\b" + - statement: "\\b(abstract|catch|class|declare|do|else(if)?|end(declare|for(each)?|if|switch|while)|enum|finally|for(each)|function|if|interface|namespace|switch|trait|try|while)\\b" + - identifier: "\\bnew\\s+([a-zA-Z0-9\\\\]+)" + - special: "\\b(as|and|break|case|clone|continue|default|die|fn|echo|empty|eval|exit|extends|goto|or|include(_once)?|implements|instanceof|insteadof|isset|list|match|new|print|return|require(_once)?|unset|use|throw|xor|yield(\\s+from))\\b" + - constant.bool: "\\b(true|false|null|TRUE|FALSE|NULL)\\b" + - constant: "[\\s|=|\\s|\\(|/|+|-|\\*|\\[]" + - constant.number: "[0-9]" + - identifier: "(\\$this|parent|self|\\$this->)" + - symbol.operator: "(=>|===|!==|==|!=|&&|\\|\\||::|=|->|\\!)" + - identifier.var: "(\\$[a-zA-Z0-9\\-_]+)" + - symbol.operator: "[\\(|\\)|/|+|\\-|\\*|\\[|.|,|;]" + - symbol.brackets: "(\\[|\\]|\\{|\\}|[()])" + + - comment: + start: "(^|[[:space:]])*(//|#)" + end: "$" + rules: [] + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" diff --git a/config/micro/syntax/pkg-config.yaml b/config/micro/syntax/pkg-config.yaml new file mode 100644 index 0000000..8a2b56a --- /dev/null +++ b/config/micro/syntax/pkg-config.yaml @@ -0,0 +1,12 @@ +filetype: pc + +detect: + filename: "\\.pc$" + +rules: + - preproc: "^(Name|Description|URL|Version|Conflicts|Cflags):" + - preproc: "^(Requires|Libs)(\\.private)?:" + - symbol.operator: "=" + - identifier.var: "\\$\\{[A-Za-z_][A-Za-z0-9_]*\\}" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/po.yaml b/config/micro/syntax/po.yaml new file mode 100644 index 0000000..7b157fb --- /dev/null +++ b/config/micro/syntax/po.yaml @@ -0,0 +1,12 @@ +filetype: po + +detect: + filename: "\\.pot?$" + +rules: + - preproc: "\\b(msgid|msgstr)\\b" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - special: "\\\\.?" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/pony.yaml b/config/micro/syntax/pony.yaml new file mode 100644 index 0000000..214f11d --- /dev/null +++ b/config/micro/syntax/pony.yaml @@ -0,0 +1,37 @@ +filetype: pony + +detect: + filename: "\\.pony$" + +rules: + - statement: "\\b(type|interface|trait|primitive|class|struct|actor)\\b" + - statement: "\\b(compiler_intrinsic)\\b" + - statement: "\\b(use)\\b" + - statement: "\\b(var|let|embed)\\b" + - statement: "\\b(new|be|fun)\\b" + - statement: "\\b(iso|trn|ref|val|box|tag|consume)\\b" + - statement: "\\b(break|continue|return|error)\\b" + - statement: "\\b(if|then|elseif|else|end|match|where|try|with|as|recover|object|lambda|as|digestof|ifdef)\\b" + - statement: "\\b(while|do|repeat|until|for|in)\\b" + - statement: "(\\?|=>)" + - statement: "(\\||\\&|\\,|\\^)" + - symbol.operator: "(\\-|\\+|\\*|/|\\!|%|<<|>>)" + - symbol.operator: "(==|!=|<=|>=|<|>)" + - statement: "\\b(is|isnt|not|and|or|xor)\\b" + - type: "\\b(_*[A-Z][_a-zA-Z0-9\\']*)\\b" + - constant: "\\b(this)\\b" + - constant.bool: "\\b(true|false)\\b" + - constant.number: "\\b((0b[0-1_]*)|(0o[0-7_]*)|(0x[0-9a-fA-F_]*)|([0-9_]+(\\.[0-9_]+)?((e|E)(\\\\+|-)?[0-9_]+)?))\\b" + - constant.string: "\"(\\\\.|[^\"])*\"" + - comment: + start: "\"\"\"[^\"]*" + end: "\"\"\"" + rules: [] + + - comment: "(^|[[:space:]])//.*" + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + + - todo: "TODO:?" diff --git a/config/micro/syntax/pov.yaml b/config/micro/syntax/pov.yaml new file mode 100644 index 0000000..ddf8496 --- /dev/null +++ b/config/micro/syntax/pov.yaml @@ -0,0 +1,21 @@ +filetype: pov + +detect: + filename: "\\.(pov|POV|povray|POVRAY)$" + +rules: + - preproc: "^[[:space:]]*#[[:space:]]*(declare)" + - statement: "\\b(sphere|cylinder|translate|matrix|rotate|scale)\\b" + - statement: "\\b(orthographic|location|up|right|direction|clipped_by)\\b" + - statement: "\\b(fog_type|fog_offset|fog_alt|rgb|distance|transform)\\b" + - identifier: "^\\b(texture)\\b" + - identifier: "\\b(light_source|background)\\b" + - identifier: "\\b(fog|object|camera)\\b" + - symbol.operator: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|!|=|&|\\|)" + - special: "\\b(union|group|subgroup)\\b" + - comment: "//.*" + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + diff --git a/config/micro/syntax/privoxy-action.yaml b/config/micro/syntax/privoxy-action.yaml new file mode 100644 index 0000000..6ecb877 --- /dev/null +++ b/config/micro/syntax/privoxy-action.yaml @@ -0,0 +1,14 @@ +filetype: privoxy-action + +detect: + filename: "\\.action$" + +rules: + - constant.bool.false: "[{[:space:]]\\-block([[:space:]{}]|$)" + - constant.bool.true: "[{[:space:]]\\+block([[:space:]{}]|$)" + - constant.bool.false: "-(add-header|change-x-forwarded-for|client-header-filter|client-header-tagger|content-type-overwrite|crunch-client-header|crunch-if-none-match|crunch-incoming-cookies|crunch-outgoing-cookies|crunch-server-header|deanimate-gifs|downgrade-http-version|fast-redirects|filter|force-text-mode|forward-override|handle-as-empty-document|handle-as-image|hide-accept-language|hide-content-disposition|hide-from-header|hide-if-modified-since|hide-referrer|hide-user-agent|limit-connect|overwrite-last-modified|prevent-compression|redirect|server-header-filter|server-header-tagger|session-cookies-only|set-image-blocker)" + - constant.bool.true: "\\+(add-header|change-x-forwarded-for|client-header-filter|client-header-tagger|content-type-overwrite|crunch-client-header|crunch-if-none-match|crunch-incoming-cookies|crunch-outgoing-cookies|crunch-server-header|deanimate-gifs|downgrade-http-version|fast-redirects|filter|force-text-mode|forward-override|handle-as-empty-document|handle-as-image|hide-accept-language|hide-content-disposition|hide-from-header|hide-if-modified-since|hide-referrer|hide-user-agent|limit-connect|overwrite-last-modified|prevent-compression|redirect|server-header-filter|server-header-tagger|session-cookies-only|set-image-blocker)" + - constant.specialChar: "\\\\.?" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/privoxy-config.yaml b/config/micro/syntax/privoxy-config.yaml new file mode 100644 index 0000000..7eb0898 --- /dev/null +++ b/config/micro/syntax/privoxy-config.yaml @@ -0,0 +1,10 @@ +filetype: privoxy-config + +detect: + filename: "privoxy/config$" + +rules: + - statement: "(accept-intercepted-requests|actionsfile|admin-address|allow-cgi-request-crunching|buffer-limit|compression-level|confdir|connection-sharing|debug|default-server-timeout|deny-access|enable-compression|enable-edit-actions|enable-remote-http-toggle|enable-remote-toggle|enforce-blocks|filterfile|forward|forwarded-connect-retries|forward-socks4|forward-socks4a|forward-socks5|handle-as-empty-doc-returns-ok|hostname|keep-alive-timeout|listen-address|logdir|logfile|max-client-connections|permit-access|proxy-info-url|single-threaded|socket-timeout|split-large-forms|templdir|toggle|tolerate-pipelining|trustfile|trust-info-url|user-manual)[[:space:]]" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/privoxy-filter.yaml b/config/micro/syntax/privoxy-filter.yaml new file mode 100644 index 0000000..5213938 --- /dev/null +++ b/config/micro/syntax/privoxy-filter.yaml @@ -0,0 +1,12 @@ +filetype: privoxy-filter + +detect: + filename: "\\.filter$" + +rules: + - statement: "^(FILTER|CLIENT-HEADER-FILTER|CLIENT-HEADER-TAGGER|SERVER-HEADER-FILTER|SERVER-HEADER-TAGGER): [a-z-]+" + - identifier: "^(FILTER|CLIENT-HEADER-FILTER|CLIENT-HEADER-TAGGER|SERVER-HEADER-FILTER|SERVER-HEADER-TAGGER):" + - constant.specialChar: "\\\\.?" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/proto.yaml b/config/micro/syntax/proto.yaml new file mode 100644 index 0000000..01e2ee0 --- /dev/null +++ b/config/micro/syntax/proto.yaml @@ -0,0 +1,40 @@ +filetype: proto + +detect: + filename: "(\\.(proto)$$)" + +rules: + - identifier: "\\b[A-Z_][0-9A-Z_]+\\b" + - type: "\\b(int(8|16|32|64))|string|bytes|repeated|bool|required|map|optional|oneof|union\\b" + - statement: "\\b(import|service|enum|syntax|package|option|message|rpc|returns|extensions|to)\\b" + - constant: "'\\\\(([0-3]?[0-7]{1,2}))'" + - constant: "'\\\\x[0-9A-Fa-f]{1,2}'" + - symbol.brackets: "[(){}]|\\[|\\]" + - constant.number: "(\\b[0-9]+\\b|\\b0x[0-9A-Fa-f]+\\b)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - preproc: "..+" + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/prql.yaml b/config/micro/syntax/prql.yaml new file mode 100644 index 0000000..e05aaa9 --- /dev/null +++ b/config/micro/syntax/prql.yaml @@ -0,0 +1,84 @@ +# https://prql-lang.org/ +# https://github.com/PRQL/prql +filetype: prql + +detect: + filename: "\\.prql$" + +rules: + - statement: "\\b(let|module|into|case|type|func)\\b" + + # Types + - type: "\\b(u?int(8|16|32|64)?|float(32|64)|bool|text|date|time|timestamp)\\b" + - type.keyword: "\\b(enum)\\b" + - constant.bool: "\\b(true|false|null|this|that)\\b" + + # Built-in functions + - identifier: "\\b(abs|floor|ceil|pi|exp|ln|log10|log|sqrt|degrees|radians|cos|acos|sin|asin|tan|atan|pow|round)\\b" # Math module + - identifier: "\\b(min|max|sum|average|stddev|all|any|concat_array|count)\\b" # Aggregate functions + - identifier: "\\b(lag|lead|first|last|rank|rank_dense|row_number)\\b" # Window functions + - identifier: "\\b(tuple_every|tuple_map|tuple_zip|_eq|_is_null)\\b" # Tuple functions + - identifier: "\\b(as|in|from_text)\\b" # Misc + - identifier: "\\b(lower|upper|ltrim|rtrim|trim|length|extract|replace|starts_with|contains|ends_with)\\b" # Text module + - identifier: "\\b(to_text)\\b" # Date module + - identifier: "\\b(read_parquet|read_csv)\\b" # File-reading functions + + # Modules + - identifier.class: "\\b(math|text|date|prql)\\b" + + # Transforms + - statement: "\\b(aggregate|derive|filter|from|group|join|select|sort|take|window)\\b" + + # Operators + - symbol.operator: "([~^.:;,+*|=!\\%@?]|<|>|/|-|&)" + + # Brackets + - symbol.brackets: "[{}()\\[\\]]" + + # Numbers + - constant.number: "\\b[0-9](_?[0-9])*(\\.([0-9](_?[0-9])*)?)?(e[0-9](_?[0-9])*)?\\b" # decimal + - constant.number: "\\b0b(_?[01])+\\b" # bin + - constant.number: "\\b0o(_?[0-7])+\\b" # oct + - constant.number: "\\b0x(_?[0-9a-fA-F])+\\b" # hex + - constant: "\\b[0-9]+(years|months|weeks|days|hours|minutes|seconds|milliseconds|microseconds)\\b" + + - constant.string: + start: "[frs]?\"\"\"" + end: "\"\"\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[bfnrt'\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u\\{[0-9A-Fa-f]{1,6}\\})" + + - constant.string: + start: "[frs]?'''" + end: "'''" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[bfnrt'\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u\\{[0-9A-Fa-f]{1,6}\\})" + + - constant.string: + start: "[frs]?\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[bfnrt'\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u\\{[0-9A-Fa-f]{1,6}\\})" + + - constant.string: + start: "[frs]?'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\[bfnrt'\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u\\{[0-9A-Fa-f]{1,6}\\})" + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|FIXME|NOTE):?" + + # Decorators + - preproc: "@\\{([a-z]+(=[a-z0-9]+,?)?)*\\}" diff --git a/config/micro/syntax/puppet.yaml b/config/micro/syntax/puppet.yaml new file mode 100644 index 0000000..63a11eb --- /dev/null +++ b/config/micro/syntax/puppet.yaml @@ -0,0 +1,22 @@ +filetype: puppet + +detect: + filename: "\\.pp$" + +rules: + - default: "^[[:space:]]([a-z][a-z0-9_]+)" + - identifier.var: "\\$[a-z:][a-z0-9_:]+" + - type: "\\b(augeas|computer|cron|exec|file|filebucket|group|host|interface|k5login|macauthorization|mailalias|maillist|mcx|mount|nagios_command|nagios_contact|nagios_contactgroup|nagios_host|nagios_hostdependency|nagios_hostescalation|nagios_hostextinfo|nagios_hostgroup|nagios_service|nagios_servicedependency|nagios_serviceescalation|nagios_serviceextinfo|nagios_servicegroup|nagios_timeperiod|notify|package|resources|router|schedule|scheduled_task|selboolean|selmodule|service|ssh_authorized_key|sshkey|stage|tidy|user|vlan|yumrepo|zfs|zone|zpool|anchor)\\b" + - statement: "\\b(class|define|if|else|undef|inherits)\\b" + - symbol: "(=|-|~|>)" + - identifier.var: "(\\$|@|@@)?\\b[A-Z]+[0-9A-Z_a-z]*" + - symbol: "([ ]|^):[0-9A-Z_]+\\b" + - constant: "/([^/]|(\\\\/))*/[iomx]*|%r\\{([^}]|(\\\\}))*\\}[iomx]*" + - constant.string: "`[^`]*`|%x\\{[^}]*\\}" + - constant.string: "\"([^\"]|(\\\\\"))*\"|%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - special: "\\$\\{[^}]*\\}" + - constant.string: "'([^']|(\\\\'))*'|%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + - comment: "#[^{].*$|#$" + - comment.bright: "##[^{].*$|##$" + - todo: "(XXX|TODO|FIXME|\\?\\?\\?)" + - indent-char.whitespace: "[[:space:]]+$" diff --git a/config/micro/syntax/python2.yaml b/config/micro/syntax/python2.yaml new file mode 100644 index 0000000..3a993b0 --- /dev/null +++ b/config/micro/syntax/python2.yaml @@ -0,0 +1,60 @@ +filetype: python2 + +detect: + filename: "\\.py2$" + header: "^#!.*/(env +)?python2$" + +rules: + + # built-in objects + - constant: "\\b(None|self|True|False)\\b" + # built-in attributes + - constant: "\\b(__bases__|__builtin__|__class__|__debug__|__dict__|__doc__|__file__|__members__|__methods__|__name__|__self__)\\b" + # built-in functions + - identifier: "\\b(abs|apply|callable|chr|cmp|compile|delattr|dir|divmod|eval|exec|execfile|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|intern|isinstance|issubclass|len|locals|max|min|next|oct|open|ord|pow|range|raw_input|reduce|reload|repr|round|setattr|unichr|vars|zip|__import__)\\b" + # special method names + - identifier: "\\b(__abs__|__add__|__and__|__call__|__cmp__|__coerce__|__complex__|__concat__|__contains__|__del__|__delattr__|__delitem__|__dict__|__delslice__|__div__|__divmod__|__float__|__getattr__|__getitem__|__getslice__|__hash__|__hex__|__init__|__int__|__inv__|__invert__|__len__|__long__|__lshift__|__mod__|__mul__|__neg__|__nonzero__|__oct__|__or__|__pos__|__pow__|__radd__|__rand__|__rcmp__|__rdiv__|__rdivmod__|__repeat__|__repr__|__rlshift__|__rmod__|__rmul__|__ror__|__rpow__|__rrshift__|__rshift__|__rsub__|__rxor__|__setattr__|__setitem__|__setslice__|__str__|__sub__|__xor__)\\b" + # types + - type: "\\b(basestring|bool|buffer|bytearray|bytes|classmethod|complex|dict|enumerate|file|float|frozenset|int|list|long|map|memoryview|object|property|reversed|set|slice|staticmethod|str|super|tuple|type|unicode|xrange)\\b" + # definitions + - identifier: "def [a-zA-Z_0-9]+" + # keywords + - statement: "\\b(and|as|assert|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\\b" + # decorators + - preproc: "^\\s*@[^(]*" + # operators + - symbol.operator: "([.:;,+*|=!\\%@]|<|>|/|-|&)" + # parentheses + - symbol.brackets: "([(){}]|\\[|\\])" + # numbers + - constant.number: "\\b[0-9]+\\b" + + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + rules: [] + + - constant.string: + start: "'''" + end: "'''" + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: [] + diff --git a/config/micro/syntax/python3.yaml b/config/micro/syntax/python3.yaml new file mode 100644 index 0000000..a87a2cb --- /dev/null +++ b/config/micro/syntax/python3.yaml @@ -0,0 +1,62 @@ +filetype: python + +detect: + filename: "\\.py(3|w)?$" + header: "^#!.*/(env +)?python(3)?$" + +rules: + # built-in objects + - constant: "\\b(Ellipsis|None|self|cls|True|False)\\b" + # built-in attributes + - constant: "\\b(__bases__|__builtin__|__class__|__debug__|__dict__|__doc__|__file__|__members__|__methods__|__name__|__self__)\\b" + # built-in functions + - identifier: "\\b(abs|all|any|ascii|bin|bool|breakpoint|bytearray|bytes|callable|chr|classmethod|compile|complex|delattr|dir|divmod|eval|exec|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|locals|max|min|next|nonlocal|oct|open|ord|pow|print|repr|round|setattr|sorted|sum|vars|__import__)\\b" + # special method names + - identifier: "\\b__(abs|add|and|call|cmp|coerce|complex|concat|contains|delattr|delitem|delslice|del|dict|divmod|div|float|getattr|getitem|getslice|hash|hex|iadd|iand|iconcat|ifloordiv|ilshift|imatmul|imod|imul|init|int|invert|inv|ior|ipow|irshift|isub|iter|itruediv|ixor|len|long|lshift|mod|mul|neg|next|nonzero|oct|or|pos|pow|radd|rand|rcmp|rdivmod|rdiv|repeat|repr|rlshift|rmod|rmul|ror|rpow|rrshift|rshift|rsub|rxor|setattr|setitem|setslice|str|sub|xor)__\\b" + # types + - type: "\\b(bool|bytearray|bytes|classmethod|complex|dict|enumerate|filter|float|frozenset|int|list|map|memoryview|object|property|range|reversed|set|slice|staticmethod|str|super|tuple|type|zip)\\b" + # definitions + - identifier: "def [a-zA-Z_0-9]+" + # keywords + - statement: "\\b(and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|raise|return|try|while|with|yield)\\b" + # decorators + - preproc: "^\\s*@[^(]*" + # operators + - symbol.operator: "([~^.:;,+*|=!\\%@]|<|>|/|-|&)" + # parentheses + - symbol.brackets: "([(){}]|\\[|\\])" + # numbers + - constant.number: "\\b[0-9](_?[0-9])*(\\.([0-9](_?[0-9])*)?)?(e[0-9](_?[0-9])*)?\\b" # decimal + - constant.number: "\\b0b(_?[01])+\\b" # bin + - constant.number: "\\b0o(_?[0-7])+\\b" # oct + - constant.number: "\\b0x(_?[0-9a-fA-F])+\\b" # hex + + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + rules: [] + + - constant.string: + start: "'''" + end: "'''" + rules: [] + + - constant.string: + start: "\"" + end: "(\"|$)" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "('|$)" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: # AKA Code tags (PEP 350) + - todo: "(TODO|FIXME|HACK|BUG|NOTE|FAQ|MNEMONIC|REQ|RFE|IDEA|PORT|\\?\\?\\?|!!!|GLOSS|SEE|TODOC|STAT|RVD|CRED):?" diff --git a/config/micro/syntax/r.yaml b/config/micro/syntax/r.yaml new file mode 100644 index 0000000..d764c11 --- /dev/null +++ b/config/micro/syntax/r.yaml @@ -0,0 +1,32 @@ +filetype: r + +detect: + filename: "\\.(r|R)$" + +rules: + + - statement: "\\b(library|require|break|else|for|function|if|ifelse|in|next|names|switch|repeat|print|try|tryCatch|isTRUE|return|while)\\b" + - constant: "\\b(T|TRUE|F|FALSE|NULL|Inf|NaN|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\\b" + - constant.number: "(\\b[0-9]+\\b|\\b0x[0-9A-Fa-f]+\\b)" + - symbol.operator: "([.:;,+*|=!\\%]|<|>|/|-|&|\\^|\\$)" + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + diff --git a/config/micro/syntax/raku.yaml b/config/micro/syntax/raku.yaml new file mode 100644 index 0000000..7523be5 --- /dev/null +++ b/config/micro/syntax/raku.yaml @@ -0,0 +1,42 @@ +filetype: raku + +detect: + filename: "\\.(p(l|m|od)?6|raku(mod|doc|test)?|nqp)$" + +rules: + - type: "\\b(accept|alarm|atan2|bin(d|mode)|c(aller|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork)|get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join|keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek|seekdir|se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr|y|truncate|umask|un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\\b" + - statement: "\\b(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\\b" + - special: "\\b(has|is|class|role|given|when|BUILD|multi|returns|method|submethod|slurp|say|sub)\\b" + + - identifier: "[$@%&](\\.|!|\\^)?([[:alpha:]]|_)" + - identifier: "[$@%&](\\.|!|^)?([[:alpha:]]|_)([[:alnum:]]|-|_)*([[:alnum:]]|_)" + - identifier: "[$@%&](\\?|\\*)([A-Z])([A-Z]|-)*([A-Z])" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - preproc: + start: "(^use| = new)" + end: ";" + rules: [] + + - identifier.macro: + start: "<" + - special: "^%(build$|changelog|check$|clean$|description)" + - special: "^%(files|install$|package|prep$)" + - special: "^%(pre|preun|pretrans|post|postun|posttrans)" + - special: "^%(trigger|triggerin|triggerpostun|triggerun|verifyscript)" + - comment: "(^|[[:space:]])#([^{].*)?$" + - constant: "^\\*.*$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" + - todo: "TODO:?" diff --git a/config/micro/syntax/ruby.yaml b/config/micro/syntax/ruby.yaml new file mode 100644 index 0000000..dadb4c2 --- /dev/null +++ b/config/micro/syntax/ruby.yaml @@ -0,0 +1,73 @@ +filetype: ruby + +detect: + filename: '\.(rb|rake|gemspec)$|^(.*[\\/])?(Gemfile|config\.ru|Rakefile|Capfile|Vagrantfile|Guardfile|Appfile|Fastfile|Pluginfile|Podfile|\.?[Bb]rewfile)$' + header: "^#!.*/(env +)?ruby( |$)" + +rules: + - comment.bright: + start: "##" + end: "$" + rules: + - todo: "(XXX|TODO|FIXME|BUG|\\?\\?\\?)" + - comment: + start: "#" + end: "$" + rules: + - todo: "(XXX|TODO|FIXME|BUG|\\?\\?\\?)" + + - statement: "\\b(BEGIN|END|alias|and|begin|break|case|class|def|defined\\?|do|else|elsif|end|ensure|for|if|in|module|next|nil|not|or|private|protected|public|redo|rescue|retry|return|self|super|then|undef|unless|until|when|while|yield)\\b" + - constant: "(\\$|@|@@)?\\b[A-Z]+[0-9A-Z_a-z]*" + - constant.number: "(?i)\\b0x[0-9a-fA-F][0-9a-f_]*\\b" + - constant.number: "(?i)\\b0b[01][01_]*\\b" + - constant.number: "(?i)\\b[0-9][0-9_]*(['.'][0-9_]+)?(e[\\-]?[0-9_]+)?\\b" + # Predefined global variables + - constant: + start: "[$]([!@&`'+~=/\\\\,;.<>*$?:\"_]|-[A-Za-z0-9_]|[0-9]+)" + end: "\\B|\\b" + rules: [] + # Ruby "Symbols" + - constant: "(i?)([ ]|^):[0-9A-Z_]+\\b" + - constant: "\\b(__FILE__|__LINE__)\\b" + - constant: "/([^/]|(\\\\/))*/[iomx]*|%r\\{([^}]|(\\\\}))*\\}[iomx]*" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string.exec: + start: "`" + end: "`" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string: "%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - constant.string: "%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + - constant.string.exec: "%[x]\\{[^}]*\\}|%[x]\\([^)]*\\)|%[x]<[^>]*>|%[x]\\[[^]]*\\]|%[x]\\$[^$]*\\$|%[x]\\^[^^]*\\^|%[x]![^!]*!" + - constant.bool: "\\b(true|false|nil|TRUE|FALSE|NIL)\\b" + - symbol.operator: "[-+/*=<>!~%&|^]|\\b:" + - symbol.brackets: "([(){}]|\\[|\\])" + - constant.macro: + start: "<<-?'?EOT'?" + end: "^EOT" + rules: [] + + - preproc.shebang: "^#!.+?( |$)" diff --git a/config/micro/syntax/rust.yaml b/config/micro/syntax/rust.yaml new file mode 100644 index 0000000..5347e70 --- /dev/null +++ b/config/micro/syntax/rust.yaml @@ -0,0 +1,78 @@ +filetype: rust + +detect: + filename: "\\.rs$" + +rules: + # function definition + - identifier: "fn [a-z0-9_]+" + # Reserved words + - statement: "\\b(abstract|alignof|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|false|final|fn|for|gen|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|try|union|unsafe|unsized|use|virtual|where|while|yield)\\b" + # macros + - special: "[a-z_]+!" + # Constants + - constant: "\\b[A-Z][A-Z_0-9]+\\b" + # Numbers + - constant.number: "\\b[0-9]+\\b" + # Booleans + - constant: "\\b(true|false)\\b" + # Traits/Enums/Structs/Types/etc. + - type: "\\b[A-Z]+[a-zA-Z_0-9]*[a-z]+[a-zA-Z_0-9]*\\b" + # Builtin types that start with lowercase. + - type: "\\b(bool|str|char|((i|u)(8|16|32|64|128|size))|f(16|32|64|128))\\b" + + - constant.string: + start: "[bc]?\"" + end: "\"" + skip: '\\.' + rules: + - constant.specialChar: '\\.' + + - constant.string: + start: "[bc]?r#\"" + end: "\"#" + rules: [] + + - constant.string: + start: "[bc]?r##\"" + end: "\"##" + rules: [] + + - constant.string: + start: "[bc]?r###\"" + end: "\"###" + rules: [] + + - constant.string: + start: "[bc]?r####+\"" + end: "\"####+" + rules: [] + + # Character literals + # NOTE: This is an ugly hack to work around the fact that rust uses + # single quotes both for character literals and lifetimes. + # Match all character literals. + - constant.string: "'(\\\\.|.)'" + # Match the '"' literal which would otherwise match + # as a double quoted string and destroy the highlighting. + - constant.string: + start: "'\"" + end: "'" + rules: [] + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - special: + start: "#!\\[" + end: "\\]" + rules: [] diff --git a/config/micro/syntax/sage.yaml b/config/micro/syntax/sage.yaml new file mode 100644 index 0000000..e24fbeb --- /dev/null +++ b/config/micro/syntax/sage.yaml @@ -0,0 +1,60 @@ +filetype: sage + +detect: + filename: "\\.sage$" + header: "^#!.*/(env +)?sage( |$)" + +rules: + + # built-in objects + - constant: "\\b(None|self|True|False)\\b" + # built-in attributes + - constant: "\\b(__bases__|__builtin__|__class__|__debug__|__dict__|__doc__|__file__|__members__|__methods__|__name__|__self__)\\b" + # built-in functions + - identifier: "\\b(abs|apply|callable|chr|cmp|compile|delattr|dir|divmod|eval|exec|execfile|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|intern|isinstance|issubclass|len|locals|max|min|next|oct|open|ord|pow|range|raw_input|reduce|reload|repr|round|setattr|unichr|vars|zip|__import__)\\b" + # special method names + - identifier: "\\b(__abs__|__add__|__and__|__call__|__cmp__|__coerce__|__complex__|__concat__|__contains__|__del__|__delattr__|__delitem__|__dict__|__delslice__|__div__|__divmod__|__float__|__getattr__|__getitem__|__getslice__|__hash__|__hex__|__init__|__int__|__inv__|__invert__|__len__|__long__|__lshift__|__mod__|__mul__|__neg__|__nonzero__|__oct__|__or__|__pos__|__pow__|__radd__|__rand__|__rcmp__|__rdiv__|__rdivmod__|__repeat__|__repr__|__rlshift__|__rmod__|__rmul__|__ror__|__rpow__|__rrshift__|__rshift__|__rsub__|__rxor__|__setattr__|__setitem__|__setslice__|__str__|__sub__|__xor__)\\b" + # types + - type: "\\b(basestring|bool|buffer|bytearray|bytes|classmethod|complex|dict|enumerate|file|float|frozenset|int|list|long|map|memoryview|object|property|reversed|set|slice|staticmethod|str|super|tuple|type|unicode|xrange)\\b" + # definitions + - identifier: "def [a-zA-Z_0-9]+" + # keywords + - statement: "\\b(and|as|assert|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\\b" + # decorators + - brightgreen: "@.*[(]" + # operators + - statement: "([.:;,+*|=!\\%@]|<|>|/|-|&)" + # parentheses + - statement: "([(){}]|\\[|\\])" + # numbers + - constant.number: "\\b[0-9]+\\b" + + - comment: + start: "\"\"\"" + end: "\"\"\"" + rules: [] + + - comment: + start: "'''" + end: "'''" + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: [] + diff --git a/config/micro/syntax/scad.yaml b/config/micro/syntax/scad.yaml new file mode 100644 index 0000000..0108e3a --- /dev/null +++ b/config/micro/syntax/scad.yaml @@ -0,0 +1,53 @@ +filetype: OpenSCAD + +# OpenSCAD is a functional programming language used for representing +# 2D/3D models for use in the program of the same name. +# +# The following documents were used as reference material: +# https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/The_OpenSCAD_Language +# https://openscad.org/cheatsheet/index.html + +detect: + filename: "\\.scad$" + +rules: + - identifier: "\\b(function|module) +[a-z0-9_]+" + + - statement: "\\b(abs|acos|asin|assert|atan|atan2|ceil|child|children|chr|circle|color|concat|cos|cross|cube|cylinder|difference|dxf_cross|dxf_dim|each|echo|else|exp|floor|for|function|hull|if|import|import_dxf|intersection|intersection_for|is_bool|is_function|is_list|is_num|is_string|is_undef|len|let|linear_extrude|ln|log|lookup|max|min|minkowski|mirror|module|multmatrix|norm|offset|ord|parent_module|polygon|polyhedron|pow|projection|rands|render|resize|rotate|rotate_extrude|round|scale|search|sign|sin|sphere|sqrt|square|str|surface|tan|text|translate|union|version|version_num)\\b" + + - symbol: "[,\\.;:?]" + - symbol.operator: "[-+*/%^<>!=]|[<=>!]=|&&|\\|\\|" + - symbol.brackets: "[{(<>)}]|\\[|\\]" + + # modifiers that change interpretation of the subtree after it + - special: "[#%!*]" + + # special variables start with a dollar sign + - special: "\\B\\$[a-z]+\\b" + + - preproc: + start: "^ *(use|include) <" + end: ">;?" + rules: [] + + - constant.number: "\\b[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?|PI|inf|nan\\b" + - constant.bool: "\\b(true|false)\\b" + - constant: "\\b(undef)\\b" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/scala.yaml b/config/micro/syntax/scala.yaml new file mode 100644 index 0000000..e38137c --- /dev/null +++ b/config/micro/syntax/scala.yaml @@ -0,0 +1,33 @@ +filetype: scala + +detect: + filename: "\\.sc(ala)?$|\\.sbt$" + +rules: + - type: "\\b(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\\b" + - statement: "\\b(match|val|var|break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\\b" + - statement: "\\b(def|object|case|trait|lazy|implicit|abstract|class|extends|with|final|implements|override|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile|sealed)\\b" + - constant.string: + start: "\"\"\"" + end: "\"\"\"" + rules: [] + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant: "\\b(true|false|null)\\b" + - comment: + start: "//" + end: "$" + rules: [] + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + - comment: + start: "/\\*\\*" + end: "\\*/" + rules: [] + diff --git a/config/micro/syntax/sed.yaml b/config/micro/syntax/sed.yaml new file mode 100644 index 0000000..ed33bae --- /dev/null +++ b/config/micro/syntax/sed.yaml @@ -0,0 +1,13 @@ +filetype: sed + +detect: + filename: "\\.sed$" + header: "^#!.*bin/(env +)?sed( |$)" + +rules: + - symbol.operator: "[|^$.*+]" + - constant.number: "\\{[0-9]+,?[0-9]*\\}" + - constant.specialChar: "\\\\." + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/sh.yaml b/config/micro/syntax/sh.yaml new file mode 100644 index 0000000..e6f75a8 --- /dev/null +++ b/config/micro/syntax/sh.yaml @@ -0,0 +1,69 @@ +filetype: shell + +# Detection based on filename is rather complicated as there are many +# different file extensions and special filenames in use. +# This expressions aims to capture them all while not matching +# filenames that coincidentally contain the same substring. +# +# File extensions: +# * .sh +# * .bash +# * .ash +# * .ebuild (Gentoo ebuild format) +# +# Special filenames: +# * .bashrc, .bash_aliases, .bash_functions .bash_profile +# * profile, .profile (/etc/profile or ~/.profile) +# * Pkgfile +# * pkgmk.conf +# * rc.conf +# * PKGBUILD (Arch Linux build scripts) +# * APKBUILD +# +# Fix command (fc) files: +# * bash-fc. (followed by a random string) +detect: + filename: "(\\.(sh|bash|ash|ebuild)$|(\\.bash(rc|_aliases|_functions|_profile)|\\.?profile|Pkgfile|pkgmk\\.conf|rc\\.conf|PKGBUILD|APKBUILD)$|bash-fc\\.)" + header: "^#!.*/(env +)?(ba)?(a)?(mk)?sh( |$)" + +rules: + # Numbers + - constant.number: "\\b[0-9]+\\b" + # Conditionals and control flow + - statement: "\\b(break|case|continue|do|done|elif|else|esac|exec|exit|fi|for|function|if|in|return|select|then|trap|until|wait|while)\\b" + - special: "[`$<>!=&~^\\{\\}\\(\\)\\;\\]\\[]+" + # Shell commands + - type: "\\b(cd|command|echo|eval|export|getopts|let|local|read|set|shift|time|umask|unset)\\b" + # Common linux commands + - type: "\\b((g|ig)?awk|bash|dash|find|getopt|\\w{0,4}grep|kill|killall|\\w{0,4}less|make|pkill|sed|sh|tar)\\b" + # Coreutils commands + - type: "\\b(base64|basename|cat|chcon|chgrp|chmod|chown|chroot|cksum|comm|cp|csplit|cut|date|dd|df|dir|dircolors|dirname|du|env|expand|expr|factor|false|fmt|fold|head|hostid|id|install|join|link|ln|logname|ls|md5sum|mkdir|mkfifo|mknod|mktemp|mv|nice|nl|nohup|nproc|numfmt|od|paste|pathchk|pinky|pr|printenv|printf|ptx|pwd|readlink|realpath|rm|rmdir|runcon|seq|(sha1|sha224|sha256|sha384|sha512)sum|shred|shuf|sleep|sort|split|stat|stdbuf|stty|sum|sync|tac|tail|tee|test|time|timeout|touch|tr|true|truncate|tsort|tty|uname|unexpand|uniq|unlink|users|vdir|wc|who|whoami|yes)\\b" + # Conditional flags + - statement: "(\\s|^)(--?[A-Za-z0-9][\\w-]*)" + + - identifier: "\\$\\{[\\w:!%&=+#~@*^$?, .\\-\\/\\[\\]]+\\}" + - identifier: "\\$([0-9!#@*$?-]|[A-Za-z_]\\w*)" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: [] + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: [] + + - constant.string: + start: "<<[^\\s]+[-~.]*[A-Za-z0-9]+$" + end: "^[^\\s]+[A-Za-z0-9]+$" + skip: "\\\\." + rules: [] + + - comment: + start: "(^|\\s)#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/sls.yaml b/config/micro/syntax/sls.yaml new file mode 100644 index 0000000..d5da953 --- /dev/null +++ b/config/micro/syntax/sls.yaml @@ -0,0 +1,15 @@ +filetype: salt + +detect: + filename: "\\.sls$" + +rules: + - identifier.var: "^[^ -].*:$" + - identifier.var: ".*:" + - default: "salt:" + - constant.number: "/*[0-9]/*" + - constant.bool: "\\b(True|False)\\b" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - special: "\\b(grain|grains|compound|pcre|grain_pcre|list|pillar)\\b" + - comment: "^#.*" + - statement: "\\b(if|elif|else|or|not|and|endif|end)\\b" diff --git a/config/micro/syntax/smalltalk.yaml b/config/micro/syntax/smalltalk.yaml new file mode 100644 index 0000000..c595588 --- /dev/null +++ b/config/micro/syntax/smalltalk.yaml @@ -0,0 +1,55 @@ +filetype: smalltalk + +detect: + filename: "\\.(st|sources|changes)$" + +rules: + - statement: "\\b(self|nil|true|false|ifTrue|ifFalse|whileTrue|whileFalse)\\b" + - constant: "(\\$|@|@@)?\\b[A-Z]+[0-9A-Z_a-z]*" + - constant.number: "(?i)\\b0x[0-9a-fA-F][0-9a-f_]*\\b" + - constant.number: "(?i)\\b0b[01][01_]*\\b" + - constant.number: "(?i)\\b[0-9][0-9_]*(['.'][0-9_]+)?(e[\\-]?[0-9_]+)?\\b" + # Ruby "Symbols" + - constant: "(i?)([ ]|^):[0-9A-Z_]+\\b" + - constant: "\\b(__FILE__|__LINE__)\\b" + - constant: "/([^/]|(\\\\/))*/[iomx]*|%r\\{([^}]|(\\\\}))*\\}[iomx]*" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string.exec: + start: "`" + end: "`" + skip: "\\\\." + rules: + - symbol.brackets: + start: "#\\{" + end: "\\}" + rules: + - default: ".*" + + - constant.string: "%[QW]?\\{[^}]*\\}|%[QW]?\\([^)]*\\)|%[QW]?<[^>]*>|%[QW]?\\[[^]]*\\]|%[QW]?\\$[^$]*\\$|%[QW]?\\^[^^]*\\^|%[QW]?![^!]*!" + - constant.string: "%[qw]\\{[^}]*\\}|%[qw]\\([^)]*\\)|%[qw]<[^>]*>|%[qw]\\[[^]]*\\]|%[qw]\\$[^$]*\\$|%[qw]\\^[^^]*\\^|%[qw]![^!]*!" + - constant.string.exec: "%[x]\\{[^}]*\\}|%[x]\\([^)]*\\)|%[x]<[^>]*>|%[x]\\[[^]]*\\]|%[x]\\$[^$]*\\$|%[x]\\^[^^]*\\^|%[x]![^!]*!" + - symbol.operator: "[-+/*=<>!~%&|^]|\\b:" + - symbol.brackets: "([(){}]|\\[|\\])" + - constant.macro: + start: "<<-?'?EOT'?" + end: "^EOT" + rules: [] + + - preproc.shebang: "^#!.+?( |$)" diff --git a/config/micro/syntax/solidity.yaml b/config/micro/syntax/solidity.yaml new file mode 100644 index 0000000..32fd40b --- /dev/null +++ b/config/micro/syntax/solidity.yaml @@ -0,0 +1,41 @@ +filetype: solidity + +detect: + filename: "\\.sol$" + +rules: + - preproc: "\\b(contract|library|pragma)\\b" + - constant.number: "\\b[-]?([0-9]+|0x[0-9a-fA-F]+)\\b" + - identifier: "[a-zA-Z][_a-zA-Z0-9]*[[:space:]]*" + - statement: "\\b(assembly|break|continue|do|for|function|if|else|new|return|returns|while)\\b" + - special: "\\b(\\.send|throw)\\b" # make sure they are very visible + - type.keyword: "\\b(anonymous|constant|indexed|payable|public|private|external|internal)\\b" + - constant: "\\b(block(\\.(blockhash|coinbase|difficulty|gaslimit|number|timestamp))?|msg(\\.(data|gas|sender|value))?|now|tx(\\.(gasprice|origin))?)\\b" + - constant: "\\b(keccak256|sha3|sha256|ripemd160|ecrecover|addmod|mulmod|this|super|selfdestruct|\\.balance)\\b" + - constant: "\\b(true|false)\\b" + - constant: "\\b(wei|szabo|finney|ether|seconds|minutes|hours|days|weeks|years)\\b" + - type: "\\b(address|bool|mapping|string|var|int(\\d*)|uint(\\d*)|byte(\\d*)|fixed(\\d*)|ufixed(\\d*))\\b" + - error: "\\b(abstract|after|case|catch|default|final|in|inline|interface|let|match|null|of|pure|relocatable|static|switch|try|type|typeof|view)\\b" + - operator: "[-+/*=<>!~%?:&|]" + - comment: + start: "//" + end: "$" + rules: [] + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + - todo: "TODO:?" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + diff --git a/config/micro/syntax/sql.yaml b/config/micro/syntax/sql.yaml new file mode 100644 index 0000000..b41c11e --- /dev/null +++ b/config/micro/syntax/sql.yaml @@ -0,0 +1,35 @@ +filetype: sql + +detect: + filename: "\\.sql$|sqliterc$" + +rules: + - statement: "(?i)\\b(ALL|ASC|AS|ALTER|AND|ADD|AUTO_INCREMENT)\\b" + - statement: "(?i)\\b(BETWEEN|BINARY|BOTH|BY|BOOLEAN)\\b" + - statement: "(?i)\\b(CHANGE|CHECK|COLUMNS|COLUMN|CROSS|CREATE)\\b" + - statement: "(?i)\\b(DATABASES|DATABASE|DATA|DELAYED|DESCRIBE|DESC|DISTINCT|DELETE|DROP|DEFAULT)\\b" + - statement: "(?i)\\b(ENCLOSED|ESCAPED|EXISTS|EXPLAIN)\\b" + - statement: "(?i)\\b(FIELDS|FIELD|FLUSH|FOR|FOREIGN|FUNCTION|FROM)\\b" + - statement: "(?i)\\b(GROUP|GRANT|HAVING)\\b" + - statement: "(?i)\\b(IGNORE|INDEX|INFILE|INSERT|INNER|INTO|IDENTIFIED|IN|IS|IF)\\b" + - statement: "(?i)\\b(JOIN|KEYS|KILL|KEY)\\b" + - statement: "(?i)\\b(LEADING|LIKE|LIMIT|LINES|LOAD|LOCAL|LOCK|LOW_PRIORITY|LEFT|LANGUAGE)\\b" + - statement: "(?i)\\b(MODIFY|NATURAL|NOT|NULL|NEXTVAL)\\b" + - statement: "(?i)\\b(OPTIMIZE|OPTION|OPTIONALLY|ORDER|OUTFILE|OR|OUTER|ON)\\b" + - statement: "(?i)\\b(PROCEDURE|PROCEDURAL|PRIMARY)\\b" + - statement: "(?i)\\b(READ|REFERENCES|REGEXP|RENAME|REPLACE|RETURN|REVOKE|RLIKE|RIGHT)\\b" + - statement: "(?i)\\b(SHOW|SONAME|STATUS|STRAIGHT_JOIN|SELECT|SETVAL|SET)\\b" + - statement: "(?i)\\b(TABLES|TERMINATED|TO|TRAILING|TRUNCATE|TABLE|TEMPORARY|TRIGGER|TRUSTED)\\b" + - statement: "(?i)\\b(UNIQUE|UNLOCK|USE|USING|UPDATE|VALUES|VARIABLES|VIEW)\\b" + - statement: "(?i)\\b(WITH|WRITE|WHERE|ZEROFILL|TYPE|XOR)\\b" + - type: "(?i)\\b(VARCHAR|TINYINT|TEXT|DATE|SMALLINT|MEDIUMINT|INT|INTEGER|BIGINT|FLOAT|DOUBLE|DECIMAL|DATETIME|TIMESTAMP|TIME|YEAR|UNSIGNED|CHAR|TINYBLOB|TINYTEXT|BLOB|MEDIUMBLOB|MEDIUMTEXT|LONGBLOB|LONGTEXT|ENUM|BOOL|BINARY|VARBINARY)\\b" + - preproc: "(?i)\\.\\b(databases|dump|echo|exit|explain|header(s)?|help)\\b" + - preproc: "(?i)\\.\\b(import|indices|mode|nullvalue|output|prompt|quit|read)\\b" + - preproc: "(?i)\\.\\b(schema|separator|show|tables|timeout|width)\\b" + - constant.bool: "\\b(ON|OFF)\\b" + - constant.number: "\\b([0-9]+)\\b" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - constant.string: "`(\\\\.|[^\\\\`])*`" + - comment: "\\-\\-.*$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/stata.yaml b/config/micro/syntax/stata.yaml new file mode 100644 index 0000000..5239c6c --- /dev/null +++ b/config/micro/syntax/stata.yaml @@ -0,0 +1,67 @@ +filetype: stata + +detect: + filename: "\\.a?do$" + +rules: + - constant.string: + start: "`\"" + end: "\"'" + rules: + - identifier.macro: + start: "`" + end: "'" + rules: [] + - identifier.macro: "\\$\\w+" + - constant.specialChar: "\\\\." + + - constant.string: + start: "\"" + end: "\"" + rules: + - identifier.macro: + start: "`" + end: "'" + rules: [] + - identifier.macro: "\\$\\w+" + - constant.specialChar: "\\\\." + + # Built-in functions + - identifier: + "\\b(_caller|abbrev|abs|acos|acosh|asin|asinh|atan|atan2|atanh|autocode|betaden|binomial|binomialp|binomialtail|binormal|bofd|byteorder|c|cauchy|cauchyden|cauchytail|Cdhms|ceil|char|chi2|chi2den|chi2tail|Chms|cholesky|chop|clip|Clock|cloglog|Cmdyhms|Cofc|Cofd|coleqnumb|collatorlocale|collatorversion|colnfreeparms|colnumb|colsof|comb|cond|corr|cos|cosh|date|day|det|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|dhms|diag|diag0cnt|digamma|dofb|dofC|dofh|dofm|dofq|dofw|dofy|dow|doy|dunnettprob|e|el|epsdouble|epsfloat|exp|exponential|exponentialden|exponentialtail|F|Fden|fileexists|fileread|filereaderror|filewrite|float|floor|fmtwidth|Ftail|gammaden|gammap|gammaptail|hadamard|halfyear|halfyearly|has_eprop|hh|hhC|hms|hofd|hours|hypergeometric|hypergeometricp|I|ibeta|ibetatail|igaussian|igaussianden|igaussiantail|indexnot|inlist|inrange|int|inv|invbinomial|invbinomialtail|invcauchy|invcauchytail|invchi2|invchi2tail|invcloglog|invdunnettprob|invexponential|invexponentialtail|invF|invFtail|invgammap|invgammaptail|invibeta|invibetatail|invigaussian|invigaussiantail|invlaplace|invlaplacetail|invlogistic|invlogistictail|invlogit|invnbinomial|invnbinomialtail|invnchi2|invnchi2tail|invnF|invnFtail|invnibeta|invnormal|invnt|invnttail|invpoisson|invpoissontail|invsym|invt|invttail|invtukeyprob|invweibull|invweibullph|invweibullphtail|invweibulltail|irecode|issymmetric|J|laplace|laplaceden|laplacetail|ln|lncauchyden|lnfactorial|lngamma|lnigammaden|lnigaussianden|lniwishartden|lnlaplaceden|lnmvnormalden|lnnormal|lnnormalden|lnwishartden|log|log10|logistic|logisticden|logistictail|logit|matmissing|matrix|matuniform|max|maxbyte|maxdouble|maxfloat|maxint|maxlong|mdy|mdyhms|missing|min|minbyte|mindouble|minfloat|minint|minlong|minutes|mm|mmC|mod|mofd|month|monthly|mreldif|msofhours|msofminutes|msofseconds|nbetaden|nbinomial|nbinomialp|nbinomialtail|nchi2|nchi2den|nchi2tail|nF|nFden|nFtail|nibeta|normal|normalden|npnchi2|npnF|npnt|nt|ntden|nttail|nullmat|plural|poisson|poissonp|poissontail|qofd|quarter|quarterly|r|rbeta|rbinomial|rcauchy|rchi2|real|recode|regexm|regexr|regexs|reldif|replay|return|rexponential|rgamma|rhypergeometric|rigaussian|rlaplace|rlogistic|rnbinomial|rnormal|round|roweqnumb|rownfreeparms|rownumb|rowsof|rpoisson|rt|runiform|runiformint|rweibull|rweibullph|s|scalar|seconds|sign|sin|sinh|smallestdouble|soundex|sqrt|ss|ssC|strcat|strdup|strofreal|string|strtrim|stritrim|strltrim|strrtrim|strlen|strupper|strlower|strproper|strmatch|strpos|strrpos|strreverse|strtoname|subinstr|subinword|substr|sum|sweep|t|tan|tanh|tC|td|tden|th|tin|tm|tobytes|tq|trace|trigamma|ttail|tukeyprob|tw|twithin|uchar|udstrlen|udsubstr|uisdigit|uisletter|ustrcompare|ustrsortkey|ustrcompareex|ustrsortkeyex|ustrfix|ustrto|ustrfrom|ustrlen|ustrinvalidcnt|usubstr|ustrleft|ustrright|ustrupper|ustrlower|ustrtitle|ustrtrim|ustrltrim|ustrrtrim|ustrnormalize|ustrpos|ustrrpos|ustrregexm|ustrregexrf|ustrregexra|ustrregexs|ustrreverse|ustrunescape|ustrtohex|ustrtoname|ustrword|ustrwordcount|usubinstr|vec|vecdiag|week|weekly|weibull|weibullden|weibullph|weibullphden|weibullphtail|weibulltail|wofd|word|wordbreaklocale|year|yearly|yh|ym|yofd|yq|yw)\\b" + # Built-in commands + - statement: + "\\b(if|else|else\\s+if|in|foreach|for|forv|forva|forval|forvalu|forvalue|forvalues|by|bys|bysort|quietly|qui|about|ac|ac_7|acprplot|acprplot_7|adjust|ado|adopath|adoupdate|alpha|ameans|an|ano|anov|anova|anova_estat|anova_terms|anovadef|aorder|ap|app|appe|appen|append|arch|arch_dr|arch_estat|arch_p|archlm|areg|areg_p|args|arima|arima_dr|arima_estat|arima_p|as|asmprobit|asmprobit_estat|asmprobit_lf|asmprobit_mfx__dlg|asmprobit_p|ass|asse|asser|assert|avplot|avplot_7|avplots|avplots_7|bcskew0|bgodfrey|binreg|bip0_lf|biplot|bipp_lf|bipr_lf|bipr_p|biprobit|bitest|bitesti|bitowt|blogit|bmemsize|boot|bootsamp|bootstrap|bootstrap_8|boxco_l|boxco_p|boxcox|boxcox_6|boxcox_p|bprobit|br|break|brier|bro|brow|brows|browse|brr|brrstat|bs|bs_7|bsampl_w|bsample|bsample_7|bsqreg|bstat|bstat_7|bstat_8|bstrap|bstrap_7|ca|ca_estat|ca_p|cabiplot|camat|canon|canon_8|canon_8_p|canon_estat|canon_p|cap|caprojection|capt|captu|captur|capture|cat|cc|cchart|cchart_7|cci|cd|censobs_table|centile|cf|char|chdir|checkdlgfiles|checkestimationsample|checkhlpfiles|checksum|chelp|ci|cii|cl|class|classutil|clear|cli|clis|clist|clo|clog|clog_lf|clog_p|clogi|clogi_sw|clogit|clogit_lf|clogit_p|clogitp|clogl_sw|cloglog|clonevar|clslistarray|cluster|cluster_measures|cluster_stop|cluster_tree|cluster_tree_8|clustermat|cmdlog|cnr|cnre|cnreg|cnreg_p|cnreg_sw|cnsreg|codebook|collaps4|collapse|colormult_nb|colormult_nw|compare|compress|conf|confi|confir|confirm|conren|cons|const|constr|constra|constrai|constrain|constraint|continue|contract|copy|copyright|copysource|cor|corc|corr|corr2data|corr_anti|corr_kmo|corr_smc|corre|correl|correla|correlat|correlate|corrgram|cou|coun|count|cox|cox_p|cox_sw|coxbase|coxhaz|coxvar|cprplot|cprplot_7|crc|cret|cretu|cretur|creturn|cross|cs|cscript|cscript_log|csi|ct|ct_is|ctset|ctst_5|ctst_st|cttost|cumsp|cumsp_7|cumul|cusum|cusum_7|cutil|d|datasig|datasign|datasigna|datasignat|datasignatu|datasignatur|datasignature|datetof|db|dbeta|de|dec|deco|decod|decode|deff|des|desc|descr|descri|describ|describe|destring|dfbeta|dfgls|dfuller|di|di_g|dir|dirstats|dis|discard|disp|disp_res|disp_s|displ|displa|display|distinct|do|doe|doed|doedi|doedit|dotplot|dotplot_7|dprobit|drawnorm|drop|ds|ds_util|dstdize|duplicates|durbina|dwstat|dydx|e|ed|edi|edit|egen|eivreg|emdef|end|en|enc|enco|encod|encode|eq|erase|ereg|ereg_lf|ereg_p|ereg_sw|ereghet|ereghet_glf|ereghet_glf_sh|ereghet_gp|ereghet_ilf|ereghet_ilf_sh|ereghet_ip|eret|eretu|eretur|ereturn|err|erro|error|est|est_cfexist|est_cfname|est_clickable|est_expand|est_hold|est_table|est_unhold|est_unholdok|estat|estat_default|estat_summ|estat_vce_only|esti|estimates|etodow|etof|etomdy|ex|exi|exit|expand|expandcl|fac|fact|facto|factor|factor_estat|factor_p|factor_pca_rotated|factor_rotate|factormat|fcast|fcast_compute|fcast_graph|fdades|fdadesc|fdadescr|fdadescri|fdadescrib|fdadescribe|fdasav|fdasave|fdause|fh_st|open|read|close|file|filefilter|fillin|find_hlp_file|findfile|findit|findit_7|fit|fl|fli|flis|flist|for5_0|form|forma|format|fpredict|frac_154|frac_adj|frac_chk|frac_cox|frac_ddp|frac_dis|frac_dv|frac_in|frac_mun|frac_pp|frac_pq|frac_pv|frac_wgt|frac_xo|fracgen|fracplot|fracplot_7|fracpoly|fracpred|fron_ex|fron_hn|fron_p|fron_tn|fron_tn2|frontier|ftodate|ftoe|ftomdy|ftowdate|g|gamhet_glf|gamhet_gp|gamhet_ilf|gamhet_ip|gamma|gamma_d2|gamma_p|gamma_sw|gammahet|gdi_hexagon|gdi_spokes|ge|gen|gene|gener|genera|generat|generate|genrank|genstd|genvmean|gettoken|gl|gladder|gladder_7|glim_l01|glim_l02|glim_l03|glim_l04|glim_l05|glim_l06|glim_l07|glim_l08|glim_l09|glim_l10|glim_l11|glim_l12|glim_lf|glim_mu|glim_nw1|glim_nw2|glim_nw3|glim_p|glim_v1|glim_v2|glim_v3|glim_v4|glim_v5|glim_v6|glim_v7|glm|glm_6|glm_p|glm_sw|glmpred|glo|glob|globa|global|glogit|glogit_8|glogit_p|gmeans|gnbre_lf|gnbreg|gnbreg_5|gnbreg_p|gomp_lf|gompe_sw|gomper_p|gompertz|gompertzhet|gomphet_glf|gomphet_glf_sh|gomphet_gp|gomphet_ilf|gomphet_ilf_sh|gomphet_ip|gphdot|gphpen|gphprint|gprefs|gprobi_p|gprobit|gprobit_8|gr|gr7|gr_copy|gr_current|gr_db|gr_describe|gr_dir|gr_draw|gr_draw_replay|gr_drop|gr_edit|gr_editviewopts|gr_example|gr_example2|gr_export|gr_print|gr_qscheme|gr_query|gr_read|gr_rename|gr_replay|gr_save|gr_set|gr_setscheme|gr_table|gr_undo|gr_use|graph|graph7|grebar|greigen|greigen_7|greigen_8|grmeanby|grmeanby_7|gs_fileinfo|gs_filetype|gs_graphinfo|gs_stat|gsort|gwood|h|hadimvo|hareg|hausman|haver|he|heck_d2|heckma_p|heckman|heckp_lf|heckpr_p|heckprob|hel|help|hereg|hetpr_lf|hetpr_p|hetprob|hettest|hexdump|hilite|hist|hist_7|histogram|hlogit|hlu|hmeans|hotel|hotelling|hprobit|hreg|hsearch|icd9|icd9_ff|icd9p|iis|impute|imtest|inbase|include|inf|infi|infil|infile|infix|inp|inpu|input|ins|insheet|insp|inspe|inspec|inspect|integ|inten|intreg|intreg_7|intreg_p|intrg2_ll|intrg_ll|intrg_ll2|ipolate|iqreg|ir|irf|irf_create|irfm|iri|is_svy|is_svysum|isid|istdize|ivprob_1_lf|ivprob_lf|ivprobit|ivprobit_p|ivreg|ivreg_footnote|ivtob_1_lf|ivtob_lf|ivtobit|ivtobit_p|jackknife|jacknife|jknife|jknife_6|jknife_8|jkstat|joinby|kalarma1|kap|kap_3|kapmeier|kappa|kapwgt|kdensity|kdensity_7|keep|ksm|ksmirnov|ktau|kwallis|l|la|lab|labe|label|labelbook|ladder|levels|levelsof|leverage|lfit|lfit_p|li|lincom|line|linktest|lis|list|lloghet_glf|lloghet_glf_sh|lloghet_gp|lloghet_ilf|lloghet_ilf_sh|lloghet_ip|llogi_sw|llogis_p|llogist|llogistic|llogistichet|lnorm_lf|lnorm_sw|lnorma_p|lnormal|lnormalhet|lnormhet_glf|lnormhet_glf_sh|lnormhet_gp|lnormhet_ilf|lnormhet_ilf_sh|lnormhet_ip|lnskew0|loadingplot|loc|loca|local|log|logi|logis_lf|logistic|logistic_p|logit|logit_estat|logit_p|loglogs|logrank|loneway|lookfor|lookup|lowess|lowess_7|lpredict|lrecomp|lroc|lroc_7|lrtest|ls|lsens|lsens_7|lsens_x|lstat|ltable|ltable_7|ltriang|lv|lvr2plot|lvr2plot_7|m|ma|mac|macr|macro|makecns|man|manova|manova_estat|manova_p|manovatest|mantel|mark|markin|markout|marksample|mat|mat_capp|mat_order|mat_put_rr|mat_rapp|mata|mata_clear|mata_describe|mata_drop|mata_matdescribe|mata_matsave|mata_matuse|mata_memory|mata_mlib|mata_mosave|mata_rename|mata_which|matalabel|matcproc|matlist|matname|matr|matri|matrix|matrix_input__dlg|matstrik|mcc|mcci|md0_|md1_|md1debug_|md2_|md2debug_|mds|mds_estat|mds_p|mdsconfig|mdslong|mdsmat|mdsshepard|mdytoe|mdytof|me_derd|mean|means|median|memory|memsize|meqparse|mer|merg|merge|mfp|mfx|mhelp|mhodds|minbound|mixed_ll|mixed_ll_reparm|mkassert|mkdir|mkmat|mkspline|ml|ml_5|ml_adjs|ml_bhhhs|ml_c_d|ml_check|ml_clear|ml_cnt|ml_debug|ml_defd|ml_e0|ml_e0_bfgs|ml_e0_cycle|ml_e0_dfp|ml_e0i|ml_e1|ml_e1_bfgs|ml_e1_bhhh|ml_e1_cycle|ml_e1_dfp|ml_e2|ml_e2_cycle|ml_ebfg0|ml_ebfr0|ml_ebfr1|ml_ebh0q|ml_ebhh0|ml_ebhr0|ml_ebr0i|ml_ecr0i|ml_edfp0|ml_edfr0|ml_edfr1|ml_edr0i|ml_eds|ml_eer0i|ml_egr0i|ml_elf|ml_elf_bfgs|ml_elf_bhhh|ml_elf_cycle|ml_elf_dfp|ml_elfi|ml_elfs|ml_enr0i|ml_enrr0|ml_erdu0|ml_erdu0_bfgs|ml_erdu0_bhhh|ml_erdu0_bhhhq|ml_erdu0_cycle|ml_erdu0_dfp|ml_erdu0_nrbfgs|ml_exde|ml_footnote|ml_geqnr|ml_grad0|ml_graph|ml_hbhhh|ml_hd0|ml_hold|ml_init|ml_inv|ml_log|ml_max|ml_mlout|ml_mlout_8|ml_model|ml_nb0|ml_opt|ml_p|ml_plot|ml_query|ml_rdgrd|ml_repor|ml_s_e|ml_score|ml_searc|ml_technique|ml_unhold|mleval|mlf_|mlmatbysum|mlmatsum|mlog|mlogi|mlogit|mlogit_footnote|mlogit_p|mlopts|mlsum|mlvecsum|mnl0_|mor|more|mov|move|mprobit|mprobit_lf|mprobit_p|mrdu0_|mrdu1_|mvdecode|mvencode|mvreg|mvreg_estat|n|nbreg|nbreg_al|nbreg_lf|nbreg_p|nbreg_sw|nestreg|net|newey|newey_7|newey_p|news|nl|nl_7|nl_9|nl_9_p|nl_p|nl_p_7|nlcom|nlcom_p|nlexp2|nlexp2_7|nlexp2a|nlexp2a_7|nlexp3|nlexp3_7|nlgom3|nlgom3_7|nlgom4|nlgom4_7|nlinit|nllog3|nllog3_7|nllog4|nllog4_7|nlog_rd|nlogit|nlogit_p|nlogitgen|nlogittree|nlpred|no|nobreak|noi|nois|noisi|noisil|noisily|note|notes|notes_dlg|nptrend|numlabel|numlist|odbc|old_ver|olo|olog|ologi|ologi_sw|ologit|ologit_p|ologitp|on|one|onew|onewa|oneway|op_colnm|op_comp|op_diff|op_inv|op_str|opr|opro|oprob|oprob_sw|oprobi|oprobi_p|oprobit|oprobitp|opts_exclusive|order|orthog|orthpoly|ou|out|outf|outfi|outfil|outfile|outs|outsh|outshe|outshee|outsheet|ovtest|pac|pac_7|palette|parse|parse_dissim|pause|pca|pca_8|pca_display|pca_estat|pca_p|pca_rotate|pcamat|pchart|pchart_7|pchi|pchi_7|pcorr|pctile|pentium|pergram|pergram_7|permute|permute_8|personal|peto_st|pkcollapse|pkcross|pkequiv|pkexamine|pkexamine_7|pkshape|pksumm|pksumm_7|pl|plo|plot|plugin|pnorm|pnorm_7|poisgof|poiss_lf|poiss_sw|poisso_p|poisson|poisson_estat|post|postclose|postfile|postutil|pperron|pr|prais|prais_e|prais_e2|prais_p|predict|predictnl|preserve|print|pro|prob|probi|probit|probit_estat|probit_p|proc_time|procoverlay|procrustes|procrustes_estat|procrustes_p|profiler|prog|progr|progra|program|prop|proportion|prtest|prtesti|pwcorr|pwd|q|s|qby|qbys|qchi|qchi_7|qladder|qladder_7|qnorm|qnorm_7|qqplot|qqplot_7|qreg|qreg_c|qreg_p|qreg_sw|qu|quadchk|quantile|quantile_7|que|quer|query|range|ranksum|ratio|rchart|rchart_7|rcof|recast|reclink|recode|reg|reg3|reg3_p|regdw|regr|regre|regre_p2|regres|regres_p|regress|regress_estat|regriv_p|remap|ren|rena|renam|rename|renpfix|repeat|replace|report|reshape|restore|ret|retu|retur|return|rm|rmdir|robvar|roccomp|roccomp_7|roccomp_8|rocf_lf|rocfit|rocfit_8|rocgold|rocplot|rocplot_7|roctab|roctab_7|rolling|rologit|rologit_p|rot|rota|rotat|rotate|rotatemat|rreg|rreg_p|ru|run|runtest|rvfplot|rvfplot_7|rvpplot|rvpplot_7|sa|safesum|sample|sampsi|sav|save|savedresults|saveold|sc|sca|scal|scala|scalar|scatter|scm_mine|sco|scob_lf|scob_p|scobi_sw|scobit|scor|score|scoreplot|scoreplot_help|scree|screeplot|screeplot_help|sdtest|sdtesti|se|search|separate|seperate|serrbar|serrbar_7|serset|set|set_defaults|sfrancia|sh|she|shel|shell|shewhart|shewhart_7|signestimationsample|signrank|signtest|simul|simul_7|simulate|simulate_8|sktest|sleep|slogit|slogit_d2|slogit_p|smooth|snapspan|so|sor|sort|spearman|spikeplot|spikeplot_7|spikeplt|spline_x|split|sqreg|sqreg_p|sret|sretu|sretur|sreturn|ssc|st|st_ct|st_hc|st_hcd|st_hcd_sh|st_is|st_issys|st_note|st_promo|st_set|st_show|st_smpl|st_subid|stack|statsby|statsby_8|stbase|stci|stci_7|stcox|stcox_estat|stcox_fr|stcox_fr_ll|stcox_p|stcox_sw|stcoxkm|stcoxkm_7|stcstat|stcurv|stcurve|stcurve_7|stdes|stem|stepwise|stereg|stfill|stgen|stir|stjoin|stmc|stmh|stphplot|stphplot_7|stphtest|stphtest_7|stptime|strate|strate_7|streg|streg_sw|streset|sts|sts_7|stset|stsplit|stsum|sttocc|sttoct|stvary|stweib|su|suest|suest_8|sum|summ|summa|summar|summari|summariz|summarize|sunflower|sureg|survcurv|survsum|svar|svar_p|svmat|svy|svy_disp|svy_dreg|svy_est|svy_est_7|svy_estat|svy_get|svy_gnbreg_p|svy_head|svy_header|svy_heckman_p|svy_heckprob_p|svy_intreg_p|svy_ivreg_p|svy_logistic_p|svy_logit_p|svy_mlogit_p|svy_nbreg_p|svy_ologit_p|svy_oprobit_p|svy_poisson_p|svy_probit_p|svy_regress_p|svy_sub|svy_sub_7|svy_x|svy_x_7|svy_x_p|svydes|svydes_8|svygen|svygnbreg|svyheckman|svyheckprob|svyintreg|svyintreg_7|svyintrg|svyivreg|svylc|svylog_p|svylogit|svymarkout|svymarkout_8|svymean|svymlog|svymlogit|svynbreg|svyolog|svyologit|svyoprob|svyoprobit|svyopts|svypois|svypois_7|svypoisson|svyprobit|svyprobt|svyprop|svyprop_7|svyratio|svyreg|svyreg_p|svyregress|svyset|svyset_7|svyset_8|svytab|svytab_7|svytest|svytotal|sw|sw_8|swcnreg|swcox|swereg|swilk|swlogis|swlogit|swologit|swoprbt|swpois|swprobit|swqreg|swtobit|swweib|symmetry|symmi|symplot|symplot_7|syntax|sysdescribe|sysdir|sysuse|szroeter|ta|tab|tab1|tab2|tab_or|tabd|tabdi|tabdis|tabdisp|tabi|table|tabodds|tabodds_7|tabstat|tabu|tabul|tabula|tabulat|tabulate|te|tempfile|tempname|tempvar|tes|test|testnl|testparm|teststd|tetrachoric|time_it|timer|tis|tob|tobi|tobit|tobit_p|tobit_sw|token|tokeni|tokeniz|tokenize|tostring|total|translate|translator|transmap|treat_ll|treatr_p|treatreg|trim|trnb_cons|trnb_mean|trpoiss_d2|trunc_ll|truncr_p|truncreg|tsappend|tset|tsfill|tsline|tsline_ex|tsreport|tsrevar|tsrline|tsset|tssmooth|tsunab|ttest|ttesti|tut_chk|tut_wait|tutorial|tw|tware_st|two|twoway|twoway__fpfit_serset|twoway__function_gen|twoway__histogram_gen|twoway__ipoint_serset|twoway__ipoints_serset|twoway__kdensity_gen|twoway__lfit_serset|twoway__normgen_gen|twoway__pci_serset|twoway__qfit_serset|twoway__scatteri_serset|twoway__sunflower_gen|twoway_ksm_serset|ty|typ|type|typeof|u|unab|unabbrev|unabcmd|update|us|use|uselabel|var|var_mkcompanion|var_p|varbasic|varfcast|vargranger|varirf|varirf_add|varirf_cgraph|varirf_create|varirf_ctable|varirf_describe|varirf_dir|varirf_drop|varirf_erase|varirf_graph|varirf_ograph|varirf_rename|varirf_set|varirf_table|varlist|varlmar|varnorm|varsoc|varstable|varstable_w|varstable_w2|varwle|vce|vec|vec_fevd|vec_mkphi|vec_p|vec_p_w|vecirf_create|veclmar|veclmar_w|vecnorm|vecnorm_w|vecrank|vecstable|verinst|vers|versi|versio|version|view|viewsource|vif|vwls|wdatetof|webdescribe|webseek|webuse|weib1_lf|weib2_lf|weib_lf|weib_lf0|weibhet_glf|weibhet_glf_sh|weibhet_glfa|weibhet_glfa_sh|weibhet_gp|weibhet_ilf|weibhet_ilf_sh|weibhet_ilfa|weibhet_ilfa_sh|weibhet_ip|weibu_sw|weibul_p|weibull|weibull_c|weibull_s|weibullhet|wh|whelp|whi|which|whil|while|wilc_st|wilcoxon|win|wind|windo|window|winexec|wntestb|wntestb_7|wntestq|xchart|xchart_7|xcorr|xcorr_7|xi|xi_6|xmlsav|xmlsave|xmluse|xpose|xsh|xshe|xshel|xshell|xt_iis|xt_tis|xtab_p|xtabond|xtbin_p|xtclog|xtcloglog|xtcloglog_8|xtcloglog_d2|xtcloglog_pa_p|xtcloglog_re_p|xtcnt_p|xtcorr|xtdata|xtdes|xtfront_p|xtfrontier|xtgee|xtgee_elink|xtgee_estat|xtgee_makeivar|xtgee_p|xtgee_plink|xtgls|xtgls_p|xthaus|xthausman|xtht_p|xthtaylor|xtile|xtint_p|xtintreg|xtintreg_8|xtintreg_d2|xtintreg_p|xtivp_1|xtivp_2|xtivreg|xtline|xtline_ex|xtlogit|xtlogit_8|xtlogit_d2|xtlogit_fe_p|xtlogit_pa_p|xtlogit_re_p|xtmixed|xtmixed_estat|xtmixed_p|xtnb_fe|xtnb_lf|xtnbreg|xtnbreg_pa_p|xtnbreg_refe_p|xtpcse|xtpcse_p|xtpois|xtpoisson|xtpoisson_d2|xtpoisson_pa_p|xtpoisson_refe_p|xtpred|xtprobit|xtprobit_8|xtprobit_d2|xtprobit_re_p|xtps_fe|xtps_lf|xtps_ren|xtps_ren_8|xtrar_p|xtrc|xtrc_p|xtrchh|xtrefe_p|xtreg|xtreg_be|xtreg_fe|xtreg_ml|xtreg_pa_p|xtreg_re|xtregar|xtrere_p|xtset|xtsf_ll|xtsf_llti|xtsum|xttab|xttest0|xttobit|xttobit_8|xttobit_p|xttrans|yx|yxview__barlike_draw|yxview_area_draw|yxview_bar_draw|yxview_dot_draw|yxview_dropline_draw|yxview_function_draw|yxview_iarrow_draw|yxview_ilabels_draw|yxview_normal_draw|yxview_pcarrow_draw|yxview_pcbarrow_draw|yxview_pccapsym_draw|yxview_pcscatter_draw|yxview_pcspike_draw|yxview_rarea_draw|yxview_rbar_draw|yxview_rbarm_draw|yxview_rcap_draw|yxview_rcapsym_draw|yxview_rconnected_draw|yxview_rline_draw|yxview_rscatter_draw|yxview_rspike_draw|yxview_spike_draw|yxview_sunflower_draw|zap_s|zinb|zinb_llf|zinb_plf|zip|zip_llf|zip_p|zip_plf|zt_ct_5|zt_hc_5|zt_hcd_5|zt_is_5|zt_iss_5|zt_sho_5|zt_smp_5|ztbase_5|ztcox_5|ztdes_5|ztereg_5|ztfill_5|ztgen_5|ztir_5|ztjoin_5|ztnb|ztnb_p|ztp|ztp_p|zts_5|ztset_5|ztspli_5|ztsum_5|zttoct_5|ztvary_5|ztweib_5)\\b" + - constant.number: "\\b[+-]?([0-9]+(\\.[0-9]+)?|\\.[0-9]+|\\.)([eE][+-]?[0-9]+)?[i]?\\b" + - symbol.operator: "-|==|<=|>=|<|>|&|!=" + - symbol.operator: "\\*|\\+|\\^|/|!|~|=|~=" + - symbol.brackets: "[\\{\\}\\(\\)\\[\\]]" + + - identifier: "%-?\\d{1,2}(\\.\\d{1,2})?[gfe]c?" + - identifier: "%(21x|16H|16L|8H|8L)" + - identifier: "%-?(tc|tC|td|tw|tm|tq|th|ty|tg).{0,32}" + - identifier: "%[-~]?\\d{1,4}s" + + - identifier.macro: "\\$\\w{1,32}" + - identifier.macro: + start: "`" + end: "'" + rules: [] + + - comment: + start: "///?" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "^\\s*\\*" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/svelte.yaml b/config/micro/syntax/svelte.yaml new file mode 100644 index 0000000..698299f --- /dev/null +++ b/config/micro/syntax/svelte.yaml @@ -0,0 +1,27 @@ +filetype: svelte + +detect: + filename: "\\.svelte$" + +rules: + - default: + start: "" + rules: + - include: "javascript" + + - default: + start: "" + rules: + - include: "typescript" + - default: + start: "" + end: "" + rules: + - include: "css" + - default: + start: "^" + end: "$" + rules: + - include: "html5" diff --git a/config/micro/syntax/swift.yaml b/config/micro/syntax/swift.yaml new file mode 100644 index 0000000..4874132 --- /dev/null +++ b/config/micro/syntax/swift.yaml @@ -0,0 +1,103 @@ +filetype: swift + +detect: + filename: "\\.swift$" + header: "^#!.*bin/(env +)?swift( |$)" + +rules: + + # Patterns + - type: \b(_)\b + + # Operators + - symbol.operator: ([.:;,+*|=!?\\%]|<|>|/|-|&) + + # Declaration Keywords + - statement.declaration: \b(associatedtype|class|deinit|enum|extension|fileprivate|func|import|init)\b + - statement.declaration: \b(inout|internal|let|open|operator|private|protocol|public|static|struct|subscript|typealias|var)\b + + # Statements Keywords + - statement: \b(break|case|continue|default|defer|do|else|fallthrough|for|guard)\b + - statement: \b(if|inif|repeat|return|switch|where|while)\b + + # keyword.reserved + - statement.reserved: \b(associativity|convenience|dynamic|didSet|final|get|infix|indirect|lazy|left|mutating)\b + - statement.reserved: \b(none|nonmutating|override|postfix|precedence|prefix|Protocol|required)\b + - statement.reserved: \b(right|set|Type|unowned|weak|willSet)\b + + # Expression and types + - type: \b(as|Any|catch|is|rethrows|super|self|throw|throws|try)\b + + - statement.built_in: \b(abs|advance|alignof|alignofValue|anyGenerator|assert|assertionFailure|bridgeFromObjectiveC)\b + - statement.built_in: \b(bridgeFromObjectiveCUnconditional|bridgeToObjectiveC|bridgeToObjectiveCUnconditional|contains)\b + - statement.built_in: \b(count|countElements|countLeadingZeros|debugPrint|debugPrintln|distance|dropFirst|dropLast|dump|encodeBitsAsWords)\b + - statement.built_in: \b(enumerate|equal|fatalError|filter|find|getBridgedObjectiveCType|getVaList|indices|insertionSort)\b + - statement.built_in: \b(isBridgedToObjectiveC|isBridgedVerbatimToObjectiveC|isUniquelyReferenced|isUniquelyReferencedNonObjC)\b + - statement.built_in: \b(join|lexicographicalCompare|map|max|maxElement|min|minElement|numericCast|overlaps|partition|posix)\b + - statement.built_in: \b(precondition|preconditionFailure|print|println|quickSort|readLine|reduce|reflect)\b + - statement.built_in: \b(reinterpretCast!reverse|roundUpToAlignment|sizeof|sizeofValue|sort|split|startsWith|stride)\b + - statement.built_in: \b(strideof|strideofValue|swap|toString|transcode|underestimateCount|unsafeAddressOf|unsafeBitCast)\b + - statement.built_in: \b(unsafeDowncast|unsafeUnwrap|unsafeReflect|withExtendedLifetime|withObjectAtPlusZero|withUnsafePointer)\b + - statement.built_in: \b(withUnsafePointerToObject|withUnsafeMutablePointer|withUnsafeMutablePointers|withUnsafePointer)\b + - statement.built_in: \b(withUnsafePointers|withVaList|zip)\b + + # Meta + - statement.meta: \@\b(autoclosure|available|convention|exported|IBAction|IBDesignable|IBOutlet|IBInspectable|infix)\b + - statement.meta: \@\b(lazy|noreturn|noescape|nonobjc|NSApplicationMain|NSCopying|NSManaged|objc|prefix|postfix)\b + - statement.meta: \@\b(required|testable|warn_unused_result|UIApplicationMain)\b + + #preprocessor + - preproc: ^[[:space:]]*#[[:space:]]*(define|else|elseif|endif|if|selector)\b + - preproc.DebugIdentifier: \b(__COLUMN__|__FILE__|__FUNCTION__|__LINE__)\b + - preproc.DebugIdentifier: ^[[:space:]]*#[[:space:]]*(column|file|function|line)\b + + # Constant + - constant: \b(true|false|nil) + - constant.number: ([0-9]+) + + # Storage Types + - type.storage: \b((U)?Int(8|16|32|64))\b + - type.storage: \b(Int|UInt|String|Bit|Bool|Character|Double|Optional|Float|Range)\b + - type.storage: \b(AnyObject)\b + + # Collections + - type.collections: \b(Array|Dictionary|Set)\b + + # Ctypes + - type.ctypes: \b(CBool|CChar|CUnsignedChar|CShort|CUnsignedShort|CInt|CUnsignedInt|CLong|CUnsignedLong|CLongLong|CUnsignedLongLong|CWideChar|CChar16|CChar32|CFloat|CDouble)\b + + # String + - constant.string: + start: \" + end: \" + skip: \\. + rules: + - constant.specialChar: (\\0|\\\\|\\t|\\n|\\r|\\"|\\') + - constant.interpolation: \\\([[:graph:]]*\) + - constant.unicode: \\u\{[[:xdigit:]]+} + + # Shebang Line + - comment.shebang: ^(#!).* + + # Doc Comment + - comment.doc: (///).* + + # Line Comment + - comment.line: "//.*" + + # Block Comment + - comment.block: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + # Doc Block Comment + - comment.block: + start: "/\\*\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" + + # Todo + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/syntax_converter.go b/config/micro/syntax/syntax_converter.go new file mode 100644 index 0000000..1f3de5b --- /dev/null +++ b/config/micro/syntax/syntax_converter.go @@ -0,0 +1,165 @@ +//go:build ignore + +package main + +import ( + "fmt" + "os" + "regexp" + "strings" +) + +type SingleRule struct { + color string + regex string +} + +type MultiRule struct { + color string + start string + end string +} + +// JoinRule takes a syntax rule (which can be multiple regular expressions) +// and joins it into one regular expression by ORing everything together +func JoinRule(rule string) string { + split := strings.Split(rule, `" "`) + joined := strings.Join(split, "|") + return joined +} + +func parseFile(text, filename string) (filetype, syntax, header string, rules []any) { + lines := strings.Split(text, "\n") + + // Regex for parsing syntax statements + syntaxParser := regexp.MustCompile(`syntax "(.*?)"\s+"(.*)"+`) + // Regex for parsing header statements + headerParser := regexp.MustCompile(`header "(.*)"`) + + // Regex for parsing standard syntax rules + ruleParser := regexp.MustCompile(`color (.*?)\s+(?:\((.+?)?\)\s+)?"(.*)"`) + // Regex for parsing syntax rules with start="..." end="..." + ruleStartEndParser := regexp.MustCompile(`color (.*?)\s+(?:\((.+?)?\)\s+)?start="(.*)"\s+end="(.*)"`) + + for lineNum, line := range lines { + line = strings.TrimSpace(line) + if line == "" { + continue + } + if strings.HasPrefix(line, "#") { + continue + } + if strings.HasPrefix(line, "syntax") { + syntaxMatches := syntaxParser.FindSubmatch([]byte(line)) + if len(syntaxMatches) == 3 { + filetype = string(syntaxMatches[1]) + syntax = JoinRule(string(syntaxMatches[2])) + } else { + fmt.Println(filename, lineNum, "Syntax statement is not valid: "+line) + continue + } + } + if strings.HasPrefix(line, "header") { + // Header statement + headerMatches := headerParser.FindSubmatch([]byte(line)) + if len(headerMatches) == 2 { + header = JoinRule(string(headerMatches[1])) + } else { + fmt.Println(filename, lineNum, "Header statement is not valid: "+line) + continue + } + } + + // Syntax rule, but it could be standard or start-end + if ruleParser.MatchString(line) { + // Standard syntax rule + // Parse the line + submatch := ruleParser.FindSubmatch([]byte(line)) + var color string + var regexStr string + var flags string + if len(submatch) == 4 { + // If len is 4 then the user specified some additional flags to use + color = string(submatch[1]) + flags = string(submatch[2]) + if flags != "" { + regexStr = "(?" + flags + ")" + JoinRule(string(submatch[3])) + } else { + regexStr = JoinRule(string(submatch[3])) + } + } else if len(submatch) == 3 { + // If len is 3, no additional flags were given + color = string(submatch[1]) + regexStr = JoinRule(string(submatch[2])) + } else { + // If len is not 3 or 4 there is a problem + fmt.Println(filename, lineNum, "Invalid statement: "+line) + continue + } + + rules = append(rules, SingleRule{color, regexStr}) + } else if ruleStartEndParser.MatchString(line) { + // Start-end syntax rule + submatch := ruleStartEndParser.FindSubmatch([]byte(line)) + var color string + var start string + var end string + // Use m and s flags by default + if len(submatch) == 5 { + // If len is 5 the user provided some additional flags + color = string(submatch[1]) + start = string(submatch[3]) + end = string(submatch[4]) + } else if len(submatch) == 4 { + // If len is 4 the user did not provide additional flags + color = string(submatch[1]) + start = string(submatch[2]) + end = string(submatch[3]) + } else { + // If len is not 4 or 5 there is a problem + fmt.Println(filename, lineNum, "Invalid statement: "+line) + continue + } + + // rules[color] = "(?" + flags + ")" + "(" + start + ").*?(" + end + ")" + rules = append(rules, MultiRule{color, start, end}) + } + } + + return +} + +func generateFile(filetype, syntax, header string, rules []any) string { + output := "" + + output += fmt.Sprintf("filetype: %s\n\n", filetype) + output += fmt.Sprintf("detect: \n filename: \"%s\"\n", strings.Replace(strings.Replace(syntax, "\\", "\\\\", -1), "\"", "\\\"", -1)) + + if header != "" { + output += fmt.Sprintf(" signature: \"%s\"\n", strings.Replace(strings.Replace(header, "\\", "\\\\", -1), "\"", "\\\"", -1)) + } + + output += "\nrules:\n" + + for _, r := range rules { + if rule, ok := r.(SingleRule); ok { + output += fmt.Sprintf(" - %s: \"%s\"\n", rule.color, strings.Replace(strings.Replace(rule.regex, "\\", "\\\\", -1), "\"", "\\\"", -1)) + } else if rule, ok := r.(MultiRule); ok { + output += fmt.Sprintf(" - %s:\n", rule.color) + output += fmt.Sprintf(" start: \"%s\"\n", strings.Replace(strings.Replace(rule.start, "\\", "\\\\", -1), "\"", "\\\"", -1)) + output += fmt.Sprintf(" end: \"%s\"\n", strings.Replace(strings.Replace(rule.end, "\\", "\\\\", -1), "\"", "\\\"", -1)) + } + } + + return output +} + +func main() { + if len(os.Args) < 2 { + fmt.Println("no args") + return + } + + data, _ := os.ReadFile(os.Args[1]) + fmt.Print(generateFile(parseFile(string(data), os.Args[1]))) +} diff --git a/config/micro/syntax/systemd.yaml b/config/micro/syntax/systemd.yaml new file mode 100644 index 0000000..a8650be --- /dev/null +++ b/config/micro/syntax/systemd.yaml @@ -0,0 +1,16 @@ +filetype: systemd + +detect: + filename: "\\.(service|socket|timer)$" + header: "^\\[Unit\\]$" + +rules: + - statement: "^(Accept|After|Alias|AllowIsolate|Also|ANSI_COLOR|_AUDIT_LOGINUID|_AUDIT_SESSION|Backlog|Before|BindIPv6Only|BindsTo|BindToDevice|BlockIOReadBandwidth|BlockIOWeight|BlockIOWriteBandwidth|_BOOT_ID|Broadcast|BUG_REPORT_URL|BusName|Capabilities|CapabilityBoundingSet|CHASSIS|cipher|class|_CMDLINE|CODE_FILE|CODE_FUNC|CODE_LINE|_COMM|Compress|ConditionACPower|ConditionCapability|ConditionDirectoryNotEmpty|ConditionFileIsExecutable|ConditionFileNotEmpty|ConditionHost|ConditionKernelCommandLine|ConditionNull|ConditionPathExists|ConditionPathExistsGlob|ConditionPathIsDirectory|ConditionPathIsMountPoint|ConditionPathIsReadWrite|ConditionPathIsSymbolicLink|ConditionSecurity|ConditionVirtualization|Conflicts|ControlGroup|ControlGroupAttribute|ControlGroupModify|ControlGroupPersistent|controllers|Controllers|CPE_NAME|CPUAffinity|CPUSchedulingPolicy|CPUSchedulingPriority|CPUSchedulingResetOnFork|CPUShares|CrashChVT|CrashShell|__CURSOR|debug|DefaultControllers|DefaultDependencies|DefaultLimitAS|DefaultLimitCORE|DefaultLimitCPU|DefaultLimitDATA|DefaultLimitFSIZE|DefaultLimitLOCKS|DefaultLimitMEMLOCK|DefaultLimitMSGQUEUE|DefaultLimitNICE|DefaultLimitNOFILE|DefaultLimitNPROC|DefaultLimitRSS|DefaultLimitRTPRIO|DefaultLimitRTTIME|DefaultLimitSIGPENDING|DefaultLimitSTACK|DefaultStandardError|DefaultStandardOutput|Description|DeviceAllow|DeviceDeny|DirectoryMode|DirectoryNotEmpty|Documentation|DumpCore|entropy|Environment|EnvironmentFile|ERRNO|event_timeout|_EXE|ExecReload|ExecStart|ExecStartPost|ExecStartPre|ExecStop|ExecStopPost|ExecStopPre|filter|FONT|FONT_MAP|FONT_UNIMAP|ForwardToConsole|ForwardToKMsg|ForwardToSyslog|FreeBind|freq|FsckPassNo|fstab|_GID|Group|GuessMainPID|HandleHibernateKey|HandleLidSwitch|HandlePowerKey|HandleSuspendKey|hash|HibernateKeyIgnoreInhibited|HOME_URL|_HOSTNAME|ICON_NAME|ID|IdleAction|IdleActionSec|ID_LIKE|ID_MODEL|ID_MODEL_FROM_DATABASE|IgnoreOnIsolate|IgnoreOnSnapshot|IgnoreSIGPIPE|InaccessibleDirectories|InhibitDelayMaxSec|init|IOSchedulingClass|IOSchedulingPriority|IPTOS|IPTTL|JobTimeoutSec|JoinControllers|KeepAlive|KEYMAP|KEYMAP_TOGGLE|KillExcludeUsers|KillMode|KillOnlyUsers|KillSignal|KillUserProcesses|LidSwitchIgnoreInhibited|LimitAS|LimitCORE|LimitCPU|LimitDATA|LimitFSIZE|LimitLOCKS|LimitMEMLOCK|LimitMSGQUEUE|LimitNICE|LimitNOFILE|LimitNPROC|LimitRSS|LimitRTPRIO|LimitRTTIME|LimitSIGPENDING|LimitSTACK|link_priority|valueListenDatagram|ListenFIFO|ListenMessageQueue|ListenNetlink|ListenSequentialPacket|ListenSpecial|ListenStream|LogColor|LogLevel|LogLocation|LogTarget|luks|_MACHINE_ID|MakeDirectory|Mark|MaxConnections|MaxFileSec|MaxLevelConsole|MaxLevelKMsg|MaxLevelStore|MaxLevelSyslog|MaxRetentionSec|MemoryLimit|MemorySoftLimit|MESSAGE|MESSAGE_ID|MessageQueueMaxMessages|MessageQueueMessageSize|__MONOTONIC_TIMESTAMP|MountFlags|NAME|NAutoVTs|Nice|NonBlocking|NoNewPrivileges|NotifyAccess|OnActiveSec|OnBootSec|OnCalendar|OnFailure|OnFailureIsolate|OnStartupSec|OnUnitActiveSec|OnUnitInactiveSec|OOMScoreAdjust|Options|output|PAMName|PartOf|PassCredentials|PassSecurity|PathChanged|PathExists|PathExistsGlob|PathModified|PermissionsStartOnly|_PID|PIDFile|PipeSize|PowerKeyIgnoreInhibited|PRETTY_HOSTNAME|PRETTY_NAME|Priority|PRIORITY|PrivateNetwork|PrivateTmp|PropagatesReloadTo|pss|RateLimitBurst|RateLimitInterval|ReadOnlyDirectories|ReadWriteDirectories|__REALTIME_TIMESTAMP|ReceiveBuffer|RefuseManualStart|RefuseManualStop|rel|ReloadPropagatedFrom|RemainAfterExit|RequiredBy|Requires|RequiresMountsFor|RequiresOverridable|Requisite|RequisiteOverridable|ReserveVT|ResetControllers|Restart|RestartPreventExitStatus|RestartSec|RootDirectory|RootDirectoryStartOnly|RuntimeKeepFree|RuntimeMaxFileSize|RuntimeMaxUse|RuntimeWatchdogSec|samples|scale_x|scale_y|Seal|SecureBits|_SELINUX_CONTEXT|SendBuffer|SendSIGKILL|Service|ShowStatus|ShutdownWatchdogSec|size|SmackLabel|SmackLabelIPIn|SmackLabelIPOut|SocketMode|Sockets|SourcePath|_SOURCE_REALTIME_TIMESTAMP|SplitMode|StandardError|StandardInput|StandardOutput|StartLimitAction|StartLimitBurst|StartLimitInterval|static_node|StopWhenUnneeded|Storage|string_escape|none|replaceSuccessExitStatus|SupplementaryGroups|SUPPORT_URL|SuspendKeyIgnoreInhibited|SyslogFacility|SYSLOG_FACILITY|SyslogIdentifier|SYSLOG_IDENTIFIER|SyslogLevel|SyslogLevelPrefix|SYSLOG_PID|SystemCallFilter|SYSTEMD_ALIAS|_SYSTEMD_CGROUP|_SYSTEMD_OWNER_UID|SYSTEMD_READY|_SYSTEMD_SESSION|_SYSTEMD_UNIT|_SYSTEMD_USER_UNIT|SYSTEMD_WANTS|SystemKeepFree|SystemMaxFileSize|SystemMaxUse|SysVStartPriority|TCPCongestion|TCPWrapName|timeout|TimeoutSec|TimeoutStartSec|TimeoutStopSec|TimerSlackNSec|Transparent|_TRANSPORT|tries|TTYPath|TTYReset|TTYVHangup|TTYVTDisallocate|Type|_UID|UMask|Unit|User|UtmpIdentifier|VERSION|VERSION_ID|WantedBy|Wants|WatchdogSec|What|Where|WorkingDirectory)=" + - preproc: "^\\.include\\>" + - symbol: "=" + - special: "^\\[(Unit|Install|Service|Socket|Timer)\\]" + - identifier.class: "\\$MAINPID" + - constant.bool: "\\b(true|false)\\b" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/tcl.yaml b/config/micro/syntax/tcl.yaml new file mode 100644 index 0000000..b87a7d7 --- /dev/null +++ b/config/micro/syntax/tcl.yaml @@ -0,0 +1,18 @@ +filetype: tcl + +detect: + filename: "\\.tcl$" + header: "^#!.*/(env +)?tclsh( |$)" + +rules: + - statement: "\\b(after|append|array|auto_execok|auto_import|auto_load|auto_load_index|auto_qualify|binary|break|case|catch|cd|clock|close|concat|continue|else|elseif|encoding|eof|error|eval|exec|exit|expr|fblocked|fconfigure|fcopy|file|fileevent|flush|for|foreach|format|gets|glob|global|history|if|incr|info|interp|join|lappend|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|namespace|open|package|pid|puts|pwd|read|regexp|regsub|rename|return|scan|seek|set|socket|source|split|string|subst|switch|tclLog|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait|while)\\b" + - statement: "\\b(array anymore|array donesearch|array exists|array get|array names|array nextelement|array set|array size|array startsearch|array statistics|array unset)\\b" + - statement: "\\b(string bytelength|string compare|string equal|string first|string index|string is|string last|string length|string map|string match|string range|string repeat|string replace|string to|string tolower|string totitle|string toupper|string trim|string trimleft|string trimright|string will|string wordend|string wordstart)\\b" + - statement: "\\b(alarm|auto_load_pkg|bsearch|catclose|catgets|catopen|ccollate|cconcat|cequal|chgrp|chmod|chown|chroot|cindex|clength|cmdtrace|commandloop|crange|csubstr|ctoken|ctype|dup|echo|execl|fcntl|flock|fork|fstat|ftruncate|funlock|host_info|id|infox|keyldel|keylget|keylkeys|keylset|kill|lassign|lcontain|lempty|lgets|link|lmatch|loadlibindex|loop|lvarcat|lvarpop|lvarpush|max|min|nice|pipe|profile|random|readdir|replicate|scancontext|scanfile|scanmatch|select|server_accept|server_create|signal|sleep|sync|system|tclx_findinit|tclx_fork|tclx_load_tndxs|tclx_sleep|tclx_system|tclx_wait|times|translit|try_eval|umask|wait)\\b" + - identifier.class: "proc[[:space:]]|(\\{|\\})" + - symbol.operator: "(\\(|\\)|\\;|`|\\\\|\\$|<|>|!|=|&|\\|)" + - constant.number: "\\b[0-9]+(\\.[0-9]+)?\\b" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - identifier.var: "\\$\\{?[0-9A-Z_!@#$*?-]+\\}?" + - comment: "(^|;)[[:space:]]*#.*" + - indent-char.whitespace: "[[:space:]]+$" diff --git a/config/micro/syntax/terraform.yaml b/config/micro/syntax/terraform.yaml new file mode 100644 index 0000000..62dee25 --- /dev/null +++ b/config/micro/syntax/terraform.yaml @@ -0,0 +1,87 @@ +# +# This syntax definition is based on the Terraform guide: +# https://www.terraform.io/docs/configuration/index.html +# +# Formatting is loosely based on Sublime's and VSCode's syntax highlighting for Terraform: +# https://github.com/totoroot/Terraform.tmLanguage/blob/master/Terraform.sublime-syntax +# https://github.com/hashicorp/vscode-terraform/blob/main/syntaxes/terraform.tmGrammar.json +# + +filetype: terraform + +detect: + # File Extensions: + # + # - ".tf": the standard file extension + # https://www.terraform.io/docs/configuration/index.html#code-organization + # + # - ".hcl": non-terraform tools often use this HCL syntax, i.e. Vault + # https://www.vaultproject.io/docs/configuration/ + filename: "\\.tf$|\\.hcl$" + +rules: + # Named Values + # + # https://www.terraform.io/docs/language/expressions/references.html + - identifier: "\\b(var|local|module|data|path|terraform)\\b" + + # Block types + # + # resource: https://www.terraform.io/docs/language/resources/syntax.html + # provider: https://www.terraform.io/docs/language/providers/configuration.html + # variable: https://www.terraform.io/docs/language/values/variables.html + # output: https://www.terraform.io/docs/language/values/outputs.html + # locals: https://www.terraform.io/docs/language/values/locals.html + # module: https://www.terraform.io/docs/language/modules/syntax.html + # data: https://www.terraform.io/docs/language/data-sources/index.html + # terraform: https://www.terraform.io/docs/language/settings/index.html#terraform-block-syntax + - special: "\\b(resource|provider|variable|output|locals|module|terraform)\\b" + + # Built-In type keywords + # + # https://www.terraform.io/docs/language/expressions/type-constraints.html#primitive-types + # https://www.terraform.io/docs/language/expressions/type-constraints.html#dynamic-types-the-quot-any-quot-constraint + - type.keyword: "\\b(any|string|number|bool)\\b" + + # Built-In Functions + # + # https://www.terraform.io/docs/language/functions/index.html + - statement: "\\b(abs|ceil|floor|log|max|min|parseint|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trim|trimprefix|trimsuffix|trimspace|upper|alltrue|anytrue|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|one|range|reverse|setintersection|setproduct|setsubtract|setunion|slice|sort|sum|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|textdecodebase64|textencodebase64|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filesha1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|cidrsubnets|can|defaults|nonsensitive|sensitive|tobool|tolist|tomap|tonumber|toset|tostring|try)\\b" + + - symbol.operator: "([~^.:;,+*|=!\\%@]|<|>|/|-|&)" + + - symbol.brackets: "([(){}]|\\[|\\])" + + - constant.number: "\\b([0-9]+|0x[0-9a-fA-F]*)\\b|'.'" + + - constant.bool: "\\b(true|false|null)\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "''" + end: "''" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abfnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - comment: + start: "#|//" + end: "$\\n?" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/tex.yaml b/config/micro/syntax/tex.yaml new file mode 100644 index 0000000..3ff8448 --- /dev/null +++ b/config/micro/syntax/tex.yaml @@ -0,0 +1,32 @@ +filetype: tex + +detect: + filename: "\\.tex$|\\.bib$|\\.cls$" + +rules: + # colorize the identifiers of {} and [] + - identifier: + start: "\\{" + end: "\\}" + rules: [] + - identifier: + start: "\\[" + end: "\\]" + rules: [] + # numbers + - constant.number: "\\b[0-9]+(\\.[0-9]+)?([[:space:]](pt|mm|cm|in|ex|em|bp|pc|dd|cc|nd|nc|sp))?\\b" + # let brackets have the default color again + - default: "[{}\\[\\]]" + - special: "[&\\\\]" + # macros + - statement: "\\\\@?[a-zA-Z_]+" + - statement: "\\\\%" + # comments + - comment: + start: "[^\\\\]%|^%" + end: "$" + rules: [] + - comment: + start: "\\\\begin\\{comment\\}" + end: "\\\\end\\{comment\\}" + rules: [] diff --git a/config/micro/syntax/toml.yaml b/config/micro/syntax/toml.yaml new file mode 100644 index 0000000..807872d --- /dev/null +++ b/config/micro/syntax/toml.yaml @@ -0,0 +1,56 @@ +filetype: toml + +detect: + filename: "\\.toml" + +rules: + # Punctuation + - symbol: '[=,\.]' + - symbol.brackets: '[{\[\]}]' + # Strings + - constant.string: + start: '"""' + end: '\"{3,5}' + skip: '\\.' + rules: + - constant.specialChar: '\\u[[:xdigit:]]{4}' + - constant.specialChar: '\\U[[:xdigit:]]{8}' + - constant.specialChar: '\\[btnfr"\\]' + - constant.string: + start: '"' + end: '"' + skip: '\\.' + rules: + - constant.specialChar: '\\u[[:xdigit:]]{4}' + - constant.specialChar: '\\U[[:xdigit:]]{8}' + - constant.specialChar: '\\[btnfr"\\]' + - constant.string: + start: "'''" + end: "'{3,5}" + rules: [] + - constant.string: + start: "'" + end: "'" + rules: [] + # Integer + - constant.number: '[+-]?(\d+_)*\d+\b' + - constant.number: '(0x([[:xdigit:]]+_)*[[:xdigit:]]+|0o([0-7]_)*[0-7]+|0b([01]+_)*[01]+)' + # Float + - constant.number: '[+-]?(\d+_)*\d+\.(\d+_)*\d+' + - constant.number: '[+-]?(\d+_)*\d+(\.(\d+_)*\d+)?[Ee][+-]?(\d+_)*\d+' + - constant.number: '(\+|-)(inf|nan)' + # Bare key, keys starting with a digit or dash are ambiguous with numbers and are skipped + - identifier: '\b[A-Za-z_][A-Za-z0-9_-]*\b' + # Boolean and inf, nan without sign + - constant.bool.true: '\btrue\b' + - constant.bool.false: '\bfalse\b' + - constant.number: '\b(inf|nan)\b' + # Date and Time + - constant: '\d+-\d{2}-\d{2}([T ]\d{2}:\d{2}:\d{2}(\.\d+)?([+-]\d{2}:\d{2}|Z)?)?' + - constant: '\d{2}:\d{2}:\d{2}(\.\d+)?' + # Comments + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/twig.yaml b/config/micro/syntax/twig.yaml new file mode 100644 index 0000000..b5409d1 --- /dev/null +++ b/config/micro/syntax/twig.yaml @@ -0,0 +1,55 @@ +filetype: twig + +detect: + filename: "\\.twig$" + +rules: + - include: "html" + - symbol.tag: + start: "\\{\\{[[:space:]]" + end: "[[:space:]]\\}\\}" + rules: + - identifier: "\\b(abs|batch|capitalize|convert|encoding|date(_modify)?|default|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|round|slice|sort|split|striptags|title|trim|upper|url_encode)\\b" + - identifier.class: "\\b(attribute|block|constant|cycle|date|dump|include|max|min|parent|random|range|source|template_from_string)\\b" + - type.keyword: "\\b(and|as|constant|defined|divisibleby|empty|even|false|in|is|iterable|not|null|odd|or|same(as)?|true|with)\\b" + - symbol.operator: "[.:;,+*?|=!\\%]|<|>|/|-|&" + - symbol.brackets: "[(){}]|\\[|\\]" + - constant.number: "\\b[0-9]+\\b|\\b0x[0-9A-Fa-f]+\\b" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\" + rules: + - constant.specialChar: "\\\\." + - symbol.tag: + start: "\\{%[[:space:]]" + end: "[[:space:]]%\\}" + rules: + - identifier: "\\b(abs|batch|capitalize|convert|encoding|date(_modify)?|default|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|round|slice|sort|split|striptags|title|trim|upper|url_encode)\\b" + - identifier.class: "\\b(attribute|block|constant|cycle|date|dump|include|max|min|parent|random|range|source|template_from_string)\\b" + - type.keyword: "\\b(and|as|constant|defined|divisibleby|empty|even|false|in|is|iterable|not|null|odd|or|same(as)?|true|with)\\b" + - symbol.operator: "[.:;,+*?|=!\\%]|<|>|/|-|&" + - symbol.brackets: "[(){}]|\\[|\\]" + - constant.number: "\\b[0-9]+\\b|\\b0x[0-9A-Fa-f]+\\b" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\" + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\" + rules: + - constant.specialChar: "\\\\." + - comment: + start: "\\{#" + end: "#\\}" + rules: [] diff --git a/config/micro/syntax/typescript.yaml b/config/micro/syntax/typescript.yaml new file mode 100644 index 0000000..958a7db --- /dev/null +++ b/config/micro/syntax/typescript.yaml @@ -0,0 +1,49 @@ +filetype: typescript + +detect: + filename: "\\.tsx?$" + +rules: + - constant.number: "\\b[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\\b" + - constant.number: "\\b[-+]?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" + - constant.number: "\\b[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" + - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" + - statement: "\\b(abstract|as|async|await|break|case|catch|class|const|constructor|continue)\\b" + - statement: "\\b(debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from)\\b" + - statement: "\\b(function|get|if|implements|import|in|instanceof|interface|is|let|module|namespace)\\b" + - statement: "\\b(new|of|package|private|protected|public|require|return|set|static|super|switch)\\b" + - statement: "\\b(this|throw|try|type|typeof|var|void|while|with|yield)\\b" + - constant: "\\b(false|true|null|undefined|NaN)\\b" + - type: "\\b(Array|Boolean|Date|Enumerator|Error|Function|Math)\\b" + - type: "\\b(Number|Object|RegExp|String|Symbol)\\b" + - type: "\\b(any|unknown|boolean|never|number|string|symbol)\\b" + - statement: "[-+/*=<>!~%?:&|]" + - constant: "/[^*]([^/]|(\\\\/))*[^\\\\]/[gim]*" + - constant: "\\\\[0-7][0-7]?[0-7]?|\\\\x[0-9a-fA-F]+|\\\\[bfnrt'\"\\?\\\\]" + - comment: + start: "//" + end: "$" + rules: [] + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "TODO:?" + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "`" + end: "`" + rules: + - constant.specialChar: "\\\\." + - identifier: "\\x24\\{.*?\\}" diff --git a/config/micro/syntax/v.yaml b/config/micro/syntax/v.yaml new file mode 100644 index 0000000..304947b --- /dev/null +++ b/config/micro/syntax/v.yaml @@ -0,0 +1,80 @@ +filetype: v + +detect: + +rules: + # Conditionals and control flow + - preproc: "\\b(module|import)\\b" + - statement: "\\b(if|else|for|match|select|defer|or|unsafe)\\b" + - statement: "\\b(break|continue|goto|return)\\b" + - type.keyword: "\\b(assert|const|enum|fn|struct|interface|type)\\b" + - type.keyword: "\\b(pub|mut|__global)\\b" + + - preproc: "\\$\\b(if|else)\\b" + - identifier.os: "\\b(mac|macos|linux|windows|freebsd|openbsd|netbsd|dragonfly|android|solaris|haiku)\\b" + - identifier.compiler: "\\b(gcc|tinyc|clang|mingw|msvc|cplusplus)\\b" + - identifier.platform: "\\b(amd64|aarch64|x64|x32|little_endian|big_endian)\\b" + - identifier.other: "\\b(debug|test|js|glibc|prealloc|no_bounds_checking)\\b" + + - identifier.class: "\\b([A-Z][A-Za-z0-9_]*)\\b" + - identifier.function: "\\b([a-z_]+\\()" + - symbol.operator: "\\b(i[ns])\\b|[-+/*<>!=~*%&:|,.?]" + - symbol.attribute: + start: "^\\[" + end: "\\]$" + rules: + - default: ".*" + - symbol: "\\b(deprecated|direct_array_access|if|inline|live|ref_only|typedef|windows_stdcall)\\b" + + # Types + - type: "\\b(byte|u(16|32|64|128)|i(nt|8|16|64|128)|f(32|64))\\b" + - type: "\\b(bool|cha[nr]|map|rune|string)\\b" + - type: "\\b(any(_int|_float)?|size_t|(uint|byte|char|void)ptr)\\b" + - constant.bool: "\\b(true|false)\\b" + - constant.none: "\\b(none)\\b" + + # Brackets + - symbol.brackets: "(\\{|\\})" + - symbol.brackets: "(\\(|\\))" + - symbol.brackets: "(\\[|\\])" + + # Numbers and strings + - constant.number: "\\b(0b[01_]+)\\b" + - constant.number: "\\b(0o[0-7_]+)\\b" + - constant.number: "\\b(0x[0-9a-fA-F_]+)\\b" + - constant.number: "\\b([0-9_]+)\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abefnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "%." + - constant.specialChar: "\\\\[abefnrtv'\\\"\\\\]" + - constant.specialChar: "\\\\([0-7]{3}|x[A-Fa-f0-9]{2}|u[A-Fa-f0-9]{4}|U[A-Fa-f0-9]{8})" + + - constant.string: + start: "`" + end: "`" + rules: [] + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/vala.yaml b/config/micro/syntax/vala.yaml new file mode 100644 index 0000000..995c3fa --- /dev/null +++ b/config/micro/syntax/vala.yaml @@ -0,0 +1,26 @@ +filetype: vala + +detect: + filename: "\\.vala$" + +rules: + - type: "\\b(float|double|bool|u?char|u?int(8|16|32|64)?|u?short|u?long|void|s?size_t|unichar)\\b" + - identifier.class: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[()]" + - statement: "\\b(for|if|while|do|else|case|default|switch|try|throw|catch)\\b" + - statement: "\\b(inline|typedef|struct|enum|union|extern|static|const)\\b" + - statement: "\\b(operator|new|delete|return|null)\\b" + - statement: "\\b(class|override|private|public|signal|this|weak)\\b" + - special: "\\b(goto|break|continue)\\b" + - constant.bool: "\\b(true|false)\\b" + - constant.number: "\\b([0-9]+)\\b" + - symbol.operator: "[\\-+/*=<>?:!~%&|]|->" + - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'" + - comment: "(^|[[:space:]])//.*" + - comment: + start: "/\\*" + end: "\\*/" + rules: [] + + - todo: "TODO:?" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/verilog.yaml b/config/micro/syntax/verilog.yaml new file mode 100644 index 0000000..d6de753 --- /dev/null +++ b/config/micro/syntax/verilog.yaml @@ -0,0 +1,60 @@ +filetype: verilog + +detect: + filename: "\\.(v|vh|sv|svh)$" + +rules: + - preproc: "\\b(module|package|program|endmodule|endpackage|endprogram)\\b" + - type.keyword: "\\b(task|interface|class|endtask|endinterface|endclass)\\b" + # builtin functions like $display + - special: "\\$[0-9A-Za-z_]+" + + # Verilog keywords + - statement: "\\b(always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config)\\b" + - statement: "\\b(deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate)\\b" + - statement: "\\b(endprimitive|endspecify|endtable|event|for|force|forever|fork|function|generate)\\b" + - statement: "\\b(genvar|highz0|highz1|if|iff|ifnone|incdir|include|initial|input|instance|join)\\b" + - statement: "\\b(large|liblist|library|localparam|macromodule|medium|nand|negedge|nmos|nor|noshowcancelled)\\b" + - statement: "\\b(not|notif0|notif1|null|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup)\\b" + - statement: "\\b(pulsestyle_onevent|pulsestyle_ondetect|rcmos|realtime|reg|release|repeat|rnmos|rpmos|rtran)\\b" + - statement: "\\b(rtranif0|rtranif1|scalared|showcancelled|small|specify|specparam|strong0|strong1|supply0)\\b" + - statement: "\\b(supply1|table|time|tran|tranif0|tranif1|tri0|tri1|triand|trior|trireg|use|uwire)\\b" + - statement: "\\b(vectored|wait|wand|weak0|weak1|while|wor|xnor|xor)\\b" + + # SystemVerilog keywords + - statement: "\\b(alias|always_comb|always_ff|always_latch|assert|assume|before|bind|bins|binsof|break)\\b" + - statement: "\\b(chandle|clocking|const|constraint|context|continue|cover|covergroup|coverpoint|cross|dist|do)\\b" + - statement: "\\b(endclocking|endgroup|endproperty|endsequence|enum)\\b" + - statement: "\\b(expect|export|extends|extern|final|first_match|foreach|forkjoin|ignore_bins|illegal_bins|import)\\b" + - statement: "\\b(inside|intersect|join_any|join_none|local|longint|matches|modport|new)\\b" + - statement: "\\b(packed|priority|property|protected|pure|rand|randc|randcase|randsequence|ref|return)\\b" + - statement: "\\b(sequence|solve|static|struct|super|tagged|this|throughout|timeprecision)\\b" + - statement: "\\b(timeunit|type|typedef|union|unique|virtual|wait_order|wildcard|with|within)\\b" + + # types + - type.keyword: "\\b(int|integer|logic|wire|tri|unsigned|signed|inout|var|shortint|shortreal|real|void|string|bit|byte)\\b" + + # constants + - constant.number: "\\b[0-9]+\\b" + - constant.number: "\\b'[su]?[dboh][0-9xzXZa-fA-F]+\\b" + # .asdf(...) argument syntax + - special: "\\.((\\*)|([A-Za-z][A-Za-z0-9_]*))" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/vhdl.yaml b/config/micro/syntax/vhdl.yaml new file mode 100644 index 0000000..2c04318 --- /dev/null +++ b/config/micro/syntax/vhdl.yaml @@ -0,0 +1,37 @@ +filetype: vhdl + +detect: + filename: "\\.vhdl?$" + +rules: + - type: "(?i)\\b(string|integer|natural|positive|(un)?signed|std_u?logic(_vector)?|bit(_vector)?|boolean|u?x01z?|array|range)\\b" + - identifier: "(?i)library[[:space:]]+[a-zA-Z_0-9]+" + - identifier: "(?i)use[[:space:]]+[a-zA-Z_0-9\\.]+" + - identifier: "(?i)component[[:space:]]+[a-zA-Z_0-9]+" + - identifier: "(?i)(architecture|configuration)[[:space:]]+[a-zA-Z_0-9]+[[:space:]]+of[[:space:]]+[a-zA-Z_0-9]+" + - identifier: "(?i)(entity|package)[[:space:]]+[a-zA-Z_0-9]+[[:space:]]+is" + - identifier: "(?i)end[[:space:]]+((architecture|entity|component|process|package|generate)[[:space:]]+)?[a-zA-Z_0-9]+" + - statement: "(?i)\\b(abs|access|after|alias|all|and|architecture|assert|attribute)\\b" + - statement: "(?i)\\b(begin|block|body|buffer|bus|case|component|configuration|constant)\\b" + - statement: "(?i)\\b(disconnect|downto|else|elsif|end|entity|exit)\\b" + - statement: "(?i)\\b(file|for|function|generate|generic|guarded)\\b" + - statement: "(?i)\\b(if|impure|in|inertial|inout|is)\\b" + - statement: "(?i)\\b(label|library|linkage|literal|loop|map|mod)\\b" + - statement: "(?i)\\b(nand|new|next|nor|not|null|of|on|open|or|others|out)\\b" + - statement: "(?i)\\b(package|port|postponed|procedure|process|pure)\\b" + - statement: "(?i)\\b(range|record|register|reject|rem|report|return|rol|ror)\\b" + - statement: "(?i)\\b(select|severity|shared|signal|sla|sll|sra|srl|subtype)\\b" + - statement: "(?i)\\b(then|to|transport|type|unaffected|units|until|use)\\b" + - statement: "(?i)\\b(variable|wait|when|while|with|xnor|xor)\\b" + - statement: "(?i)'(base|left|right|high|low|pos|val|succ|pred|leftof|rightof|image|(last_)?value)" + - statement: "(?i)'((reverse_)?range|length|ascending|event|stable)" + - statement: "(?i)'(simple|path|instance)_name" + - statement: "(?i)\\b(std_match|(rising|falling)_edge|is_x)\\b" + - statement: "(?i)\\bto_(unsigned|signed|integer|u?x01z?|stdu?logic(vector)?)\\b" + - symbol.operator: "(\\+|-|\\*|/|&|<|>|=|\\.|:)" + - constant.number: "(?i)'([0-1]|u|x|z|w|l|h|-)'|[box]?\"([0-1a-fA-F]|u|x|z|w|l|h|-)+\"" + - constant.number: "(?i)\\b[0-9\\._]+(e[\\-]?[0-9]+)?( ?[fpnum]?s)?\\b" + - constant.bool: "(?i)\\b(true|false)\\b" + - constant: "(?i)\\b(note|warning|error|failure)\\b" + - constant.string: "\"[^\"]*\"" + - comment: "--.*" diff --git a/config/micro/syntax/vi.yaml b/config/micro/syntax/vi.yaml new file mode 100644 index 0000000..2a828dc --- /dev/null +++ b/config/micro/syntax/vi.yaml @@ -0,0 +1,31 @@ +filetype: vi + +detect: + filename: "(^|/|\\.)(ex|vim)rc$|\\.vim" + +rules: + - identifier: "[A-Za-z_][A-Za-z0-9_]*[(]+[A-Za-z0-9_:.,\\s]*[)]+" + - special: "[()]+" + - statement: "\\b([nvxsoilc]?(nore|un)?map|[nvlx]n|[ico]?no|[cilovx][um]|s?unm)\\b" + - statement: "\\b(snor|nun|nm|set|if|endif|let|unlet|source)\\b" + - statement: "[!&=?]" + - constant.number: "\\b[0-9]+\\b" + + - comment: + start: "(^\"|[ \t]+\" |[ \t]+\"$)" + end: "$" + rules: [] + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." diff --git a/config/micro/syntax/vue.yaml b/config/micro/syntax/vue.yaml new file mode 100644 index 0000000..d5e10c3 --- /dev/null +++ b/config/micro/syntax/vue.yaml @@ -0,0 +1,64 @@ +filetype: vue + +detect: + filename: "\\.vue$" + +rules: + - default: + start: "" + end: "" + limit-group: symbol.tag + rules: + - error: "<[^!].*?>" + - symbol.tag: "(?i)<[/]?(a|a(bbr|ddress|rea|rticle|side|udio)|b|b(ase|d(i|o)|lockquote|r|utton)|ca(nvas|ption)|center|cite|co(de|l|lgroup)|d(ata|atalist|d|el|etails|fn|ialog|l|t)|em|embed|fieldset|fig(caption|ure)|form|iframe|h[1-6]|hr|i|img|in(put|s)|kbd|keygen|label|legend|li|link|ma(in|p|rk)|menu|menuitem|met(a|er)|nav|noscript|o(bject|l|pt(group|ion)|utput)|p|param|picture|pre|progress|q|r(p|t|uby)|s|samp|se(ction|lect)|svg|small|source|span|strong|su(b|p|mmary)|textarea|time|track|u|ul|var|video|wbr)( .*)*?>" + - symbol.tag.extended: "(?i)<[/]?(body|div|html|head(er)?|footer|title|table|t(body|d|h(ead)?|r|foot))( .*)*?>" + - preproc: "(?i)<[/]?(script|style)( .*)*?>" + - special: "&[^;[[:space:]]]*;" + + - identifier: "(alt|bgcolor|class|height|href|id|label|longdesc|name|on(click|focus|load|mouseover)|placeholder|size|span|src|style|target|type|value|width)=" + - symbol: "[:=]" + - constant.string: "\"[^\"]*\"" + - constant.number: "(?i)#[0-9a-fA-F]{6,6}" + + - symbol.tag: "<|>" + - constant.string.url: "(ftp(s)?|http(s)?|git|chrome)://[^ ]+" + - comment: "" + #- preproc: "" + - comment.block: + start: "" + rules: [] + + # Bootstrap + - symbol.tag.extended: "(?i)<[/]?(b-alert|b-aspect|b-avatar|b-badge|b-icon|b-breadcrumb|b-button-group|b-button-toolbar|b-button|b-calendar|b-card-text|b-card-input|b-card|b-carousel-slide|b-carousel|b-collapse|b-dropdown|b-dropdown-item|b-dropdown-divider|b-embed|b-form-checkbox-group|b-form-checkbox|b-form-datepicker|b-form-file|b-form-group|b-form-input|b-form-radio|b-form-rating|b-form-select|b-form-spinbutton|b-form-tags|b-form-textarea|b-form|b-form-timepicker|b-img-lazy|b-img|b-input-group|b-jumbotron|b-input|b-container|b-row|b-col|b-link|b-list-group|b-list-group-item|b-media|b-modal|b-nav|b-nav-item|b-nav-item-dropdown|b-nav-text|b-nav-form|b-navbar|b-navbar-brand|b-navbar-toggle|b-navbar-nav|b-overlay|b-pagination|b-pagination-nav|b-popover|b-progress|b-progress-bar|b-sidebar|b-skeleton-wrapper|b-skeleton|b-spinner|b-table|b-table-lite|b-table-simple|b-tabs|b-tab|b-time|b-toast|b-tooltip)\\b" + - identifier: "(variant|title|show|shadow|icon|align-h|align-v|label-for|@submit|tag|img-alt|img-src|data-toggle|data-target|aria-controls|aria-expanded|aria-label|aria-disabled|tabindex|:interval|background|img-width|img-height|@sliding-start|@sliding-end|cols|header|@reset)=" + - symbol: "[:=]" + # Vue + - symbol.tag.extended: "(?i)<[/]?(component|transition|transition-group|keep-alive|slot)\\b" + - identifier: "(v-text|v-html|v-show|v-if|v-else|v-else-if|v-for|v-on|v-bind|v-model|v-slot|v-pre|v-cloak|v-once|key|ref|is|@click)=" + - symbol: "[:=]" + # Vue-router + - symbol.tag.extended: "(?i)<[/]?(router-link|router-view)\\b" + - identifier: "(to|v-slot)=" + - symbol: "[:=]" + + + - default: + start: "" + limit-group: symbol.tag + rules: + - include: "javascript" + + - default: + start: "" + end: "" + rules: + - include: "typescript" + + - default: + start: "" + end: "" + limit-group: symbol.tag + rules: + - include: "css" diff --git a/config/micro/syntax/xml.yaml b/config/micro/syntax/xml.yaml new file mode 100644 index 0000000..df4cde8 --- /dev/null +++ b/config/micro/syntax/xml.yaml @@ -0,0 +1,37 @@ +filetype: xml + +detect: + filename: "\\.(xml|sgml?|rng|svg|plist)$" + header: "<\\?xml.*\\?>" + +rules: + - preproc: + start: "" + rules: [] + + - comment: + start: "" + rules: [] + + - symbol.tag: + start: "<\\??" + end: "\\??>" + rules: + - identifier: + start: " " + end: "=" + rules: [] + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." diff --git a/config/micro/syntax/xresources.yaml b/config/micro/syntax/xresources.yaml new file mode 100644 index 0000000..d8b877c --- /dev/null +++ b/config/micro/syntax/xresources.yaml @@ -0,0 +1,14 @@ +filetype: xresources + +detect: + filename: "X(defaults|resources)$" + +rules: + - special: "^[[:alnum:]]+\\*" + - identifier.var: "\\*[[:alnum:]]+\\:" + - constant.number: "\\b[0-9]+\\b" + - symbol.operator: "[*:=]" + - constant.bool: "\\b(true|false)\\b" + - comment: "(^|[[:space:]])!([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/yaml.yaml b/config/micro/syntax/yaml.yaml new file mode 100644 index 0000000..54d4a64 --- /dev/null +++ b/config/micro/syntax/yaml.yaml @@ -0,0 +1,34 @@ +filetype: yaml + +detect: + filename: "\\.ya?ml$" + header: "%YAML" + +rules: + - type: "(^| )!!(binary|bool|float|int|map|null|omap|seq|set|str) " + - constant: "\\b(YES|yes|Y|y|ON|on|TRUE|True|true|NO|no|N|n|OFF|off|FALSE|False|false)\\b" + - statement: "(:[[:space:]]|\\[|\\]|:[[:space:]]+[|>]|^[[:space:]]*- )" + - identifier: "[[:space:]][\\*&][A-Za-z0-9]+" + - type: "[-.\\w]+:" + - statement: ":" + - special: "(^---|^\\.\\.\\.|^%YAML|^%TAG)" + + - constant.string: + start: "(^| )\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "(^| )'" + end: "'" + skip: "(\\\\.)|('')" + rules: + - constant.specialChar: "\\\\." + + - comment: + start: "#" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/yum.yaml b/config/micro/syntax/yum.yaml new file mode 100644 index 0000000..0c7fd1b --- /dev/null +++ b/config/micro/syntax/yum.yaml @@ -0,0 +1,12 @@ +filetype: yum + +detect: + filename: "\\.repo$|yum.*\\.conf$" + +rules: + - identifier: "^[[:space:]]*[^=]*=" + - constant.specialChar: "^[[:space:]]*\\[.*\\]$" + - statement: "\\$(releasever|arch|basearch|uuid|YUM[0-9])" + - comment: "(^|[[:space:]])#([^{].*)?$" + - indent-char.whitespace: "[[:space:]]+$" + - indent-char: " + +| + +" diff --git a/config/micro/syntax/zig.yaml b/config/micro/syntax/zig.yaml new file mode 100644 index 0000000..7317d35 --- /dev/null +++ b/config/micro/syntax/zig.yaml @@ -0,0 +1,52 @@ +filetype: zig + +detect: + filename: "\\.z(ig|on)$" + +rules: + # Reserved words + - statement: "\\b(addrspace|align|allowzero|and|asm|async|await|break|callconv|catch|comptime|const|continue|defer|else|errdefer|error|export|extern|fn|for|if|inline|noalias|noinline|nosuspend|or|orelse|packed|pub|resume|return|linksection|suspend|switch|test|threadlocal|try|unreachable|usingnamespace|var|volatile|while)\\b" + # builtin functions + - special: "@[a-zA-Z_]+" + # Primitive Types + - type: "\\b(anyframe|anytype|anyerror|anyopaque|bool|comptime_int|comptime_float|enum|f(16|32|64|80|128)|i(8|16|32|64|128)|isize|noreturn|opaque|struct|type|union|u(8|16|32|64|128)|usize|void)\\b" + - type: "\\b(c_u?(short|int|long(long)?)|c_longdouble|c_void)\\b" + + # Operators + - symbol.operator: "[-!|=;%.+^*:&?<>~]" + + # Parenthesis + - symbol.brackets: "[(){}]|\\[|\\]" + + # Constants + - constant: "\\b(null|undefined)\\b" + - constant.number: "\\b(0b[01_]+|0o[0-7_]+|[0-9_]+|0x[a-fA-F0-9_]+)\\b" + - constant.bool: "\\b(true|false)\\b" + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([nrt\\\\'\"]|x[a-fA-F0-9]{2}|u{[a-fA-F0-9]+})" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - error: "..+" + - constant.specialChar: "\\\\([nrt\\\\'\"]|x[a-fA-F0-9]{2}|u{[a-fA-F0-9]+})" + + - constant.string: + start: "\\\\\\\\" + end: "$" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([nrt\\\\'\"]|x[a-fA-F0-9]{2}|u{[a-fA-F0-9]+})" + + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/zscript.yaml b/config/micro/syntax/zscript.yaml new file mode 100644 index 0000000..d20b561 --- /dev/null +++ b/config/micro/syntax/zscript.yaml @@ -0,0 +1,72 @@ +filetype: zscript +# Loosely based on the csharp.yaml definition +# (?i) on everything because ZScript isn't case sensitive + +detect: + filename: "(?i)\\.z(c|sc)$" + +rules: + + # ZScript only has one preprocessor directive and a required engine version declaration + - preproc: "(?i)#include" + - preproc: "(?i)version" + + # State labels ("goto" word overridden by state logic rule below) + - symbol.tag: "(?i)[a-z0-9.]+:" + - symbol.tag: "(?i)goto [a-z0-9]+[\\+0-9]*" + + # Classes + - identifier.class: "(?i)class +[a-z0-9_]+ *((:) +[a-z0-9.]+)?" + + # Functions (open paren overridden by symbol.brackets rule because perl regex apparently doesn't support postive lookahead) + - identifier: "(?i)[\\.]*[a-z0-9_]+[ ]*[(]+" + + # Variable types + - type: "(?i)\\b(actor|object|vector2|vector3|name|string|color|sound|void|double|bool|int|float|float64|uint8|uint16|uint|int8|int16|TextureID|SpriteID|Array|voidptr|short|action|state|statelabel)\\b" + + # Keywords + - statement: "(?i)\\b(class|default|private|static|native|return|if|else|for|while|do|deprecated|null|readonly|true|false|struct|extend|clearscope|vararg|ui|play|virtual|virtualscope|meta|Property|in|out|states|override|super|is|let|const|replaces|protected|self|abstract|enum|switch|case)\\b" + + # State logic keywords + - special: "(?i)\\b(goto|loop|stop|break|continue|fail)\\b" + + # Symbols + - symbol.operator: "[\\-+/*=<>?:!~%&|]" + - symbol.brackets: "[(){}]|\\[|\\]" + + # Constants + - constant.bool: "(?i)(\\b(true|false)\\b|NULL)" + - constant.number: "(?i)\\b([0-9][.]*[0-9]*)+?\\b" + - constant.number: "(?i)\\b(0x[A-Fa-f0-9_]+)?\\b" + - constant.number: "(?i)\\b(0b[0-1_]+)[FL]?\\b" + #- constant.number: "(?i)\\b(([0-9][.]*[0-9]*)+|0x[A-Fa-f0-9_]+|0b[0-1_]+)[FL]?\\b" + + # Strings + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([btnfr]|'|\\\"|\\\\)" + - constant.specialChar: "\\\\u[A-Fa-f0-9]{4}" + + - constant.string: + start: "'" + end: "'" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\([btnfr]|'|\\\"|\\\\)" + - constant.specialChar: "\\\\u[A-Fa-f0-9]{4}" + + # Comments + - comment: + start: "//" + end: "$" + rules: + - todo: "(TODO|XXX|FIXME):?" + + - comment: + start: "/\\*" + end: "\\*/" + rules: + - todo: "(TODO|XXX|FIXME):?" diff --git a/config/micro/syntax/zsh.yaml b/config/micro/syntax/zsh.yaml new file mode 100644 index 0000000..a283213 --- /dev/null +++ b/config/micro/syntax/zsh.yaml @@ -0,0 +1,52 @@ +filetype: zsh + +detect: + filename: "(\\.zsh$|\\.?(zshenv|zprofile|zshrc|zlogin|zlogout)$)" + header: "^#!.*/(env +)?zsh( |$)" + +rules: + ## Numbers + - constant.number: "\\b[0-9]+\\b" + + ## Conditionals and control flow + - statement: "\\b(always|break|bye|case|continue|disown|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while)\\b" + + - statement: "(\\{|\\}|\\(|\\)|\\;|\\]|\\[|`|\\\\|\\$|<|>|!|=|&|\\|)" + ## Conditional flags + - special: "-[Ldefgruwx]\\b" + - special: "-(eq|ne|gt|lt|ge|le|s|n|z)\\b" + + ## Bash-inherited + - statement: "\\b((un)?alias|bindkey|builtin|cd|declare|eval|exec|export|jobs|let|popd|pushd|set|source|typeset|umask|unset)\\b" + ## ZSH-specific + - type: "\\b(add-zsh-hook|autoload|chdir|compinit|dirs|(dis|en)able|echotc|emulate|print|prompt(init)?|(un)?setopt|zle|zmodload|zstyle|whence)\\b" + + ## Common linux commands + - statement: "\\b((g|ig)?awk|find|\\w{0,4}grep|kill|killall|\\w{0,4}less|make|pkill|sed|tar)\\b" + + ## Coreutils commands + - statement: "\\b(base64|basename|cat|chcon|chgrp|chmod|chown|chroot|cksum|comm|cp|csplit|cut|date|dd|df|dir|dircolors|dirname|du|echo|env|expand|expr|factor|false|fmt|fold|head|hostid|id|install|join|link|ln|logname|ls|md5sum|mkdir|mkfifo|mknod|mktemp|mv|nice|nl|nohup|nproc|numfmt|od|paste|pathchk|pinky|pr|printenv|printf|ptx|pwd|readlink|realpath|rm|rmdir|runcon|seq|(sha1|sha224|sha256|sha384|sha512)sum|shred|shuf|sleep|sort|split|stat|stdbuf|stty|sum|sync|tac|tail|tee|test|timeout|touch|tr|true|truncate|tsort|tty|uname|unexpand|uniq|unlink|users|vdir|wc|who|whoami|yes)\\b" + + ## Function definition + - identifier: "^\\s+(function\\s+)[0-9A-Z_]+\\s+\\(\\)" # (i) + + ## Variables + - identifier: "\\$\\{?[0-9A-Z_!@#$*?-]+\\}?" #(i) + + - constant.string: + start: "\"" + end: "\"" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + - constant.string: + start: "'" + end: "'" + rules: [] + + - comment: + start: "(^|\\s)#" + end: "$" + rules: [] + diff --git a/config/nvim/.gitignore b/config/nvim/.gitignore new file mode 100644 index 0000000..cc5457a --- /dev/null +++ b/config/nvim/.gitignore @@ -0,0 +1,8 @@ +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/config/nvim/.neoconf.json b/config/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/config/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/config/nvim/LICENSE b/config/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/config/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/config/nvim/README.md b/config/nvim/README.md new file mode 100644 index 0000000..185280b --- /dev/null +++ b/config/nvim/README.md @@ -0,0 +1,4 @@ +# šŸ’¤ LazyVim + +A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). +Refer to the [documentation](https://lazyvim.github.io/installation) to get started. diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..2514f9e --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,2 @@ +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json new file mode 100644 index 0000000..fa5801f --- /dev/null +++ b/config/nvim/lazy-lock.json @@ -0,0 +1,34 @@ +{ + "LazyVim": { "branch": "main", "commit": "459a4c3b1059671e766a46c7cc223827dc67e3d0" }, + "blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "0303a7208dba448c459767486a38a6ec05c4216b" }, + "conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" }, + "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, + "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" }, + "grug-far.nvim": { "branch": "main", "commit": "5506c2f59dc9ab2ed6c233585412b24d31d51521" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" }, + "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "0a695750d747db1e7e70bcf0267ef8951c95fc83" }, + "mason.nvim": { "branch": "main", "commit": "16ba83bfc8a25f52bb545134f5bee082b195c460" }, + "mini.ai": { "branch": "main", "commit": "deacc8e9cf05df0297e3b14a08c2f8a415045c6f" }, + "mini.icons": { "branch": "main", "commit": "520995f1d75da0e4cc901ee95080b1ff2bc46b94" }, + "mini.pairs": { "branch": "main", "commit": "30cf2f01c4aaa2033db67376b9924fa2442c05d6" }, + "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-lint": { "branch": "master", "commit": "d48f3a76189d03b2239f6df1b2f7e3fa8353743b" }, + "nvim-lspconfig": { "branch": "master", "commit": "07dff35e7c95288861200b788ef32d6103f107f0" }, + "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, + "nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" }, + "nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" }, + "persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, + "snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" }, + "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, + "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, + "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, + "ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" }, + "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } +} diff --git a/config/nvim/lazyvim.json b/config/nvim/lazyvim.json new file mode 100644 index 0000000..d8bcaf6 --- /dev/null +++ b/config/nvim/lazyvim.json @@ -0,0 +1,10 @@ +{ + "extras": [ + + ], + "install_version": 8, + "news": { + "NEWS.md": "11866" + }, + "version": 8 +} \ No newline at end of file diff --git a/config/nvim/lua/config/autocmds.lua b/config/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..4221e75 --- /dev/null +++ b/config/nvim/lua/config/autocmds.lua @@ -0,0 +1,8 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- +-- Add any additional autocmds here +-- with `vim.api.nvim_create_autocmd` +-- +-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) +-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") diff --git a/config/nvim/lua/config/keymaps.lua b/config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..2c134f7 --- /dev/null +++ b/config/nvim/lua/config/keymaps.lua @@ -0,0 +1,3 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here diff --git a/config/nvim/lua/config/lazy.lua b/config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..ace62cd --- /dev/null +++ b/config/nvim/lua/config/lazy.lua @@ -0,0 +1,79 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + install = { colorscheme = { "tokyonight", "habamax" } }, + checker = { + enabled = true, -- check for plugin updates periodically + notify = false, -- notify on update + }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, + + { + "epwalsh/obsidian.nvim", + version = "*", + lazy = true, + ft = "markdown", + dependencies = { + "nvim-lua/plenary.nvim", + }, + opts = { + workspaces = { + { + name = "Notizen", + path = "~/documents/Notizen", + }, + { + name = "Publikationen", + path = "~/documents/Publikationen", + }, + }, + completion = { + nvim_cmp = true, + min_chars = 2, + }, + }, + }, +}) diff --git a/config/nvim/lua/config/options.lua b/config/nvim/lua/config/options.lua new file mode 100644 index 0000000..8d7b461 --- /dev/null +++ b/config/nvim/lua/config/options.lua @@ -0,0 +1,5 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here +vim.opt.spell = true +vim.opt.spelllang = "de_DE" diff --git a/config/nvim/lua/plugins/example.lua b/config/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..17f53d6 --- /dev/null +++ b/config/nvim/lua/plugins/example.lua @@ -0,0 +1,197 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, { + function() + return "šŸ˜„" + end, + }) + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, +} diff --git a/config/nvim/stylua.toml b/config/nvim/stylua.toml new file mode 100644 index 0000000..5d6c50d --- /dev/null +++ b/config/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 \ No newline at end of file diff --git a/config/yazi/flavors/catppuccin-frappe.yazi/LICENSE b/config/yazi/flavors/catppuccin-frappe.yazi/LICENSE new file mode 100644 index 0000000..fb5b1d6 --- /dev/null +++ b/config/yazi/flavors/catppuccin-frappe.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 yazi-rs + +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/config/yazi/flavors/catppuccin-frappe.yazi/LICENSE-tmtheme b/config/yazi/flavors/catppuccin-frappe.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..006383b --- /dev/null +++ b/config/yazi/flavors/catppuccin-frappe.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Catppuccin + +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/config/yazi/flavors/catppuccin-frappe.yazi/README.md b/config/yazi/flavors/catppuccin-frappe.yazi/README.md new file mode 100644 index 0000000..737a6aa --- /dev/null +++ b/config/yazi/flavors/catppuccin-frappe.yazi/README.md @@ -0,0 +1,36 @@ +

+ Yazi logo +
+ +

+ Catppuccin Frappe Flavor for Yazi +

+ +## šŸ‘€ Preview + + + +## šŸŽØ Installation + +```sh +ya pkg add yazi-rs/flavors:catppuccin-frappe +``` + +## āš™ļø Usage + +Set the content of your `theme.toml` to enable it as your _dark_ flavor: + +```toml +[flavor] +dark = "catppuccin-frappe" +``` + +Make sure your `theme.toml` doesn't contain anything other than `[flavor]`, unless you want to override certain styles of this flavor. + +See the [Yazi flavor documentation](https://yazi-rs.github.io/docs/flavors/overview) for more details. + +## šŸ“œ License + +The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. + +Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. diff --git a/config/yazi/flavors/catppuccin-frappe.yazi/flavor.toml b/config/yazi/flavors/catppuccin-frappe.yazi/flavor.toml new file mode 100644 index 0000000..3f730f8 --- /dev/null +++ b/config/yazi/flavors/catppuccin-frappe.yazi/flavor.toml @@ -0,0 +1,215 @@ +# vim:fileencoding=utf-8:foldmethod=marker + +# : Manager {{{ + +[mgr] +cwd = { fg = "#81c8be" } + +# Find +find_keyword = { fg = "#e5c890", bold = true, italic = true, underline = true } +find_position = { fg = "#f4b8e4", bg = "reset", bold = true, italic = true } + +# Marker +marker_copied = { fg = "#a6d189", bg = "#a6d189" } +marker_cut = { fg = "#e78284", bg = "#e78284" } +marker_marked = { fg = "#81c8be", bg = "#81c8be" } +marker_selected = { fg = "#e5c890", bg = "#e5c890" } + +# Count +count_copied = { fg = "#303446", bg = "#a6d189" } +count_cut = { fg = "#303446", bg = "#e78284" } +count_selected = { fg = "#303446", bg = "#e5c890" } + +# Border +border_symbol = "│" +border_style = { fg = "#838ba7" } + +# : }}} + + +# : Tabs {{{ + +[tabs] +active = { fg = "#303446", bg = "#8caaee", bold = true } +inactive = { fg = "#8caaee", bg = "#414559" } + +# : }}} + + +# : Mode {{{ + +[mode] + +normal_main = { fg = "#303446", bg = "#8caaee", bold = true } +normal_alt = { fg = "#8caaee", bg = "#414559" } + +# Select mode +select_main = { fg = "#303446", bg = "#81c8be", bold = true } +select_alt = { fg = "#81c8be", bg = "#414559" } + +# Unset mode +unset_main = { fg = "#303446", bg = "#eebebe", bold = true } +unset_alt = { fg = "#eebebe", bg = "#414559" } + +# : }}} + + +# : Status bar {{{ + +[status] +# Permissions +perm_sep = { fg = "#838ba7" } +perm_type = { fg = "#8caaee" } +perm_read = { fg = "#e5c890" } +perm_write = { fg = "#e78284" } +perm_exec = { fg = "#a6d189" } + +# Progress +progress_label = { fg = "#ffffff", bold = true } +progress_normal = { fg = "#a6d189", bg = "#51576d" } +progress_error = { fg = "#e5c890", bg = "#e78284" } + +# : }}} + + +# : Pick {{{ + +[pick] +border = { fg = "#8caaee" } +active = { fg = "#f4b8e4", bold = true } +inactive = {} + +# : }}} + + +# : Input {{{ + +[input] +border = { fg = "#8caaee" } +title = {} +value = {} +selected = { reversed = true } + +# : }}} + + +# : Completion {{{ + +[cmp] +border = { fg = "#8caaee" } + +# : }}} + + +# : Tasks {{{ + +[tasks] +border = { fg = "#8caaee" } +title = {} +hovered = { fg = "#f4b8e4", bold = true } + +# : }}} + + +# : Which {{{ + +[which] +mask = { bg = "#414559" } +cand = { fg = "#81c8be" } +rest = { fg = "#949cbb" } +desc = { fg = "#f4b8e4" } +separator = "  " +separator_style = { fg = "#626880" } + +# : }}} + + +# : Help {{{ + +[help] +on = { fg = "#81c8be" } +run = { fg = "#f4b8e4" } +hovered = { reversed = true, bold = true } +footer = { fg = "#414559", bg = "#c6d0f5" } + +# : }}} + + +# : Spotter {{{ + +[spot] +border = { fg = "#8caaee" } +title = { fg = "#8caaee" } +tbl_col = { fg = "#81c8be" } +tbl_cell = { fg = "#f4b8e4", bg = "#51576d" } + +# : }}} + + +# : Notification {{{ + +[notify] +title_info = { fg = "#a6d189" } +title_warn = { fg = "#e5c890" } +title_error = { fg = "#e78284" } + +# : }}} + + +# : File-specific styles {{{ + +[filetype] + +rules = [ + # Image + { mime = "image/*", fg = "#81c8be" }, + # Media + { mime = "{audio,video}/*", fg = "#e5c890" }, + # Archive + { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#f4b8e4" }, + # Document + { mime = "application/{pdf,doc,rtf}", fg = "#a6d189" }, + # Virtual file system + { mime = "vfs/{absent,stale}", fg = "#949cbb" }, + # Fallback + { url = "*", fg = "#c6d0f5" }, + { url = "*/", fg = "#8caaee" }, +] + +# : }}} + +[icon] + +dirs = [ + { name = ".config", text = "ī—¼", fg = "#f4b8e4" }, + { name = ".git", text = "ī—»", fg = "#81c8be" }, + { name = ".github", text = "ī—½", fg = "#8caaee" }, + { name = ".npm", text = "ī—ŗ", fg = "#8caaee" }, + { name = "Desktop", text = "ļ„ˆ", fg = "#81c8be" }, + { name = "Development", text = "", fg = "#81c8be" }, + { name = "Documents", text = "", fg = "#81c8be" }, + { name = "Downloads", text = "ļ’˜", fg = "#81c8be" }, + { name = "Library", text = "", fg = "#81c8be" }, + { name = "Movies", text = "", fg = "#81c8be" }, + { name = "Music", text = "", fg = "#81c8be" }, + { name = "Pictures", text = "", fg = "#81c8be" }, + { name = "Public", text = "", fg = "#81c8be" }, + { name = "Videos", text = "", fg = "#81c8be" }, +] +conds = [ + # Special files + { if = "orphan", text = "ļ„§", fg = "#c6d0f5" }, + { if = "link", text = "", fg = "#838ba7" }, + { if = "block", text = "ļƒ‰", fg = "#eebebe" }, + { if = "char", text = "", fg = "#eebebe" }, + { if = "fifo", text = "", fg = "#eebebe" }, + { if = "sock", text = "", fg = "#eebebe" }, + { if = "sticky", text = "ļ‚", fg = "#eebebe" }, + { if = "dummy", text = "", fg = "#e78284" }, + + # Fallback + { if = "dir & hovered", text = "ī—¾", fg = "#8caaee" }, + { if = "dir", text = "ī—æ", fg = "#8caaee" }, + { if = "exec", text = "ļ’‰", fg = "#a6d189" }, + { if = "!dir", text = "ļ…›", fg = "#c6d0f5" }, +] diff --git a/config/yazi/flavors/catppuccin-frappe.yazi/preview.png b/config/yazi/flavors/catppuccin-frappe.yazi/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..03203c957c4922a5e73719c749c368fee22a2eee GIT binary patch literal 587309 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%0Dfp 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 z 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

y@Nw? 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%0D@{9`)b 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

jt5e5u+HKBKgRulj?}xx`nV5 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

t)S zFFMC|N9)eue+9SkW>x;v8PN3oGh+(uCl<@{<}HYaB?t-REvx-JZ4Z)-_lf>)8Iv6D!`N?IwEiN$e8jJkOINy!=>^) zI6~M`T<&Y`Kx?aqyG=D2%WgH2)uYJH&S5KL2?SbI6nAfD8?D{&l&ACT@E{ojI50^u zaKYL#o)|IeV~RL^(v?`D)P#$N z!eE|klAe%whTlZ5&)|3ekSrysT)Ix?m-K#=Ix82bTTcP{2L`9~4@8r20a-Guq}k~+ z1v7(S3Iq!eu>!jtE*UX1CY{b{^%qbccq;&x5VmD8uh?+#<~XVWw*AO)(zNg@F$J9RW@5_31u^AAFVggX0j7*)y0~%Y5kblL z))ZN308>sv%F8%qjK;{)nnw4´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 z�NFWioLdV0DL5}00W>o6|xE|c=RR!DTS0?ZG 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 + + + + name + Catppuccin FrappƩ + semanticClass + theme.dark.catppuccin-frappƩ + uuid + e0ada983-8938-490c-86f0-97a1a0ec58e4 + author + Catppuccin Org + colorSpaceName + sRGB + settings + + + settings + + background + #303446 + foreground + #c6d0f5 + caret + #f2d5cf + lineHighlight + #414559 + misspelling + #e78284 + accent + #ca9ee6 + selection + #949cbb40 + activeGuide + #51576d + findHighlight + #506373 + gutterForeground + #838ba7 + + + + name + Basic text & variable names (incl. leading punctuation) + scope + text, source, variable.other.readwrite, punctuation.definition.variable + settings + + foreground + #c6d0f5 + + + + name + Parentheses, Brackets, Braces + scope + punctuation + settings + + foreground + #949cbb + fontStyle + + + + + name + Comments + scope + comment, punctuation.definition.comment + settings + + foreground + #949cbb + fontStyle + italic + + + + scope + string, punctuation.definition.string + settings + + foreground + #a6d189 + + + + scope + constant.character.escape + settings + + foreground + #f4b8e4 + + + + name + Booleans, constants, numbers + scope + constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point + settings + + foreground + #ef9f76 + + + + scope + keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword + settings + + foreground + #ca9ee6 + fontStyle + + + + + scope + entity.name.tag.documentation + settings + + foreground + #ca9ee6 + + + + name + Punctuation + scope + keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value + settings + + foreground + #81c8be + + + + scope + entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function + settings + + foreground + #8caaee + fontStyle + italic + + + + name + Classes + scope + entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct + settings + + foreground + #e5c890 + fontStyle + italic + + + + name + Enum + scope + entity.name.enum + settings + + foreground + #e5c890 + fontStyle + italic + + + + name + Enum member + scope + meta.enum variable.other.readwrite, variable.other.enummember + settings + + foreground + #81c8be + + + + name + Object properties + scope + meta.property.object + settings + + foreground + #81c8be + + + + name + Types + scope + meta.type, meta.type-alias, support.type, entity.name.type + settings + + foreground + #e5c890 + fontStyle + italic + + + + name + Decorators + scope + meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator + settings + + foreground + #ef9f76 + + + + scope + variable.parameter, meta.function.parameters + settings + + foreground + #ea999c + fontStyle + italic + + + + name + Built-ins + scope + constant.language, support.function.builtin + settings + + foreground + #e78284 + + + + scope + entity.other.attribute-name.documentation + settings + + foreground + #e78284 + + + + name + Preprocessor directives + scope + keyword.control.directive, punctuation.definition.directive + settings + + foreground + #e5c890 + + + + name + Type parameters + scope + punctuation.definition.typeparameters + settings + + foreground + #99d1db + + + + name + Namespaces + scope + entity.name.namespace + settings + + foreground + #e5c890 + + + + name + Property names (left hand assignments in json/yaml/css) + scope + support.type.property-name.css + settings + + foreground + #8caaee + fontStyle + + + + + name + This/Self keyword + scope + variable.language.this, variable.language.this punctuation.definition.variable + settings + + foreground + #e78284 + + + + name + Object properties + scope + variable.object.property + settings + + foreground + #c6d0f5 + + + + name + String template interpolation + scope + string.template variable, string variable + settings + + foreground + #c6d0f5 + + + + name + `new` as bold + scope + keyword.operator.new + settings + + fontStyle + bold + + + + name + C++ extern keyword + scope + storage.modifier.specifier.extern.cpp + settings + + foreground + #ca9ee6 + + + + name + C++ scope resolution + scope + entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp + settings + + foreground + #e5c890 + + + + name + C++ doc keywords + scope + storage.type.class.doxygen + settings + + fontStyle + + + + + name + C++ operators + scope + storage.modifier.reference.cpp + settings + + foreground + #81c8be + + + + name + C# Interpolated Strings + scope + meta.interpolation.cs + settings + + foreground + #c6d0f5 + + + + name + C# xml-style docs + scope + comment.block.documentation.cs + settings + + foreground + #c6d0f5 + + + + name + Classes, reflecting the className color in JSX + scope + source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css + settings + + foreground + #e5c890 + + + + name + Operators + scope + punctuation.separator.operator.css + settings + + foreground + #81c8be + + + + name + Pseudo classes + scope + source.css entity.other.attribute-name.pseudo-class + settings + + foreground + #81c8be + + + + scope + source.css constant.other.unicode-range + settings + + foreground + #ef9f76 + + + + scope + source.css variable.parameter.url + settings + + foreground + #a6d189 + fontStyle + + + + + name + CSS vendored property names + scope + support.type.vendored.property-name + settings + + foreground + #99d1db + + + + name + Less/SCSS right-hand variables (@/$-prefixed) + scope + source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss + settings + + foreground + #ea999c + + + + name + CSS variables (--prefixed) + scope + source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less + settings + + foreground + #8caaee + + + + name + CSS Percentage values, styled the same as numbers + scope + keyword.other.unit.percentage.css + settings + + foreground + #ef9f76 + + + + name + CSS Attribute selectors, styled the same as strings + scope + source.css meta.attribute-selector + settings + + foreground + #a6d189 + + + + name + JSON/YAML keys, other left-hand assignments + scope + keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml + settings + + foreground + #8caaee + fontStyle + + + + + name + JSON/YAML constants + scope + constant.language.json, constant.language.yaml + settings + + foreground + #ef9f76 + + + + name + YAML anchors + scope + entity.name.type.anchor.yaml, variable.other.alias.yaml + settings + + foreground + #e5c890 + fontStyle + + + + + name + TOML tables / ini groups + scope + support.type.property-name.table, entity.name.section.group-title.ini + settings + + foreground + #e5c890 + + + + name + TOML dates + scope + constant.other.time.datetime.offset.toml + settings + + foreground + #f4b8e4 + + + + name + YAML anchor puctuation + scope + punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml + settings + + foreground + #f4b8e4 + + + + name + YAML triple dashes + scope + entity.other.document.begin.yaml + settings + + foreground + #f4b8e4 + + + + name + Markup Diff + scope + markup.changed.diff + settings + + foreground + #ef9f76 + + + + name + Diff + scope + meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff + settings + + foreground + #8caaee + + + + name + Diff Inserted + scope + markup.inserted.diff + settings + + foreground + #a6d189 + + + + name + Diff Deleted + scope + markup.deleted.diff + settings + + foreground + #e78284 + + + + name + dotenv left-hand side assignments + scope + variable.other.env + settings + + foreground + #8caaee + + + + name + dotenv reference to existing env variable + scope + string.quoted variable.other.env + settings + + foreground + #c6d0f5 + + + + name + GDScript functions + scope + support.function.builtin.gdscript + settings + + foreground + #8caaee + + + + name + GDScript constants + scope + constant.language.gdscript + settings + + foreground + #ef9f76 + + + + name + Comment keywords + scope + comment meta.annotation.go + settings + + foreground + #ea999c + + + + name + go:embed, go:build, etc. + scope + comment meta.annotation.parameters.go + settings + + foreground + #ef9f76 + + + + name + Go constants (nil, true, false) + scope + constant.language.go + settings + + foreground + #ef9f76 + + + + name + GraphQL variables + scope + variable.graphql + settings + + foreground + #c6d0f5 + + + + name + GraphQL aliases + scope + string.unquoted.alias.graphql + settings + + foreground + #eebebe + + + + name + GraphQL enum members + scope + constant.character.enum.graphql + settings + + foreground + #81c8be + + + + name + GraphQL field in types + scope + meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql + settings + + foreground + #eebebe + + + + name + HTML/XML DOCTYPE as keyword + scope + keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag + settings + + foreground + #ca9ee6 + + + + name + HTML/XML-like <tags/> + scope + entity.name.tag + settings + + foreground + #8caaee + fontStyle + + + + + name + Special characters like &amp; + scope + text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.charactger.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation + settings + + foreground + #e78284 + + + + name + HTML/XML tag attribute values + scope + entity.other.attribute-name + settings + + foreground + #e5c890 + + + + name + Components + scope + support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue + settings + + foreground + #f4b8e4 + fontStyle + + + + + name + Annotations + scope + punctuation.definition.annotation, storage.type.annotation + settings + + foreground + #ef9f76 + + + + name + Java enums + scope + constant.other.enum.java + settings + + foreground + #81c8be + + + + name + Java imports + scope + storage.modifier.import.java + settings + + foreground + #c6d0f5 + + + + name + Javadoc + scope + comment.block.javadoc.java keyword.other.documentation.javadoc.java + settings + + fontStyle + + + + + name + Exported Variable + scope + meta.export variable.other.readwrite.js + settings + + foreground + #ea999c + + + + name + JS/TS constants & properties + scope + variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts + settings + + foreground + #c6d0f5 + + + + name + JSDoc; these are mainly params, so styled as such + scope + variable.other.jsdoc, comment.block.documentation variable.other + settings + + foreground + #ea999c + fontStyle + + + + + name + JSDoc keywords + scope + storage.type.class.jsdoc + settings + + fontStyle + + + + + scope + support.type.object.console.js + settings + + foreground + #c6d0f5 + + + + name + Node constants as keywords (module, etc.) + scope + support.constant.node, support.type.object.module.js + settings + + foreground + #ca9ee6 + + + + name + implements as keyword + scope + storage.modifier.implements + settings + + foreground + #ca9ee6 + + + + name + Builtin types + scope + constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts + settings + + foreground + #ca9ee6 + + + + scope + variable.parameter.generic + settings + + foreground + #e5c890 + + + + name + Arrow functions + scope + keyword.declaration.function.arrow.js, storage.type.function.arrow.ts + settings + + foreground + #81c8be + + + + name + Decorator punctuations (decorators inherit from blue functions, instead of styleguide peach) + scope + punctuation.decorator.ts + settings + + foreground + #8caaee + fontStyle + italic + + + + name + Extra JS/TS keywords + scope + keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts + settings + + foreground + #ca9ee6 + + + + name + Julia macros + scope + support.function.macro.julia + settings + + foreground + #81c8be + fontStyle + italic + + + + name + Julia language constants (true, false) + scope + constant.language.julia + settings + + foreground + #ef9f76 + + + + name + Julia other constants (these seem to be arguments inside arrays) + scope + constant.other.symbol.julia + settings + + foreground + #ea999c + + + + name + LaTeX preamble + scope + text.tex keyword.control.preamble + settings + + foreground + #81c8be + + + + name + LaTeX be functions + scope + text.tex support.function.be + settings + + foreground + #99d1db + + + + name + LaTeX math + scope + constant.other.general.math.tex + settings + + foreground + #eebebe + + + + name + Liquid Builtin Objects & User Defined Variables + scope + variable.language.liquid + settings + + foreground + #f4b8e4 + + + + name + Lua docstring keywords + scope + comment.line.double-dash.documentation.lua storage.type.annotation.lua + settings + + foreground + #ca9ee6 + fontStyle + + + + + name + Lua docstring variables + scope + comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua + settings + + foreground + #c6d0f5 + + + + scope + heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, heading.1.quarto punctuation.definition.heading.quarto, heading.1.quarto, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc + settings + + foreground + #e78284 + + + + scope + heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, heading.2.quarto punctuation.definition.heading.quarto, heading.2.quarto, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc + settings + + foreground + #ef9f76 + + + + scope + heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, heading.3.quarto punctuation.definition.heading.quarto, heading.3.quarto, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc + settings + + foreground + #e5c890 + + + + scope + heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, heading.4.quarto punctuation.definition.heading.quarto, heading.4.quarto, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc + settings + + foreground + #a6d189 + + + + scope + heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, heading.5.quarto punctuation.definition.heading.quarto, heading.5.quarto, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc + settings + + foreground + #85c1dc + + + + scope + heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, heading.6.quarto punctuation.definition.heading.quarto, heading.6.quarto, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc + settings + + foreground + #babbf1 + + + + scope + markup.bold + settings + + foreground + #e78284 + fontStyle + bold + + + + scope + markup.italic + settings + + foreground + #e78284 + fontStyle + italic + + + + scope + markup.strikethrough + settings + + foreground + #a5adce + fontStyle + strikethrough + + + + name + Markdown auto links + scope + punctuation.definition.link, markup.underline.link + settings + + foreground + #8caaee + + + + name + Markdown links + scope + text.html.markdown punctuation.definition.link.title, text.html.quarto punctuation.definition.link.title, string.other.link.title.markdown, string.other.link.title.quarto, markup.link, punctuation.definition.constant.markdown, punctuation.definition.constant.quarto, constant.other.reference.link.markdown, constant.other.reference.link.quarto, markup.substitution.attribute-reference + settings + + foreground + #babbf1 + + + + name + Markdown code spans + scope + punctuation.definition.raw.markdown, punctuation.definition.raw.quarto, markup.inline.raw.string.markdown, markup.inline.raw.string.quarto, markup.raw.block.markdown, markup.raw.block.quarto + settings + + foreground + #a6d189 + + + + name + Markdown triple backtick language identifier + scope + fenced_code.block.language + settings + + foreground + #99d1db + + + + name + Markdown triple backticks + scope + markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc + settings + + foreground + #949cbb + + + + name + Markdown quotes + scope + markup.quote, punctuation.definition.quote.begin + settings + + foreground + #f4b8e4 + + + + name + Markdown separators + scope + meta.separator.markdown + settings + + foreground + #81c8be + + + + name + Markdown list bullets + scope + punctuation.definition.list.begin.markdown, punctuation.definition.list.begin.quarto, markup.list.bullet + settings + + foreground + #81c8be + + + + name + Quarto headings + scope + markup.heading.quarto + settings + + fontStyle + bold + + + + name + Nix attribute names + scope + entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix + settings + + foreground + #8caaee + + + + name + Nix parameter names + scope + variable.parameter.name.nix + settings + + foreground + #c6d0f5 + fontStyle + + + + + name + Nix interpolated parameter names + scope + meta.embedded variable.parameter.name.nix + settings + + foreground + #babbf1 + fontStyle + + + + + name + Nix paths + scope + string.unquoted.path.nix + settings + + foreground + #f4b8e4 + fontStyle + + + + + name + PHP Attributes + scope + support.attribute.builtin, meta.attribute.php + settings + + foreground + #e5c890 + + + + name + PHP Parameters (needed for the leading dollar sign) + scope + meta.function.parameters.php punctuation.definition.variable.php + settings + + foreground + #ea999c + + + + name + PHP Constants (null, __FILE__, etc.) + scope + constant.language.php + settings + + foreground + #ca9ee6 + + + + name + PHP functions + scope + text.html.php support.function + settings + + foreground + #99d1db + + + + name + PHPdoc keywords + scope + keyword.other.phpdoc.php + settings + + fontStyle + + + + + name + Python argument functions reset to text, otherwise they inherit blue from function-call + scope + support.variable.magic.python, meta.function-call.arguments.python + settings + + foreground + #c6d0f5 + + + + name + Python double underscore functions + scope + support.function.magic.python + settings + + foreground + #99d1db + fontStyle + italic + + + + name + Python `self` keyword + scope + variable.parameter.function.language.special.self.python, variable.language.special.self.python + settings + + foreground + #e78284 + fontStyle + italic + + + + name + python keyword flow/logical (for ... in) + scope + keyword.control.flow.python, keyword.operator.logical.python + settings + + foreground + #ca9ee6 + + + + name + python storage type + scope + storage.type.function.python + settings + + foreground + #ca9ee6 + + + + name + python function support + scope + support.token.decorator.python, meta.function.decorator.identifier.python + settings + + foreground + #99d1db + + + + name + python function calls + scope + meta.function-call.python + settings + + foreground + #8caaee + + + + name + python function decorators + scope + entity.name.function.decorator.python, punctuation.definition.decorator.python + settings + + foreground + #ef9f76 + fontStyle + italic + + + + name + python placeholder reset to normal string + scope + constant.character.format.placeholder.other.python + settings + + foreground + #f4b8e4 + + + + name + Python exception & builtins such as exit() + scope + support.type.exception.python, support.function.builtin.python + settings + + foreground + #ef9f76 + + + + name + entity.name.type + scope + support.type.python + settings + + foreground + #ca9ee6 + + + + name + python constants (True/False) + scope + constant.language.python + settings + + foreground + #ef9f76 + + + + name + Arguments accessed later in the function body + scope + meta.indexed-name.python, meta.item-access.python + settings + + foreground + #ea999c + fontStyle + italic + + + + name + Python f-strings/binary/unicode storage types + scope + storage.type.string.python + settings + + foreground + #a6d189 + fontStyle + italic + + + + name + Python type hints + scope + meta.function.parameters.python + settings + + fontStyle + + + + + name + Regex string begin/end in JS/TS + scope + string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end + settings + + foreground + #f4b8e4 + + + + name + Regex anchors (^, $) + scope + keyword.control.anchor.regexp + settings + + foreground + #ca9ee6 + + + + name + Regex regular string match + scope + string.regexp.ts + settings + + foreground + #c6d0f5 + + + + name + Regex group parenthesis & backreference (\1, \2, \3, ...) + scope + punctuation.definition.group.regexp, keyword.other.back-reference.regexp + settings + + foreground + #a6d189 + + + + name + Regex character class [] + scope + punctuation.definition.character-class.regexp + settings + + foreground + #e5c890 + + + + name + Regex character classes (\d, \w, \s) + scope + constant.other.character-class.regexp + settings + + foreground + #f4b8e4 + + + + name + Regex range + scope + constant.other.character-class.range.regexp + settings + + foreground + #f2d5cf + + + + name + Regex quantifier + scope + keyword.operator.quantifier.regexp + settings + + foreground + #81c8be + + + + name + Regex constant/numeric + scope + constant.character.numeric.regexp + settings + + foreground + #ef9f76 + + + + name + Regex lookaheads, negative lookaheads, lookbehinds, negative lookbehinds + scope + punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp + settings + + foreground + #8caaee + + + + name + Rust attribute + scope + meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust + settings + + foreground + #e5c890 + fontStyle + italic + + + + name + Rust attribute strings + scope + meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust + settings + + fontStyle + + + + + name + Rust keyword + scope + entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust + settings + + foreground + #ca9ee6 + fontStyle + + + + + name + Rust u/i32, u/i64, etc. + scope + entity.name.type.numeric.rust + settings + + foreground + #ca9ee6 + fontStyle + + + + + name + Rust generic + scope + meta.generic.rust + settings + + foreground + #ef9f76 + + + + name + Rust impl + scope + entity.name.impl.rust + settings + + foreground + #e5c890 + fontStyle + italic + + + + name + Rust module + scope + entity.name.module.rust + settings + + foreground + #ef9f76 + + + + name + Rust trait + scope + entity.name.trait.rust + settings + + foreground + #e5c890 + fontStyle + italic + + + + name + Rust struct + scope + storage.type.source.rust + settings + + foreground + #e5c890 + + + + name + Rust union + scope + entity.name.union.rust + settings + + foreground + #e5c890 + + + + name + Rust enum member + scope + meta.enum.rust storage.type.source.rust + settings + + foreground + #81c8be + + + + name + Rust macro + scope + support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust + settings + + foreground + #8caaee + fontStyle + italic + + + + name + Rust lifetime + scope + storage.modifier.lifetime.rust, entity.name.type.lifetime + settings + + foreground + #8caaee + fontStyle + italic + + + + name + Rust string formatting + scope + string.quoted.double.rust constant.other.placeholder.rust + settings + + foreground + #f4b8e4 + + + + name + Rust return type generic + scope + meta.function.return-type.rust meta.generic.rust storage.type.rust + settings + + foreground + #c6d0f5 + + + + name + Rust functions + scope + meta.function.call.rust + settings + + foreground + #8caaee + + + + name + Rust angle brackets + scope + punctuation.brackets.angle.rust + settings + + foreground + #99d1db + + + + name + Rust constants + scope + constant.other.caps.rust + settings + + foreground + #ef9f76 + + + + name + Rust function parameters + scope + meta.function.definition.rust variable.other.rust + settings + + foreground + #ea999c + + + + name + Rust closure variables + scope + meta.function.call.rust variable.other.rust + settings + + foreground + #c6d0f5 + + + + name + Rust self + scope + variable.language.self.rust + settings + + foreground + #e78284 + + + + name + Rust metavariable names + scope + variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust + settings + + foreground + #f4b8e4 + + + + name + Shell shebang + scope + comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell + settings + + foreground + #f4b8e4 + fontStyle + italic + + + + name + Shell shebang command + scope + comment.line.shebang constant.language + settings + + foreground + #81c8be + fontStyle + italic + + + + name + Shell interpolated command + scope + meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation + settings + + foreground + #e78284 + + + + name + Shell interpolated command variable + scope + meta.string meta.interpolation.parameter.shell variable.other.readwrite + settings + + foreground + #ef9f76 + fontStyle + italic + + + + scope + source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell + settings + + foreground + #81c8be + + + + name + Shell EOF + scope + entity.name.tag.heredoc.shell + settings + + foreground + #ca9ee6 + + + + name + Shell quoted variable + scope + string.quoted.double.shell variable.other.normal.shell + settings + + foreground + #c6d0f5 + + + + scope + markup.heading.typst + settings + + foreground + #e78284 + + + + name + JSON Keys + scope + source.json meta.mapping.key string + settings + + foreground + #8caaee + + + + name + JSON key surrounding quotes + scope + source.json meta.mapping.key punctuation.definition.string.begin, source.json meta.mapping.key punctuation.definition.string.end + settings + + foreground + #949cbb + + + + scope + markup.heading.synopsis.man, markup.heading.title.man, markup.heading.other.man, markup.heading.env.man + settings + + foreground + #ca9ee6 + + + + scope + markup.heading.commands.man + settings + + foreground + #8caaee + + + + scope + markup.heading.env.man + settings + + foreground + #f4b8e4 + + + + name + Man page options + scope + entity.name + settings + + foreground + #81c8be + + + + scope + markup.heading.1.markdown + settings + + foreground + #e78284 + + + + scope + markup.heading.2.markdown + settings + + foreground + #ef9f76 + + + + scope + markup.heading.markdown + settings + + foreground + #e5c890 + + + + + \ No newline at end of file diff --git a/config/yazi/flavors/flexoki-light.yazi/LICENSE b/config/yazi/flavors/flexoki-light.yazi/LICENSE new file mode 100644 index 0000000..69f9d59 --- /dev/null +++ b/config/yazi/flavors/flexoki-light.yazi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Steph Ango + +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/config/yazi/flavors/flexoki-light.yazi/LICENSE-tmtheme b/config/yazi/flavors/flexoki-light.yazi/LICENSE-tmtheme new file mode 100644 index 0000000..69f9d59 --- /dev/null +++ b/config/yazi/flavors/flexoki-light.yazi/LICENSE-tmtheme @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Steph Ango + +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/config/yazi/flavors/flexoki-light.yazi/README.md b/config/yazi/flavors/flexoki-light.yazi/README.md new file mode 100644 index 0000000..43cc48b --- /dev/null +++ b/config/yazi/flavors/flexoki-light.yazi/README.md @@ -0,0 +1,36 @@ +
+ Yazi logo +
+ +
+ +## šŸ‘€ Preview + + + +## šŸŽØ Installation + +```sh +ya pkg add gosxrgxx/flexoki-light +``` + +## āš™ļø Usage + +To set it as your light flavor, change the content of your `theme.toml` to: + +```toml +[flavor] +light = "flexoki-light" +``` + +Make sure your `theme.toml` doesn't contain anything other than `[flavor]`, unless you want to override certain styles of this flavor. + +See the [Yazi flavor documentation](https://yazi-rs.github.io/docs/flavors/overview) for more details. + +## šŸ“œ License + +The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed. + +Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details. diff --git a/config/yazi/flavors/flexoki-light.yazi/flavor.toml b/config/yazi/flavors/flexoki-light.yazi/flavor.toml new file mode 100644 index 0000000..8cf951d --- /dev/null +++ b/config/yazi/flavors/flexoki-light.yazi/flavor.toml @@ -0,0 +1,201 @@ +# Š”olor palette: https://stephango.com/flexoki +# --- +# paper "#FFFCF0" bg +# base-50 "#F2F0E5" bg-2 +# base-100 "#E6E4D9" ui +# base-150 "#DAD8CE" ui-2 +# base-200 "#CECDC3" ui-3 +# base-300 "#B7B5AC" tx-3 +# base-600 "#6F6E69" tx-2 +# black "#100F0F" tx +# red-600 "#AF3029" re +# orange-600 "#BC5215" or +# yellow-600 "#AD8301" ye +# yellow-400 "#D0A215" ye-2 +# green-600 "#66800B" gr +# cyan-600 "#24837B" cy +# cyan-400 "#3AA99F" cy-2 +# cyan-100 "#BFE8D9" cy-100 +# cyan-300 "#5ABDAC" cy-300 +# blue-600 "#205EA6" bl +# purple-600 "#5E409D" pu +# magenta-600 "#A02F6F" ma + +[app] +overall = { bg = "#FFFCF0" } # bg + +[mgr] +cwd = { fg = "#100F0F", bold = true } # tx + +# Find +find_keyword = { fg = "#24837B", reversed = true } # cy +find_position = { fg = "#24837B", bold = true, italic = true } # cy + +# Marker +marker_copied = { fg = "#66800B", bg = "#66800B" } # gr, gr +marker_cut = { fg = "#AF3029", bg = "#AF3029" } # re, re +marker_marked = { fg = "#5ABDAC", bg = "#5ABDAC" } # cy-300, cy-300 +marker_selected = { fg = "#24837B", bg = "#24837B" } # cy, cy + +# Count +count_copied = { fg = "#66800B", bold = true, reversed = true } # gr +count_cut = { fg = "#AF3029", bold = true, reversed = true } # re +count_selected = { fg = "#24837B", bold = true, reversed = true } # cy + +# Border +border_symbol = "│" +border_style = { fg = "#E6E4D9" } # ui + +[indicator] +parent = { underline = true } +current = { fg = "#100F0F", bg = "#E6E4D9" } # tx, ui +preview = { underline = true } +padding = { open = "ā–ˆ", close = "ā–ˆ" } + +[tabs] +active = { fg = "#100F0F", bg = "#CECDC3", bold = true } # tx, ui-3 +inactive = { fg = "#6F6E69", bg = "#E6E4D9" } # tx-2, ui +sep_inner = { open = "", close = "" } +sep_outer = { open = "", close = "" } + +[mode] +# Normal mode +normal_main = { fg = "#100F0F", bg = "#CECDC3", bold = true } # tx, ui-3 +normal_alt = { fg = "#6F6E69", bg = "#E6E4D9" } # tx-2, ui + +# Select mode +select_main = { fg = "#FFFCF0", bg = "#24837B", bold = true } # bg, cy +select_alt = { fg = "#24837B", bg = "#BFE8D9" } # cy, cy-100 + +# Unset mode +unset_main = { fg = "#FFFCF0", bg = "#24837B", bold = true } # bg, cy +unset_alt = { fg = "#24837B", bg = "#BFE8D9" } # cy, cy-100 + +[status] +overall = { fg = "#100F0F" } # tx + +# Permissions +perm_type = { fg = "#205EA6" } # bl +perm_read = { fg = "#AD8301" } # ye +perm_write = { fg = "#AF3029" } # re +perm_exec = { fg = "#66800B" } # gr +perm_sep = { fg = "#6F6E69" } # tx-2 + +# Progress +progress_label = { fg = "#FFFCF0" } # bg +progress_normal = { fg = "#24837B", bg = "#5ABDAC" } # cy, cy-300 +progress_error = { bg = "#AF3029" } # re + +[which] +cols = 3 +mask = { bg = "#F2F0E5" } # bg-2 +cand = { fg = "#24837B", bold = true } # cy +rest = { fg = "#24837B", italic = true } # cy +desc = { fg = "#B7B5AC" } # tx-3 +separator = " " +separator_style = { } + +[confirm] +border = { fg = "#CECDC3" } # ui-3 +title = { fg = "#B7B5AC", bold = true } # tx-3 +body = { fg = "#100F0F", bold = true } # tx +list = { fg = "#100F0F" } # tx +btn_yes = { fg = "#100F0F", bg = "#CECDC3", bold = true } # tx, ui-3 +btn_no = { fg = "#6F6E69", bg = "#E6E4D9" } # tx-2, ui + +[spot] +border = { fg = "#CECDC3" } # ui-3 +title = { fg = "#B7B5AC", bold = true } # tx-3 +tbl_col = { fg = "#6F6E69" } # tx-2 +tbl_cell = { fg = "#100F0F", bg = "#E6E4D9" } # tx, ui + +[notify] +# Notification title +title_info = { fg = "#205EA6" } # bl +title_warn = { fg = "#BC5215" } # or +title_error = { fg = "#AF3029" } # re + +[pick] +border = { fg = "#CECDC3", bold = true } # ui-3 +active = { fg = "#100F0F" } # tx +inactive = { fg = "#6F6E69" } # tx-2 + +[input] +border = { fg = "#CECDC3" } # ui-3 +title = { fg = "#B7B5AC", bold = true } # tx-3 +value = { fg = "#100F0F" } # tx +selected = { bg = "#F2F0E5" } # bg-2 + +[cmp] +border = { fg = "#CECDC3", bold = true } # ui-3 +active = { fg = "#100F0F", bg = "#E6E4D9" } # tx, ui +inactive = { fg = "#6F6E69" } # tx-2 + +[tasks] +border = { fg = "#CECDC3" } # ui-3 +title = { fg = "#B7B5AC", bold = true } # tx-3 +hovered = { fg = "#100F0F", bg = "#E6E4D9" } # tx, ui + +[help] +on = { fg = "#205EA6" } # bl +run = { fg = "#24837B" } # cy +desc = { fg = "#B7B5AC", italic = true } # tx-3 +hovered = { bg = "#E6E4D9" } # ui +footer = { fg = "#FFFCF0", bg = "#24837B", bold = true } # bg, cy + +[filetype] +rules = [ + # Empty files + { mime = "inode/empty", fg = "#B7B5AC" }, # tx-3 + + # Special files + { url = "*", is = "orphan", fg = "#B7B5AC" }, # tx-3 + { url = "*/", is = "orphan", fg = "#B7B5AC" }, # tx-3 + { url = "*", is = "link", fg = "#24837B" }, # cy + { url = "*/", is = "link", fg = "#24837B" }, # cy + { url = "*", is = "block", fg = "#100F0F" }, # tx + { url = "*", is = "char", fg = "#100F0F" }, # tx + { url = "*", is = "fifo", fg = "#A02F6F" }, # ma + { url = "*", is = "sock", fg = "#A02F6F" }, # ma + { url = "*", is = "sticky", fg = "#100F0F" }, # tx + { url = "*", is = "dummy", fg = "#B7B5AC" }, # tx-3 + + # Fallback + { url = "*/", fg = "#100F0F" }, # tx + { url = "*", is = "exec", fg = "#66800B" }, # gr + { url = "*", fg = "#6F6E69" } # tx-2 +] + +[icon] +dirs = [ + { name = ".config", text = "ī—¼", fg = "#24837B" }, # cy + { name = ".git", text = "ī—»", fg = "#24837B" }, # cy + { name = ".github", text = "ī—½", fg = "#24837B" }, # cy + { name = ".npm", text = "ī—ŗ", fg = "#24837B" }, # cy + { name = "Desktop", text = "ļ„ˆ", fg = "#24837B" }, # cy + { name = "Development", text = "", fg = "#24837B" }, # cy + { name = "Documents", text = "", fg = "#24837B" }, # cy + { name = "Downloads", text = "ļ’˜", fg = "#24837B" }, # cy + { name = "Library", text = "", fg = "#24837B" }, # cy + { name = "Movies", text = "", fg = "#24837B" }, # cy + { name = "Music", text = "", fg = "#24837B" }, # cy + { name = "Pictures", text = "", fg = "#24837B" }, # cy + { name = "Public", text = "", fg = "#24837B" }, # cy + { name = "Videos", text = "", fg = "#24837B" } # cy +] +conds = [ + # Special files + { if = "orphan", text = "ļ„§", fg = "#B7B5AC" }, # tx-3 + { if = "link", text = "", fg = "#24837B" }, # cy + { if = "block", text = "ļƒ‰", fg = "#100F0F" }, # tx + { if = "char", text = "", fg = "#100F0F" }, # tx + { if = "fifo", text = "", fg = "#A02F6F" }, # ma + { if = "sock", text = "", fg = "#A02F6F" }, # ma + { if = "sticky", text = "ļ‚", fg = "#100F0F" }, # tx + { if = "dummy", text = "", fg = "#B7B5AC" }, # tx-3 + + # Fallback + { if = "dir", text = "ī—æ", fg = "#24837B" }, # cy + { if = "exec", text = "ļ’‰", fg = "#66800B" }, # gr + { if = "!dir", text = "ļ…›", fg = "#6F6E69" } # tx-2 +] \ No newline at end of file diff --git a/config/yazi/flavors/flexoki-light.yazi/preview.png b/config/yazi/flavors/flexoki-light.yazi/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..4a227ea3d903bdee57f2535c1111046a6f419146 GIT binary patch literal 205290 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
<4wD=D?BvVE7Zw}Fh{q0&Hz~Xa$5t8JGVV= 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 literal 0 HcmV?d00001 diff --git a/config/yazi/flavors/flexoki-light.yazi/tmtheme.xml b/config/yazi/flavors/flexoki-light.yazi/tmtheme.xml new file mode 100644 index 0000000..89df0ee --- /dev/null +++ b/config/yazi/flavors/flexoki-light.yazi/tmtheme.xml @@ -0,0 +1,1149 @@ + + + + + + name + Flexoki Light + originalAuthor + kepano + colorSpaceName + sRGB + settings + + + settings + + background + #FFFCF0 + foreground + #100F0F + lineHighlight + #F2F0E5 + gutter + #FFFCF0 + gutterForeground + #B7B5AC + gutterForegroundHighlight + #6F6E69 + minimapBorder + #DAD8CE + caret + #100F0F + blockCaret + #100F0F + invisibles + #B7B5AC + misspelling + #AF3029 + highlight + #B7B5AC + findHighlight + #F2F0E5 + findHighlightForeground + #100F0F + accent + #205EA6 + foldMarker + #AD8301 + guide + #E6E4D9 + activeGuide + #B7B5AC + stackGuide + #E6E4D9 + selection + #F2F0E5 + selectionBorder + #DAD8CE + inactiveSelection + #FFFCF0 + inactiveSelectionBorder + #DAD8CE + bracketsOptions + underline + bracketsForeground + #66800B + bracketContentsOptions + stippled_underline + bracketContentsForeground + #66800B + tagsOptions + stippled_underline + tagsForeground + #66800B + shadow + #FFFCF0 + shadowWidth + 4 + lineDiffAdded + #66800B + lineDiffModified + #AD8301 + + + + name + Comment + scope + comment, meta.documentation + settings + + foreground + #B7B5AC + + + + name + String + scope + string + settings + + foreground + #24837B + + + + name + Regexp + scope + string.regexp + settings + + foreground + #24837B + + + + name + Escape \ char + scope + constant.character.escape + settings + + foreground + #AF3029 + + + + name + Number + scope + constant.numeric + settings + + foreground + #5E409D + + + + name + Number Units + scope + constant.numeric.suffix + settings + + foreground + #66800B + + + + name + Variable + scope + variable + settings + + foreground + #205EA6 + + + + name + Variable Function + scope + variable.function + settings + + foreground + #BC5215 + + + + name + Variable Language + scope + variable.language + settings + + foreground + #A02F6F + + + + name + Keyword + scope + keyword + settings + + foreground + #66800B + + + + name + Import + scope + meta.import keyword, keyword.control.import, keyword.control.import.from, keyword.other.import, keyword.control.at-rule.include, keyword.control.at-rule.import + settings + + foreground + #AF3029 + + + + name + Assignment, Comparision Operators + scope + keyword.operator.comparison, keyword.operator.assignment + settings + + foreground + #6F6E69 + + + + name + Arithmetical Operators + scope + keyword.operator.arithmetic + settings + + foreground + #AF3029 + + + + name + Storage + scope + storage + settings + + foreground + #66800B + + + + name + Storage modifier + scope + storage.modifier + settings + + foreground + #100F0F + + + + name + Class + scope + keyword.control.class, entity.name, entity.name.class, entity.name.type.class + settings + + foreground + #BC5215 + + + + name + Inherited Class + scope + entity.other.inherited-class + settings + + foreground + #205EA6 + + + + name + Attribute + scope + entity.other.attribute-name + settings + + foreground + #BC5215 + + + + name + Library class + scope + support, support.type, support.class + settings + + foreground + #66800B + + + + name + Function name + scope + entity.name.function + settings + + foreground + #BC5215 + + + + name + Variable start + scope + punctuation.definition.variable + settings + + foreground + #66800B + + + + name + Built-in constant + scope + constant, constant.language, meta.preprocessor + settings + + foreground + #AD8301 + + + + scope + entity.name.section + settings + + foreground + #BC5215 + + + + name + Support.construct + scope + support.function.construct, keyword.other.new + settings + + foreground + #AF3029 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #BC5215 + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #205EA6 + + + + name + Tag start/end + scope + punctuation.definition.tag.html, punctuation.definition.tag.begin, punctuation.definition.tag.end + settings + + foreground + #6F6E69 + + + + name + Library function + scope + support.function + settings + + foreground + #66800B + + + + name + Continuation + scope + punctuation.separator.continuation + settings + + foreground + #AF3029 + + + + name + Storage Type + scope + storage.type + settings + + foreground + #205EA6 + + + + name + Exception + scope + support.type.exception + settings + + foreground + #BC5215 + + + + name + Special + scope + keyword.other.special-method + settings + + foreground + #BC5215 + + + + name + Invalid + scope + invalid + settings + + background + #AF3029 + foreground + #AF3029 + + + + name + Quoted String + scope + string.quoted.double, string.quoted.single + settings + + foreground + #24837B + + + + name + Quotes + scope + punctuation.definition.string + settings + + foreground + #6F6E69 + + + + name + [] + scope + meta.brace.square, punctuation.section.brackets + settings + + foreground + #205EA6 + + + + name + (),{} + scope + meta.block, meta.brace.round, meta.brace.curly, punctuation.section, punctuation.section.block, punctuation.definition.parameters, punctuation.section.group + settings + + foreground + #6F6E69 + + + + name + , + scope + punctuation.separator, punctuation.terminator, punctuation.accessor + settings + + foreground + #6F6E69 + + + + name + CSS: Standard color value + scope + support.constant.color, invalid.deprecated.color.w3c-non-standard-color-name.scss + settings + + foreground + #AD8301 + + + + name + CSS: Selector > [] and non-spec tags + scope + meta.selector.css + settings + + foreground + #6F6E69 + + + + name + CSS: Tag + scope + entity.name.tag.css, entity.name.tag.scss, source.less keyword.control.html.elements, source.sass keyword.control.untitled + settings + + foreground + #BC5215 + + + + name + CSS .class + scope + entity.other.attribute-name.class + settings + + foreground + #BC5215 + + + + name + CSS: #id + scope + entity.other.attribute-name.id + settings + + foreground + #BC5215 + + + + name + CSS :pseudo + scope + entity.other.attribute-name.pseudo-element, entity.other.attribute-name.tag.pseudo-element, entity.other.attribute-name.pseudo-class, entity.other.attribute-name.tag.pseudo-class + settings + + foreground + #205EA6 + + + + name + CSS: @-rule + scope + keyword.control.at-rule + settings + + foreground + #BC5215 + + + + name + Haskell: Variable + scope + source.haskell variable + settings + + foreground + #BC5215 + + + + name + HTML: = + scope + text.html.basic meta.tag.other.html, text.html.basic meta.tag.any.html, text.html.basic meta.tag.block.any, text.html.basic meta.tag.inline.any, text.html.basic meta.tag.structure.any.html, text.html.basic source.js.embedded.html, punctuation.separator.key-value.html + settings + + foreground + #6F6E69 + + + + name + HTML: something= + scope + text.html.basic entity.other.attribute-name.html, meta.tag.xml entity.other.attribute-name + settings + + foreground + #BC5215 + + + + name + Ruby: Special Method + scope + keyword.other.special-method.ruby + settings + + foreground + #66800B + + + + name + Ruby: Constant Other + scope + variable.other.constant.ruby + settings + + foreground + #AD8301 + + + + name + Ruby: :symbol + scope + constant.other.symbol.ruby + settings + + foreground + #24837B + + + + name + Ruby: Special Method + scope + keyword.other.special-method.ruby + settings + + foreground + #BC5215 + + + + name + PHP: Array() + scope + meta.array support.function.construct.php + settings + + foreground + #AD8301 + + + + name + C: Preprocessor + scope + entity.name.function.preprocessor.c, meta.preprocessor.c.include, meta.preprocessor.macro.c + settings + + foreground + #BC5215 + + + + name + C: include + scope + meta.preprocessor.c.include string.quoted.other.lt-gt.include.c, meta.preprocessor.c.include punctuation.definition.string.begin.c, meta.preprocessor.c.include punctuation.definition.string.end.c + settings + + foreground + #24837B + + + + name + Other: Removal + scope + other.package.exclude, other.remove + settings + + foreground + #AF3029 + + + + name + Other: Add + scope + other.add + settings + + foreground + #24837B + + + + name + Tex: {} + scope + punctuation.section.group.tex , punctuation.definition.arguments.begin.latex, punctuation.definition.arguments.end.latex, punctuation.definition.arguments.latex + settings + + foreground + #AF3029 + + + + name + Tex: {text} + scope + meta.group.braces.tex + settings + + foreground + #AD8301 + + + + name + Tex: Other Math + scope + string.other.math.tex + settings + + foreground + #AD8301 + + + + name + Tex: {var} + scope + variable.parameter.function.latex + settings + + foreground + #BC5215 + + + + name + Tex: Math \\ + scope + punctuation.definition.constant.math.tex + settings + + foreground + #AF3029 + + + + name + Tex: Constant Math + scope + text.tex.latex constant.other.math.tex, constant.other.general.math.tex, constant.other.general.math.tex, constant.character.math.tex + settings + + foreground + #24837B + + + + name + Tex: Other Math String + scope + string.other.math.tex + settings + + foreground + #AD8301 + + + + name + Tex: $ + scope + punctuation.definition.string.begin.tex, punctuation.definition.string.end.tex + settings + + foreground + #AF3029 + + + + name + Tex: \label + scope + keyword.control.label.latex, text.tex.latex constant.other.general.math.tex + settings + + foreground + #24837B + + + + name + Tex: \label { } + scope + variable.parameter.definition.label.latex + settings + + foreground + #AF3029 + + + + name + Tex: Function + scope + support.function.be.latex + settings + + foreground + #66800B + + + + name + Tex: Support Function Section + scope + support.function.section.latex + settings + + foreground + #BC5215 + + + + name + Tex: Support Function + scope + support.function.general.tex + settings + + foreground + #24837B + + + + name + Tex: Reference Label + scope + keyword.control.ref.latex + settings + + foreground + #24837B + + + + name + Python: storage + scope + storage.type.class.python, storage.type.function.python, storage.modifier.global.python + settings + + foreground + #66800B + + + + name + Python: Support.exception + scope + support.type.exception.python + settings + + foreground + #AD8301 + + + + name + Shell: meta scope in loop + scope + meta.scope.for-in-loop.shell, variable.other.loop.shell + settings + + foreground + #100F0F + + + + name + Shell: Meta Block + scope + meta.scope.case-block.shell, meta.scope.case-body.shell + settings + + foreground + #100F0F + + + + name + Shell: [] + scope + punctuation.definition.logical-expression.shell + settings + + foreground + #AF3029 + + + + name + Storage + scope + storage.modifier.c++ + settings + + foreground + #66800B + + + + name + Perl: functions + scope + support.function.perl + settings + + foreground + #205EA6 + + + + name + diff: header + scope + meta.diff, meta.diff.header + settings + + foreground + #B7B5AC + + + + name + diff: range + scope + meta.diff.range + settings + + foreground + #205EA6 + + + + name + diff: deleted + scope + markup.deleted + settings + + foreground + #AF3029 + + + + name + diff: changed + scope + markup.changed + settings + + foreground + #AD8301 + + + + name + diff: inserted + scope + markup.inserted + settings + + foreground + #66800B + + + + name + Warning + scope + markup.warning + settings + + foreground + #AD8301 + + + + name + Error + scope + markup.error + settings + + foreground + #AF3029 + + + + scope + markup.heading, punctuation.definition.heading.markdown + settings + + foreground + #B7B5AC + fontStyle + bold + + + + name + Markdown quote + scope + markup.quote + settings + + foreground + #66800B + + + + name + Markdown em + scope + markup.italic + settings + + fontStyle + italic + + + + scope + markup.bold + settings + + fontStyle + bold + + + + scope + markup.underline.link.markdown, meta.link.reference constant.other.reference.link.markdown + settings + + foreground + #24837B + + + + scope + constant.other.reference.link.markdown + settings + + foreground + #5E409D + + + + scope + meta.paragraph.markdown meta.dummy.line-break + settings + + background + #B7B5AC + + + + name + SublimeBracketHighlighter + scope + brackethighlighter.all + settings + + foreground + #B7B5AC + + + + name + Find In Files: File Name + scope + entity.name.filename.find-in-files + settings + + foreground + #24837B + + + + name + Find In Files: Line numbers + scope + constant.numeric.line-number.find-in-files + settings + + foreground + #B7B5AC + + + + name + JavaScript Variables + scope + variable.other.readwrite.js, variable.other.object.js, variable.other.constant.js + settings + + foreground + #100F0F + + + + name + Go Variables + scope + variable.other.go, variable.other.member.go, variable.other.member.declaration.go, variable.other.constant.declaration.go + settings + + foreground + #100F0F + + + + + diff --git a/config/yazi/package.toml b/config/yazi/package.toml new file mode 100644 index 0000000..9628ad7 --- /dev/null +++ b/config/yazi/package.toml @@ -0,0 +1,12 @@ +[plugin] +deps = [] + +[[flavor.deps]] +use = "gosxrgxx/flexoki-light" +rev = "1b1e677" +hash = "a80630a255909a511aba8a98d115bc15" + +[[flavor.deps]] +use = "yazi-rs/flavors:catppuccin-frappe" +rev = "0f9204b" +hash = "1844f850b0c5d1af511c84399c95e3d7" diff --git a/config/yazi/theme.toml b/config/yazi/theme.toml new file mode 100644 index 0000000..bb971ad --- /dev/null +++ b/config/yazi/theme.toml @@ -0,0 +1,4 @@ +[flavor] +light = "catppuccin-frappe" +dark = "catppuccin-frappe" + diff --git a/config/yazi/yazi.toml b/config/yazi/yazi.toml new file mode 100644 index 0000000..ba050db --- /dev/null +++ b/config/yazi/yazi.toml @@ -0,0 +1,14 @@ +# yazi.toml +[mgr] +show_hidden = true + +[opener] +edit = [ + { run = "$EDITOR %s", block = true, for = "unix" } +] + +[open] +prepend_rules = [ + { url = "*.md", use = "edit" }, +] + diff --git a/tmux.conf b/tmux.conf index 62884f4..b616b16 100644 --- a/tmux.conf +++ b/tmux.conf @@ -1,7 +1,7 @@ # statusbar set -g status-position top -set -g status-style bg=green -set -g window-active-style bg=blue +set -g status-style bg="#248378" +set -g window-active-style bg="#222435" set -g pane-active-border fg=yellow # battery

+ Flexoki Light Flavor for Yazi +