0: Initial.

[?]
Aaw9nJhsNmfzFih9mKyNw9mV8CgERXJkRa1kK1Kx3LQH
Dec 20, 2021, 1:10 PM
NHRV5JP3IOPM3JRAT2FPM4D66UUUGQLHOJ6R7XGAVM2Z3FHTPLNQC

Dependencies

Change contents

  • add root
    [1.1]
    [0.1]
  • file addition: workspace.code-workspace (----------)
    [0.2]
    {
    "folders": [
    {
    "path": "."
    }
    ],
    "settings": {}
    }
  • file addition: vsc-extension-quickstart.md (----------)
    [0.2]
    # Welcome to your VS Code Extension
    ## What's in the folder
    * This folder contains all of the files necessary for your extension.
    * `package.json` - this is the manifest file in which you declare your language support and define the location of the grammar file that has been copied into your extension.
    * `syntaxes/sprak.tmLanguage.json` - this is the Text mate grammar file that is used for tokenization.
    * `language-configuration.json` - this is the language configuration, defining the tokens that are used for comments and brackets.
    ## Get up and running straight away
    * Make sure the language configuration settings in `language-configuration.json` are accurate.
    * Press `F5` to open a new window with your extension loaded.
    * Create a new file with a file name suffix matching your language.
    * Verify that syntax highlighting works and that the language configuration settings are working.
    ## Make changes
    * You can relaunch the extension from the debug toolbar after making changes to the files listed above.
    * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes.
    ## Add more language features
    * To add features such as intellisense, hovers and validators check out the VS Code extenders documentation at https://code.visualstudio.com/docs
    ## Install your extension
    * To start using your extension with Visual Studio Code copy it into the `<user home>/.vscode/extensions` folder and restart Code.
    * To share your extension with the world, read on https://code.visualstudio.com/docs about publishing an extension.
  • file addition: syntaxes (d--r------)
    [0.2]
  • file addition: sprak.tmLanguage.json (----------)
    [0.1776]
    {
    "name": "Sprak Language Extension",
    "scopeName": "source.sprak",
    "fileTypes": [
    "sprak",
    "Sprak",
    "SPRAK"
    ],
    "uuid": "92b7c74c-cde8-4611-979e-a162a03c37fb",
    "patterns": [
    {
    "comment": "Comment",
    "name": "comment.line.sprak",
    "match": "(#).*",
    "captures": {
    "1": {
    "name": "punctuation.definition.comment.sprak"
    }
    }
    },
    {
    "comment": "Keywords",
    "name": "keyword.control.sprak",
    "match": "\\b(else if|(end )?if|(end )?void|end|else|loop|in|from|to|break|return)\\b"
    },
    {
    "comment": "Operators",
    "name": "keyword.operator.sprak",
    "match": "^(?:(?i)and|(?i)or|[!<->]=|&&|\\|\\||[!<->]|[*+\\-/])$"
    },
    {
    "comment": "Types",
    "name": "storage.type.sprak",
    "match": "\\b(void|bool|number|string|array|var)\\b"
    },
    {
    "comment": "Functions",
    "name": "support.function.sprak",
    "match": "\\b(Allow|Append|Blip|BootFromFloppy|Broadcast|ChangeBalance|CharToInt|Charisma|ClearData|ClearMemories|ClearText|Color|Connect|CopyToClipBoard|Corruption|Cos|Count|DisconnectAll|DisplayGraphics|Drink|Drunkenness|EnableAPI|EraseMemory|FastForward|FindPath|GetAction|GetAllRooms|GetBalanceForPerson|GetChannel|GetConnections|GetHour|GetIndexes|GetMemories|GetMinute|GetNumericData|GetPosition|GetPeople|GetRain|GetRoom|GetThingsInRoom|GetThingsOfType|GetTypeOfThing|GetUser|HD|HSVtoRGB|HasFloppy|HasFunction|HasIndex|HasMemory|Height|Info|Input|Int|InteractWith|IntToChar|IsKeyPressed|IsUser|Line|Lines|LoadData|LoadMemory|Lock|Log|Mod|Move|MovePerson|Name|OnHack|OnIntruder|Pitch|PlaySound|Position|Print|PrintS|QuickBoost|Quit|RGBToHSV|Random|Range|Rect|RegisterSeller|RemoteFunctionCall|Remove|RemoveAll|Repeat|RestoreCode|Round|SaveData|SaveMemory|Say|SetChannel|SetMaxTime|SetMhz|SetNumericData|SetPosition|SetRain|Sin|Sleep|Sleepiness|Slurp|Smelliness|Speed|StringContains|Switch|TeleportSetWorldPosition|Text|Time|Toggle|Trippy|TurnLeft|TurnOff|TurnOffSound|TurnOn|TurnOnSound|TurnRight|Type|Unlock|Width|ZapPerson|ZapPersonGently)\\b"
    },
    {
    "comment": "Numeric",
    "name": "constant.numeric.sprak",
    "match": "\\b(\\d(\\.\\d)?)+"
    },
    {
    "comment": "Global",
    "name": "constant.global.sprak",
    "match": "\\b\\w+\\$"
    },
    {
    "comment": "SUB",
    "name": "meta.function.sprak",
    "match": "^(\\w+):",
    "captures": {
    "1": {
    "name": "entity.name.function.sprak"
    }
    }
    },
    {
    "comment": "Brace, round",
    "name": "meta.brace.round.sprak",
    "match": "[\\(\\)]"
    },
    {
    "comment": "Brace, curly",
    "name": "meta.brace.curly.sprak",
    "match": "[\\{\\}]"
    },
    {
    "comment": "Array",
    "name": "other.array.sprak",
    "begin": "(\\w+\\()",
    "beginCaptures": {
    "1": {
    "name": "constant.array.sprak"
    }
    },
    "end": "(\\))",
    "endCaptures": {
    "1": {
    "name": "constant.array.sprak"
    }
    },
    "patterns": [
    {
    "include": "$self"
    }
    ]
    },
    {
    "comment": "String, double-quoted",
    "name": "string.quoted.double.sprak",
    "match": "\\\"[^\"]*\\\""
    },
    {
    "comment": "String, single-quoted",
    "name": "string.quoted.single.sprak",
    "match": "\\'[^']*\\'"
    }
    ]
    }
  • file addition: sprak.YAML-tmLanguage (----------)
    [0.1776]
    # [PackageDev] target_format: plist, ext: tmLanguage
    ---
    name: Sprak Language Extension
    scopeName: source.sprak
    fileTypes: [sprak,Sprak,SPRAK]
    uuid: 92b7c74c-cde8-4611-979e-a162a03c37fb
    patterns:
    - comment: Comment
    name: comment.line.sprak
    match: (#).*
    captures:
    '1': { name: punctuation.definition.comment.sprak }
    - comment: Keywords
    name: keyword.control.sprak
    match: \b(else if|(end )?if|(end )?void|end|else|loop|in|from|to|break|return)\b
    - comment: Operators
    name: keyword.operator.sprak
    match: '^(?:(?i)and|(?i)or|[!<->]=|&&|\|\||[!<->]|[*+\-/])$'
    - comment: Types
    name: storage.type.sprak
    match: \b(void|bool|number|string|array|var)\b
    - comment: Functions
    name: support.function.sprak
    match: \b(Allow|Append|Blip|BootFromFloppy|Broadcast|ChangeBalance|CharToInt|Charisma|ClearData|ClearMemories|ClearText|Color|Connect|CopyToClipBoard|Corruption|Cos|Count|DisconnectAll|DisplayGraphics|Drink|Drunkenness|EnableAPI|EraseMemory|FastForward|FindPath|GetAction|GetAllRooms|GetBalanceForPerson|GetChannel|GetConnections|GetHour|GetIndexes|GetMemories|GetMinute|GetNumericData|GetPosition|GetPeople|GetRain|GetRoom|GetThingsInRoom|GetThingsOfType|GetTypeOfThing|GetUser|HD|HSVtoRGB|HasFloppy|HasFunction|HasIndex|HasMemory|Height|Info|Input|Int|InteractWith|IntToChar|IsKeyPressed|IsUser|Line|Lines|LoadData|LoadMemory|Lock|Log|Mod|Move|MovePerson|Name|OnHack|OnIntruder|Pitch|PlaySound|Position|Print|PrintS|QuickBoost|Quit|RGBToHSV|Random|Range|Rect|RegisterSeller|RemoteFunctionCall|Remove|RemoveAll|Repeat|RestoreCode|Round|SaveData|SaveMemory|Say|SetChannel|SetMaxTime|SetMhz|SetNumericData|SetPosition|SetRain|Sin|Sleep|Sleepiness|Slurp|Smelliness|Speed|StringContains|Switch|TeleportSetWorldPosition|Text|Time|Toggle|Trippy|TurnLeft|TurnOff|TurnOffSound|TurnOn|TurnOnSound|TurnRight|Type|Unlock|Width|ZapPerson|ZapPersonGently)\b
    - comment: Numeric
    name: constant.numeric.sprak
    match: \b(\d(\.\d)?)+
    - comment: Global
    name: constant.global.sprak
    match: \b\w+\$
    - comment: SUB
    name: meta.function.sprak
    match: '^(\w+):'
    captures:
    '1': { name: entity.name.function.sprak }
    - comment: Brace, round
    name: meta.brace.round.sprak
    match: '[\(\)]'
    - comment: Brace, curly
    name: meta.brace.curly.sprak
    match: '[\{\}]'
    - comment: Array
    name: other.array.sprak
    begin: (\w+\()
    beginCaptures:
    '1': { name: constant.array.sprak }
    end: (\))
    endCaptures:
    '1': { name: constant.array.sprak }
    patterns:
    - include: $self
    - comment: String, double-quoted
    name: string.quoted.double.sprak
    match: \"[^"]*\"
    - comment: String, single-quoted
    name: string.quoted.single.sprak
    match: \'[^']*\'
    ...
  • file addition: snippets (d--r------)
    [0.2]
  • file addition: snippets.code-snippets (----------)
    [0.7996]
    {
    "Variable Array": {
    "prefix": ["array"],
    "body": ["array ${1:name} = [$0]"],
    "description": "Array variable declaration."
    },
    "Variable Boolean": {
    "prefix": ["bool"],
    "body": ["bool ${1:name} = $0"],
    "description": "Boolean variable declaration."
    },
    "Variable Number": {
    "prefix": ["number"],
    "body": ["number ${1:name} = $0"],
    "description": "Number variable declaration."
    },
    "Variable String": {
    "prefix": ["string"],
    "body": ["string ${1:name} = \"$0\""],
    "description": "String variable declaration."
    },
    "Variable Generic": {
    "prefix": ["var"],
    "body": ["var ${1:name} = $0"],
    "description": "Generic variable declaration."
    },
    "Array Function": {
    "prefix": ["array"],
    "body": [
    "array ${1:name}(${2:inputs})",
    "\treturn [$0]",
    "end"
    ],
    "description": "Array function definition."
    },
    "Function Boolean": {
    "prefix": ["bool"],
    "body": [
    "bool ${1:name}(${2:inputs})",
    "\treturn $0",
    "end"
    ],
    "description": "Boolean function definition."
    },
    "Function Generic": {
    "prefix": ["var"],
    "body": [
    "var ${1:name}(${2:inputs})",
    "\treturn $0",
    "end"
    ],
    "description": "Generic function definition."
    },
    "Function Number": {
    "prefix": ["number"],
    "body": [
    "number ${1:name}(${2:inputs})",
    "\treturn $0",
    "end"
    ],
    "description": "Number function definition."
    },
    "Function String": {
    "prefix": ["string"],
    "body": [
    "string ${1:name}(${2:inputs})",
    "\treturn \"$0\"",
    "end"
    ],
    "description": "String function definition."
    },
    "Function Void": {
    "prefix": ["void"],
    "body": [
    "void ${1:name}(${2:inputs})",
    "\t$0",
    "end"
    ],
    "description": "Generic function definition."
    },
    "Conditional": {
    "prefix": ["if"],
    "body": [
    "if $1",
    "\t$3",
    "else if $2",
    "\t$4",
    "else",
    "\t$0",
    "end"],
    "description": "Conditional."
    },
    "Loop": {
    "prefix": ["loop"],
    "body": [
    "loop",
    "\t$0",
    "end"
    ],
    "description": "Loop forever."
    },
    "Loop over array": {
    "prefix": ["loop"],
    "body": [
    "loop ${1:array}",
    "\tvar element = @",
    "\t$0",
    "end"],
    "description": "Loop over an array."
    },
    "Loop elements in array": {
    "prefix": ["loop"],
    "body": [
    "loop ${1:element} in ${2:array}",
    "\t$0",
    "end"
    ],
    "description": "Loop over elements in an array."
    },
    "Loop over range": {
    "prefix": ["loop"],
    "body": [
    "loop from ${1:start} to ${2:finish}",
    "\tnumber element = @",
    "\t$0",
    "end"
    ],
    "description": "Loop over a range."
    },
    "Loop element in range": {
    "prefix": ["loop"],
    "body": [
    "loop ${1:element} from ${2:start} to ${3:finish}",
    "\t$0",
    "end"
    ],
    "description": "Loop over numbers in a range."
    },
    "Sebastian": {
    "prefix": ["Sebastian", "sebastian"],
    "body": ["Sebastian$0"],
    "description": "Player character's name."
    }
    }
  • file addition: shell.nix (----------)
    [0.2]
    { pkgs ? import <nixpkgs> {} }:
    let
    inherit (builtins)
    attrValues
    fetchGit;
    in pkgs.mkShell {
    nativeBuildInputs = (attrValues {
    inherit (pkgs)
    git
    nodejs
    vscodium
    ;
    }) ++ [
    pkgs.nodePackages.js-yaml
    pkgs.nodePackages.yo
    pkgs.nodePackages.generator-code
    ];
    }
  • file addition: package.json (----------)
    [0.2]
    {
    "name": "sprak-language-extension",
    "displayName": "Sprak Language Extension",
    "description": "Support for the Sprak programming language used in the game \"else Heart.Break()\".",
    "version": "0.0.1",
    "engines": {
    "vscode": "^1.62.0"
    },
    "categories": [
    "Programming Languages",
    "Snippets"
    ],
    "contributes": {
    "languages": [
    {
    "id": "sprak",
    "aliases": [
    "Sprak",
    "sprak"
    ],
    "extensions": [
    ".sprak",
    ".Sprak",
    ".SPRAK"
    ],
    "configuration": "./language-configuration.json"
    }
    ],
    "grammars": [
    {
    "language": "sprak",
    "scopeName": "source.sprak",
    "path": "./syntaxes/sprak.tmLanguage.json"
    }
    ],
    "snippets": [
    {
    "language": "sprak",
    "path": "./snippets/snippets.code-snippets"
    }
    ]
    }
    }
  • file addition: operators (----------)
    [0.2]
    +
    -
    *
    /
    =
    <
    >
    ==
    !=
    >=
    <=
    and
    anD
    aNd
    aND
    And
    AnD
    AND
    or
    oR
    Or
    OR
    &&
    ||
    !
  • file addition: language-configuration.json (----------)
    [0.2]
    {
    "comments": {
    "lineComment": "#"
    },
    "brackets": [
    ["[", "]"],
    ["(", ")"]
    ],
    "autoClosingPairs": [
    ["{", "}"],
    ["[", "]"],
    ["(", ")"],
    ["\"", "\""],
    ["'", "'"],
    { "open": "'", "close": "'", "notIn": ["string", "comment"] },
    { "open": "\"", "close": "\"", "notIn": ["string"] },
    { "open": "`", "close": "`", "notIn": ["string", "comment"] }
    ],
    "autoCloseBefore": ";:.,=}])>` \n\t",
    "surroundingPairs": [
    ["{", "}"],
    ["[", "]"],
    ["(", ")"],
    { "open": "'", "close": "'", "notIn": ["string", "comment"] },
    { "open": "\"", "close": "\"", "notIn": ["string"] },
    { "open": "`", "close": "`", "notIn": ["string", "comment"] }
    ]
    // "folding": {
    // "markers": {
    // "start": "^\\s*//\\s*#?region\\b",
    // "end": "^\\s*//\\s*#?endregion\\b"
    // }
    // },
    // "wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)",
    // "indentationRules": {
    // "increaseIndentPattern": "^((?!\\/\\/).)*(\\{[^}\"'`]*|\\([^)\"'`]*|\\[[^\\]\"'`]*)$",
    // "decreaseIndentPattern": "^((?!.*?\\/\\*).*\\*/)?\\s*[\\}\\]].*$"
    // }
    }
  • file addition: functions (----------)
    [0.2]
    Allow
    Append
    Blip
    BootFromFloppy
    Broadcast
    ChangeBalance
    CharToInt
    Charisma
    ClearData
    ClearMemories
    ClearText
    Color
    Connect
    CopyToClipBoard
    Corruption
    Cos
    Count
    DisconnectAll
    DisplayGraphics
    Drink
    Drunkenness
    EnableAPI
    EraseMemory
    FastForward
    FindPath
    GetAction
    GetAllRooms
    GetBalanceForPerson
    GetChannel
    GetConnections
    GetHour
    GetIndexes
    GetMemories
    GetMinute
    GetNumericData
    GetPosition
    GetPeople
    GetRain
    GetRoom
    GetThingsInRoom
    GetThingsOfType
    GetTypeOfThing
    GetUser
    HD
    HSVtoRGB
    HasFloppy
    HasFunction
    HasIndex
    HasMemory
    Height
    Info
    Input
    Int
    InteractWith
    IntToChar
    IsKeyPressed
    IsUser
    Line
    Lines
    LoadData
    LoadMemory
    Lock
    Log
    Mod
    Move
    MovePerson
    Name
    OnHack
    OnIntruder
    Pitch
    PlaySound
    Position
    Print
    PrintS
    QuickBoost
    Quit
    RGBToHSV
    Random
    Range
    Rect
    RegisterSeller
    RemoteFunctionCall
    Remove
    RemoveAll
    Repeat
    RestoreCode
    Round
    SaveData
    SaveMemory
    Say
    SetChannel
    SetMaxTime
    SetMhz
    SetNumericData
    SetPosition
    SetRain
    Sin
    Sleep
    Sleepiness
    Slurp
    Smelliness
    Speed
    StringContains
    Switch
    TeleportSetWorldPosition
    Text
    Time
    Toggle
    Trippy
    TurnLeft
    TurnOff
    TurnOffSound
    TurnOn
    TurnOnSound
    TurnRight
    Type
    Unlock
    Width
    ZapPerson
    ZapPersonGently
  • file addition: build.sh (---r------)
    [0.2]
    #!/usr/bin/env nix-shell
    #!nix-shell -i bash
    npx js-yaml syntaxes/sprak.YAML-tmLanguage > syntaxes/sprak.tmLanguage.json
    npx vsce package
  • file addition: README.md (----------)
    [0.2]
    # Sprak Language Extension for Codium
    Adds support for the Sprak programming language used in the game "else Heart.Break()".
    ## Features
    * Syntax highlighting.
    * Code snippets.
    ## Building
    * Dependencies:
    * `nix`
    * To build:
    ```shell
    sh build.sh
    ```
    ### License
    This software is distributed and licensed under the terms of the [Blue Oak Model License 1.0.0](https://web.archive.org/web/20190309191626/https://blueoakcouncil.org/license/1.0.0).
  • file addition: LICENSE (----------)
    [0.2]
    # Blue Oak Model License
    Version 1.0.0
    ## Purpose
    This license gives everyone as much permission to work with
    this software as possible, while protecting contributors
    from liability.
    ## Acceptance
    In order to receive this license, you must agree to its
    rules. The rules of this license are both obligations
    under that agreement and conditions to your license.
    You must not do anything with this software that triggers
    a rule that you cannot or will not follow.
    ## Copyright
    Each contributor licenses you to do everything with this
    software that would otherwise infringe that contributor's
    copyright in it.
    ## Notices
    You must ensure that everyone who gets a copy of
    any part of this software from you, with or without
    changes, also gets the text of this license or a link to
    <https://blueoakcouncil.org/license/1.0.0>.
    ## Excuse
    If anyone notifies you in writing that you have not
    complied with [Notices](#notices), you can keep your
    license by taking all practical steps to comply within 30
    days after the notice. If you do not do so, your license
    ends immediately.
    ## Patent
    Each contributor licenses you to do everything with this
    software that would otherwise infringe any patent claims
    they can license or become able to license.
    ## Reliability
    No contributor can revoke this license.
    ## No Liability
    ***As far as the law allows, this software comes as is,
    without any warranty or condition, and no contributor
    will be liable to anyone for any damages related to this
    software or this license, under any kind of legal claim.***
  • file addition: CHANGELOG.md (----------)
    [0.2]
    # Change Log
    All notable changes to the "sprak-language-extension" extension will be documented in this file.
    Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
    ## [Unreleased]
    - Initial release
  • file addition: .vscodeignore (----------)
    [0.2]
    .vscode/**
    .vscode-test/**
    .gitignore
    vsc-extension-quickstart.md
  • file addition: .vscode (d--r------)
    [0.2]
  • file addition: launch.json (----------)
    [0.17204]
    // A launch configuration that launches the extension inside a new window
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    {
    "version": "0.2.0",
    "configurations": [
    {
    "name": "Extension",
    "type": "extensionHost",
    "request": "launch",
    "args": [
    "--extensionDevelopmentPath=${workspaceFolder}"
    ]
    }
    ]
    }
  • file addition: .ignore (----------)
    [0.2]
    .git
    .DS_Store