From 5cd3312b5ee32726db34f5673f0d4f557ec91cca Mon Sep 17 00:00:00 2001 From: Sam Gammon Date: Wed, 15 May 2024 22:24:30 -0700 Subject: [PATCH] fix(codespace): issues with codespace build - fix: don't install docker-from-docker feature, it fails - fix: syntax highlighting - fix: readme updates for codespace guide Fixes and closes elide-dev/elide#911 Signed-off-by: Sam Gammon --- .devcontainer/Dockerfile | 5 +- .devcontainer/README.md | 36 ++++++++- .devcontainer/devcontainer.json | 3 +- .devcontainer/elide-home/jnanorc | 2 + .devcontainer/elide-home/nanorc/args.nanorc | 13 ++++ .../elide-home/nanorc/command.nanorc | 7 ++ .../elide-home/nanorc/dark.nanorctheme | 73 +++++++++++++++++++ .devcontainer/elide-home/nanorc/java.nanorc | 24 ++++++ .../elide-home/nanorc/javascript.nanorc | 42 +++++++++++ .devcontainer/elide-home/nanorc/json.nanorc | 8 ++ .devcontainer/elide-home/nanorc/kotlin.nanorc | 26 +++++++ .../elide-home/nanorc/light.nanorctheme | 51 +++++++++++++ .../elide-home/nanorc/nanorctheme.template | 60 +++++++++++++++ .devcontainer/elide-home/nanorc/python.nanorc | 56 ++++++++++++++ .devcontainer/elide-home/nanorc/ruby.nanorc | 37 ++++++++++ .devcontainer/elide-home/nanorc/ts.nanorc | 47 ++++++++++++ 16 files changed, 485 insertions(+), 5 deletions(-) create mode 100644 .devcontainer/elide-home/jnanorc create mode 100644 .devcontainer/elide-home/nanorc/args.nanorc create mode 100644 .devcontainer/elide-home/nanorc/command.nanorc create mode 100644 .devcontainer/elide-home/nanorc/dark.nanorctheme create mode 100644 .devcontainer/elide-home/nanorc/java.nanorc create mode 100644 .devcontainer/elide-home/nanorc/javascript.nanorc create mode 100644 .devcontainer/elide-home/nanorc/json.nanorc create mode 100644 .devcontainer/elide-home/nanorc/kotlin.nanorc create mode 100644 .devcontainer/elide-home/nanorc/light.nanorctheme create mode 100644 .devcontainer/elide-home/nanorc/nanorctheme.template create mode 100644 .devcontainer/elide-home/nanorc/python.nanorc create mode 100644 .devcontainer/elide-home/nanorc/ruby.nanorc create mode 100644 .devcontainer/elide-home/nanorc/ts.nanorc diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 89212530f..8a4a43064 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -25,7 +25,10 @@ RUN apt-get update \ && elide --help \ && elide selftest \ && elide info \ + && mkdir -p $HOME/.elide \ && echo "Elide codespace container image ready." -ENTRYPOINT ["/usr/local/share/docker-init.sh"] +COPY ./elide-home/* /home/vscode/.elide/ +RUN chown -R $(whoami) $HOME/.elide + CMD ["sleep", "infinity"] diff --git a/.devcontainer/README.md b/.devcontainer/README.md index f7c0a18b2..142a23f58 100644 --- a/.devcontainer/README.md +++ b/.devcontainer/README.md @@ -31,7 +31,11 @@ elide selftest **To run a JavaScript terminal:** ``` -elide shell +elide +``` +Or: +``` +elide repl ``` **Encode some JSON:** @@ -69,7 +73,7 @@ elide serve tools/scripts/server.js **To run a Python terminal:** ``` -elide shell --python +elide repl --python ``` **To see `.env` environment:** @@ -77,3 +81,31 @@ elide shell --python ```python import os; print(os.environ) ``` + +**To see all environment, including host env:** + +``` +elide repl --python --host:allow-env +``` + +```python +import os; print(os.environ) +``` + +### Ruby + +**To run a Ruby terminal:** + +``` +elide repl --ruby +``` + +**Say hello:** + +```ruby +puts "Hello, Elide!" +``` + +## Further Reading + +Check out Elide's [docs](https://docs.elide.dev) for more exercises. diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 6c433aa1d..66b3f70bb 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,8 +7,7 @@ "postAttachCommand": "echo 'ELIDE_CODESPACE=true' > .env && touch package.json && code .devcontainer/README.md && clear && elide --help", "overrideCommand": false, "features": { - "ghcr.io/devcontainers/features/git:1": {}, - "ghcr.io/devcontainers/features/docker-from-docker:1": {} + "ghcr.io/devcontainers/features/git:1": {} }, "customizations": { "codespaces": { diff --git a/.devcontainer/elide-home/jnanorc b/.devcontainer/elide-home/jnanorc new file mode 100644 index 000000000..c3ba68107 --- /dev/null +++ b/.devcontainer/elide-home/jnanorc @@ -0,0 +1,2 @@ +theme /Users/sam/.elide/nanorc/dark.nanorctheme +include /Users/sam/.elide/nanorc/*.nanorc diff --git a/.devcontainer/elide-home/nanorc/args.nanorc b/.devcontainer/elide-home/nanorc/args.nanorc new file mode 100644 index 000000000..1e49d7e0b --- /dev/null +++ b/.devcontainer/elide-home/nanorc/args.nanorc @@ -0,0 +1,13 @@ +syntax "ARGS" + +NUMBER: "\<[-]?[0-9]*([Ee][+-]?[0-9]+)?\>" "\<[-]?[0](\.[0-9]+)?\>" +STRING: "[a-zA-Z]+[a-zA-Z0-9]*" +COMMAND: "\<(console|grab|inspect|classloader)\>" +NULL: "\" +BOOLEAN: "\<(true|false)\>" +VARIABLE: "(\[|,)\s*[a-zA-Z0-9]*\s*:" +OPTION: "(^|\s+)[-]{1,2}[a-zA-Z0-9\?]+(\s+|$|=)" +PLAIN: "(:|\[|,|\]|=)" +$BLOCK_COMMENT: "/*, */" +$LINE_COMMENT: "//" +$BALANCED_DELIMITERS "", '" diff --git a/.devcontainer/elide-home/nanorc/command.nanorc b/.devcontainer/elide-home/nanorc/command.nanorc new file mode 100644 index 000000000..616d94042 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/command.nanorc @@ -0,0 +1,7 @@ +syntax "COMMAND" + +COMMAND: "[a-zA-Z]+[a-zA-Z0-9]*" +VARIABLE: ".*=" +PLAIN: "(\"|'|\.|=|:|\[|,|\])" +COMMENT: "(^|\\s+)#.*$" +$BLOCK_COMMENT: "/*, */" diff --git a/.devcontainer/elide-home/nanorc/dark.nanorctheme b/.devcontainer/elide-home/nanorc/dark.nanorctheme new file mode 100644 index 000000000..657abbaff --- /dev/null +++ b/.devcontainer/elide-home/nanorc/dark.nanorctheme @@ -0,0 +1,73 @@ +# +# This file describes a default scheme for nanorc syntax highlighting for terminals with dark background +# +# Lines that start with a # character are comments. +# Comments are ignored. Empty lines are ignored too. Leading/trailing white +# space characters are removed before theme file is processed. +# +# Each line of the theme file describes a token type and how this token type +# should be colored (highlighted). The first word on each line is the name +# of the token type. After the name of the token type at least one white space +# character must follow, and then a text and background color +# for the highlighting must be specified, separated by a comma. No spaces +# are allowed inside color definition (that is, color definition is considered +# a single word, despite a possible comma). +# +# Background color can be omitted (in which case default background color +# of the terminal will be used). If you are omitting the background color, +# a comma may be omitted also. Likewise, a text color can be omitted, +# but comma must be present in this case. +# +# Author: Yuri Sakhno +# ysakhno at gmail dot com +# +# https://github.com/YSakhno/nanorc/ +# + +PLAIN white +FUNCTION brightgreen +STRING brightcyan +COMMENT cyan +DOC_COMMENT brightcyan +TYPE brightblue +BOOLEAN brightwhite +NULL cyan +NUMBER blue +VARIABLE brightyellow +PACKAGE green,faint +CLASS green +CONSTANT yellow +OPERATOR yellow +COMMAND brightgreen +OPTION yellow +KEYWORD brightwhite +JUMP brightcyan +SECTION brightgreen +ATTRIBUTE green +PATH brightblue +EXECUTABLE green +LINK cyan +TITLE brightblue +ESCAPE black,cyan +DEBUG brightmagenta +ERROR red +TODO brightwhite,cyan +WARNING ,red +WHITESPACE ,green +HEADER bold,!blue,~grey7,underline +ROW_NUMBER bold,!blue,~grey7 +ROW_STYLE ,~grey15 +LIST_BACKGROUND ,~grey42 +LIST_GROUP yellow +# +# mixin +# ++FUNCTION FUNCTION: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" \n PLAIN: "[(]" ++LINT WHITESPACE: "[[:space:]]+$" \n WARNING: "\t*" ++LONG_LINE_WARNING WARNING: "^.{81,}$" +# +# parser +# +$LINE_COMMENT COMMENT \n TODO: "FIXME|TODO|XXX" +$BLOCK_COMMENT COMMENT \n DOC_COMMENT: startWith=/** \n TODO: "FIXME|TODO|XXX" +$BALANCED_DELIMITERS STRING \n VARIABLE: continueAs=\s*: diff --git a/.devcontainer/elide-home/nanorc/java.nanorc b/.devcontainer/elide-home/nanorc/java.nanorc new file mode 100644 index 000000000..22bc7db09 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/java.nanorc @@ -0,0 +1,24 @@ +syntax "Java" "\.java$" + +# Class +SECTION: "class +[A-Za-z0-9]+ *((implements|extends) +[A-Za-z0-9.]+)?" + +# Annotation +ESCAPE: "@[A-Za-z]+" + +# +FUNCTION +TYPE: "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\>" +KEYWORD: "\<(case|catch|default|do|else|finally|for|if|return|switch|throw|try|while)\>" +PACKAGE: "(([a-z]{2,}[.]{1}){2,10}([a-z]{2,}){0,1})" +CLASS: "\<[A-Z]{0,2}([A-Z]{1}[a-z]+){1,}\>" +KEYWORD: "\<(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\>" +JUMP: "\<(break|continue)\>" +NULL: "\<(null)\>" +BOOLEAN: "\<(true|false)\>" +CONSTANT: "\<[A-Z]+([_]{1}[A-Z]+){0,}\>" +OPERATOR: "[-+/*=<>?:!~%&|]" +~NUMBER: "\b(([1-9][0-9]+)|0+)\.[0-9]+\b" "\b[1-9][0-9]*\b" "\b0[0-7]*\b" "\b0x[1-9a-f][0-9a-f]*\b" +$BALANCED_DELIMITERS: """ +$LINE_COMMENT: "//" +$BLOCK_COMMENT: "/*, */" ++LINT diff --git a/.devcontainer/elide-home/nanorc/javascript.nanorc b/.devcontainer/elide-home/nanorc/javascript.nanorc new file mode 100644 index 000000000..6953b8ac6 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/javascript.nanorc @@ -0,0 +1,42 @@ +syntax "JavaScript" "\.js$" +SECTION: "class +[A-Za-z0-9]+ *((implements|extends) +[A-Za-z0-9.]+)?" +ESCAPE: "@[A-Za-z]+" +TYPE: "\<(Array|Boolean|Date|Enumerator|Error|Function|Math)\>" +TYPE: "\<(Map|WeakMap|Set|WeakSet|Promise|Symbol|Number|Object|RegExp|String|JSON)\>" +TYPE: "\<(Number|Object|RegExp|String)\>" +KEYWORD: "\<(const|let|class|extends|get|set|of|async|await|yield)\>" +KEYWORD: "\<(import|as|from|export)\>" +NULL: "\<(null|undefined)\>" +JUMP: "\<(break|case|catch|continue|default|delete|do|else|finally)\>" +CLASS: "\<[A-Z]{0,2}([A-Z]{1}[a-z]+){1,}\>" +BOOLEAN: "\<(true|false)\>" +CONSTANT: "\<[A-Z]+([_]{1}[A-Z]+){0,}\>" +OPERATOR: "[-+/*=<>?:!~%&|]" +~NUMBER: "\b(([1-9][0-9]+)|0+)\.[0-9]+\b" "\b[1-9][0-9]*\b" "\b0[0-7]*\b" "\b0x[1-9a-f][0-9a-f]*\b" +$BALANCED_DELIMITERS: """ +$LINE_COMMENT: "//" +$BLOCK_COMMENT: "/*, */" ++LINT +color brightblue "\<[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\>" +color brightblue "\<[-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" +color brightblue "\<[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" +color cyan "\<(break|case|catch|continue|default|delete|do|else|finally)\>" +color cyan "\<(for|function|get|if|in|instanceof|new|return|set|switch)\>" +color cyan "\<(switch|this|throw|try|typeof|var|void|while|with)\>" +color cyan "\<(null|undefined|NaN)\>" +color cyan "\<(import|as|from|export)\>" +color cyan "\<(const|let|class|extends|get|set|of|async|await|yield)\>" +color brightcyan "\<(true|false)\>" +color green "\<(Array|Boolean|Date|Enumerator|Error|Function|Math)\>" +color green "\<(Map|WeakMap|Set|WeakSet|Promise|Symbol)\>" +color green "\<(Number|Object|RegExp|String)\>" +color red "[-+/*=<>!~%?:&|]" +color magenta "/[^*]([^/]|(\\/))*[^\\]/[gim]*" +color magenta "\\[0-7][0-7]?[0-7]?|\\x[0-9a-fA-F]+|\\[bfnrt'"\?\\]" +color brightblack start="/\*" end="\*/" +color brightblack start="/\*\*" end="\*/" +color brightblack "//.*" +color brightblack "/\*.+\*/" +color brightwhite,cyan "TODO:?" +color yellow ""(\\.|[^"])*"|'(\\.|[^'])*'|(`|\})(\\.|[^`$]|$[^{])*(\$\{|`)" +color ,red " + +| + +" diff --git a/.devcontainer/elide-home/nanorc/json.nanorc b/.devcontainer/elide-home/nanorc/json.nanorc new file mode 100644 index 000000000..11b6487fa --- /dev/null +++ b/.devcontainer/elide-home/nanorc/json.nanorc @@ -0,0 +1,8 @@ +syntax "JSON" "\.json$" +header "^\{$" + +NUMBER: "\<[-]?[0-9]*([Ee][+-]?[0-9]+)?\>" "\<[-]?[0](\.[0-9]+)?\>" +NULL: "\" +BOOLEAN: "\<(true|false)\>" +ESCAPE: "\\u[0-9a-fA-F]{4}|\\[bfnrt'"/\\]" +$BALANCED_DELIMITERS "", '" diff --git a/.devcontainer/elide-home/nanorc/kotlin.nanorc b/.devcontainer/elide-home/nanorc/kotlin.nanorc new file mode 100644 index 000000000..c257835f8 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/kotlin.nanorc @@ -0,0 +1,26 @@ +# Nano syntax file +# Language: Kotlin +# Maintainer: Bjarne Holen +# Edited by: Ritiek Malhotra +# Last Change: 2017 May 24 +# Copyright (c) 2014, Bjarne Holen + +syntax "Kotlin" "\.kt$" "\.kts$" +color magenta "\b(([1-9][0-9]+)|0+)\.[0-9]+\b" "\b[1-9][0-9]*\b" "\b0[0-7]*\b" "\b0x[1-9a-f][0-9a-f]*\b" +color yellow "[.:;,+*|=!\%@]" "<" ">" "/" "-" "&" +color green "\<(namespace|as|type|class|this|super|val|var|fun|is|in|object|when|trait|import|where|by|get|set|abstract|enum|open|annotation|override|private|public|internal|protected|out|vararg|inline|final|package|lateinit|constructor|companion|const|suspend|sealed)\>" +color yellow "\<(true|false|null)\>" +color cyan "\<(break|catch|continue|do|else|finally|for|if|return|throw|try|while|repeat)\>" +color brightred "\<(inner|outer)\>" +## +## String highlighting. You will in general want your comments and +## strings to come last, because syntax highlighting rules will be +## applied in the order they are read in. +color brightblue "<[^= ]*>" ""(\\.|[^"])*"" + +## Comment highlighting +color red "^\s*//.*" +color red start="^\s*/\*" end="\*/" + +## Trailing whitespace +color ,green "[[:space:]]+$" diff --git a/.devcontainer/elide-home/nanorc/light.nanorctheme b/.devcontainer/elide-home/nanorc/light.nanorctheme new file mode 100644 index 000000000..dc617d3b1 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/light.nanorctheme @@ -0,0 +1,51 @@ +# +# This file describes a default scheme for nanorc syntax highlighting for terminals with light background. +# + +PLAIN black +FUNCTION green +STRING cyan +COMMENT brightcyan +DOC_COMMENT cyan +TYPE brightblue +BOOLEAN brightblack +NULL cyan +NUMBER blue +VARIABLE brightyellow +PACKAGE green,faint +CLASS green +CONSTANT yellow +OPERATOR yellow +COMMAND green +OPTION yellow +KEYWORD brightblack +JUMP cyan +SECTION green +ATTRIBUTE green +PATH brightblue +EXECUTABLE green +LINK cyan +TITLE brightblue +ESCAPE black,cyan +DEBUG brightmagenta +ERROR red +TODO brightwhite,cyan +WARNING ,lightred +WHITESPACE ,lightgreen +HEADER bold,!blue,~grey70,underline +ROW_NUMBER bold,!blue,~grey70 +ROW_STYLE ,~grey82 +LIST_BACKGROUND ,~grey70 +LIST_GROUP yellow +# +# mixin +# ++FUNCTION FUNCTION: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" \n PLAIN: "[(]" ++LINT WHITESPACE: "[[:space:]]+$" \n WARNING: "\t*" ++LONG_LINE_WARNING WARNING: "^.{81,}$" +# +# parser +# +$LINE_COMMENT COMMENT \n TODO: "FIXME|TODO|XXX" +$BLOCK_COMMENT COMMENT \n DOC_COMMENT: startWith=/** \n TODO: "FIXME|TODO|XXX" +$BALANCED_DELIMITERS STRING \n VARIABLE: continueAs=\s*: diff --git a/.devcontainer/elide-home/nanorc/nanorctheme.template b/.devcontainer/elide-home/nanorc/nanorctheme.template new file mode 100644 index 000000000..b8b0696c9 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/nanorctheme.template @@ -0,0 +1,60 @@ +# +# This file describes a default scheme template for nanorc syntax highlighting for terminals with dark background +# +# Actual nanorc themes can be generated using the themes available on https://mayccoll.github.io/Gogh/themes. +# +# Linux: +# \> cd git/jline3 +# \> ./build rebuild +# \> cd git/jline3/demo/target/nanorc +# \> bash -c "$(wget -qO- https://git.io/vQgMr)" +# ... +# + +PLAIN %COLOR_08 +FUNCTION %COLOR_11 +STRING %COLOR_15 +COMMENT %COLOR_07 +DOC_COMMENT %COLOR_15 +TYPE %COLOR_13 +BOOLEAN %COLOR_16 +NULL %COLOR_07 +NUMBER %COLOR_05 +VARIABLE %COLOR_12 +PACKAGE %COLOR_03 +CLASS %COLOR_03 +CONSTANT %COLOR_04 +OPERATOR %COLOR_04 +COMMAND %COLOR_11 +OPTION %COLOR_04 +KEYWORD %COLOR_16 +JUMP %COLOR_15 +SECTION %COLOR_11 +ATTRIBUTE %COLOR_03 +PATH %COLOR_13 +EXECUTABLE %COLOR_03 +LINK %COLOR_07 +TITLE %COLOR_13 +ESCAPE %COLOR_01,%COLOR_07 +DEBUG %COLOR_14 +ERROR %COLOR_02 +TODO %COLOR_16,%COLOR_07 +WARNING ,%COLOR_02 +WHITESPACE ,%COLOR_03 +HEADER bold,%COLOR_13,~grey7,underline +ROW_NUMBER bold,%COLOR_13,~grey7 +ROW_STYLE ,~grey15 +LIST_BACKGROUND ,~grey42 +LIST_GROUP %COLOR_04 +# +# mixin +# ++FUNCTION FUNCTION: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]" \n PLAIN: "[(]" ++LINT WHITESPACE: "[[:space:]]+$" \n WARNING: "\t*" ++LONG_LINE_WARNING WARNING: "^.{81,}$" +# +# parser +# +$LINE_COMMENT COMMENT \n TODO: "FIXME|TODO|XXX" +$BLOCK_COMMENT COMMENT \n DOC_COMMENT: startWith=/** \n TODO: "FIXME|TODO|XXX" +$BALANCED_DELIMITERS STRING \n VARIABLE: continueAs=\s*: diff --git a/.devcontainer/elide-home/nanorc/python.nanorc b/.devcontainer/elide-home/nanorc/python.nanorc new file mode 100644 index 000000000..9dc0170f2 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/python.nanorc @@ -0,0 +1,56 @@ +## Python syntax highlighting rules for Nano + +syntax "Python" "\.py$" +header "^#!.*/(env +)?python[-0-9._]*( |$)" +magic "Python script" +comment "#" + +linter pyflakes + +## built-in objects +color cyan "\<(None|self|True|False)\>" +## built-in attributes +color cyan "\<(__builtin__|__dict__|__methods__|__members__|__class__|__bases__|__import__|__name__|__doc__|__self__|__debug__)\>" +## built-in functions +color cyan "\<(abs|append|apply|buffer|callable|chr|clear|close|closed|cmp|coerce|compile|complex|conjugate|copy|count|delattr|dir|divmod|eval|execfile|exec|extend|fileno|filter|float|flush|get|getattr|globals|has_key|hasattr|hash|hex|id|index|input|insert|int|intern|isatty|isinstance|issubclass|items|keys|len|list|locals|long|map|max|min|mode|name|oct|open|ord|pop|pow|print|range|raw_input|read|readline|readlines|reduce|reload|remove|repr|reverse|round|seek|setattr|slice|softspace|sort|str|tell|truncate|tuple|type|unichr|unicode|update|values|vars|write|writelines|xrange|zip|bool)\>" +## built-in functions that were previously keywords +color brightblue "\<(print|exec)\>([[:space:]]|$)" +## special method names +color cyan "\<(__abs__|__add__|__and__|__call__|__cmp__|__coerce__|__complex__|__concat__|__contains__|__del__|__delattr__|__delitem__|__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__|__bool__)\>" +## exception classes +color cyan "\<(Exception|StandardError|ArithmeticError|LookupError|EnvironmentError|AssertionError|AttributeError|EOFError|FloatingPointError|IOError|ImportError|IndexError|KeyError|KeyboardInterrupt|MemoryError|NameError|NotImplementedError|OSError|OverflowError|RuntimeError|SyntaxError|SystemError|SystemExit|TypeError|UnboundLocalError|UnicodeError|ValueError|WindowsError|ZeroDivisionError)\>" +## types +color brightcyan "\<(NoneType|TypeType|IntType|LongType|FloatType|ComplexType|StringType|UnicodeType|BufferType|TupleType|ListType|DictType|FunctionType|LambdaType|CodeType|ClassType|UnboundMethodType|InstanceType|MethodType|BuiltinFunctionType|BuiltinMethodType|ModuleType|FileType|XRangeType|TracebackType|FrameType|SliceType|EllipsisType)\>" +## definitions +color brightcyan "def [a-zA-Z_0-9]+" +## keywords +color brightblue "\<(and|as|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|map|not|or|pass|raise|return|try|with|while|yield)\>" + +## decorators +color brightgreen "@.*[(]" + +## operators +color magenta "[.:;,+*|=!\%@]" "<" ">" "/" "-" "&" + +## parentheses +color magenta "[(){}]" "\[" "\]" + +## numbers +icolor brightyellow "\b(([1-9][0-9]+)|0+)\.[0-9]+j?\b" "\b([1-9][0-9]*[Lj]?)\b" "\b0o?[0-7]*L?\b" "\b0x[1-9a-f][0-9a-f]*L?\b" "\b0b[01]+\b" + + +## strings +color yellow "['][^']*[^\\][']" "[']{3}.*[^\\][']{3}" +color yellow "["][^"]*[^\\]["]" "["]{3}.*[^\\]["]{3}" + +## comments +color green "^#.*|[[:space:]]#.*$" + +## block comments +color yellow start=""""[^"]" end=""""" start="'''[^']" end="'''" + +## trailing spaces +color ,green "[[:space:]]+$" + +## reminders +color brightwhite,yellow "(FIXME|TODO|XXX)" diff --git a/.devcontainer/elide-home/nanorc/ruby.nanorc b/.devcontainer/elide-home/nanorc/ruby.nanorc new file mode 100644 index 000000000..7e8aef18c --- /dev/null +++ b/.devcontainer/elide-home/nanorc/ruby.nanorc @@ -0,0 +1,37 @@ +## Here is an example for Ruby. +## +syntax "Ruby" "\.rb$" "Gemfile" "config.ru" "Rakefile" "Capfile" "Vagrantfile" +header "^#!.*/(env +)?ruby( |$)" +magic "Ruby script" +linter ruby -w -c +comment "#" + +## Asciibetical list of reserved words +color yellow "\<(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)\>" +## Constants +color brightblue "(\$|@|@@)?\<[A-Z]+[0-9A-Z_a-z]*" +## Ruby "symbols" +icolor magenta "([ ]|^):[0-9A-Z_]+\>" +## Some unique things we want to stand out +color brightyellow "\<(__FILE__|__LINE__)\>" +## Regular expressions +color brightmagenta "/([^/]|(\\/))*/[iomx]*" "%r\{([^}]|(\\}))*\}[iomx]*" +## Shell command expansion is in `backticks` or like %x{this}. These are +## "double-quotish" (to use a perlism). +color brightblue "`[^`]*`" "%x\{[^}]*\}" +## Strings, double-quoted +color green ""([^"]|(\\"))*"" "%[QW]?\{[^}]*\}" "%[QW]?\([^)]*\)" "%[QW]?<[^>]*>" "%[QW]?\[[^]]*\]" "%[QW]?\$[^$]*\$" "%[QW]?\^[^^]*\^" "%[QW]?![^!]*!" +## Expression substitution. These go inside double-quoted strings, +## "like #{this}". +color brightgreen "#\{[^}]*\}" +## Strings, single-quoted +color green "'([^']|(\\'))*'" "%[qw]\{[^}]*\}" "%[qw]\([^)]*\)" "%[qw]<[^>]*>" "%[qw]\[[^]]*\]" "%[qw]\$[^$]*\$" "%[qw]\^[^^]*\^" "%[qw]![^!]*!" +## Comments +color cyan "#[^{].*$" "#$" +color brightcyan "##[^{].*$" "##$" +## "Here" docs +color green start="<<-?'?EOT'?" end="^EOT" +## Some common markers +color brightcyan "(XXX|TODO|FIXME|\?\?\?)" +## Trailing spaces +color ,green "[[:space:]]+$" diff --git a/.devcontainer/elide-home/nanorc/ts.nanorc b/.devcontainer/elide-home/nanorc/ts.nanorc new file mode 100644 index 000000000..d970d8c28 --- /dev/null +++ b/.devcontainer/elide-home/nanorc/ts.nanorc @@ -0,0 +1,47 @@ +syntax "TypeScript" "\.(ts)$" +header "^#!.*\/(env +)ts-node" + +## Default +color white "^.+$" + +## Decimal, octal and hexadecimal numbers +color yellow "\<[-+]?([1-9][0-9]*|0[0-7]*|0x[0-9a-fA-F]+)([uU][lL]?|[lL][uU]?)?\>" + +## Floating point number with at least one digit before decimal point +color yellow "\<[-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([EePp][+-]?[0-9]+)?[fFlL]?" +color yellow "\<[-+]?([0-9]+[EePp][+-]?[0-9]+)[fFlL]?" + +## Keywords +color green "\<(as|abstract|asserts|boolean|break|byte|case|catch)\>" +color green "\<(class|const|continue|debugger|default|delete|readonly)\>" +color green "\<(do|else|enum|export|extends|finally|final|for)\>" +color green "\<(from|function|goto|if|implements|import|instanceof)\>" +color green "\<(var|interface|int|in|is|infer|let|new|package|private)\>" +color green "\<(protected|public|return|static|super|switch)\>" +color green "\<(this|throw|try|typeof|type)\>" +color green "\<(void|while|with|yield)\>" +color green "\<(async|await)\>" +color green "\<(set|get)\>" +color green "\<(module|namespace)\>" +color green "\<(declare)\>" + +## Type specifiers +color red "\<(Array|Boolean|Date|Enumerator|Error|Function)\>" +color red "\<(Number|Object|RegExp|String)\>" +color red "\<(true|false)\>" + +## String +color brightyellow "L?\"(\\"|[^"])*\"" +color brightyellow "L?'(\'|[^'])*'" +color brightcyan "L?`(\`|[^`])*`" +color brightwhite,blue start="\$\{" end="\}" + +## Escapes +color red "\\[0-7][0-7]?[0-7]?|\\x[0-9a-fA-F]+|\\[bfnrt'"\?\\]" + +## Comments +color magenta start="/\*" end="\*/" +color magenta "^\s*//.*$" + +## Trailing whitespace +color ,green "[[:space:]]+$"