diff --git a/.editorconfig b/.editorconfig
index 8cd9c431..ee20bec2 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -25,6 +25,3 @@ indent_size = 4
[*.tmPreferences]
indent_style = tab
indent_size = 4
-
-[Makefile]
-indent_style = tab
diff --git a/.gitattributes b/.gitattributes
index 9ec26bd6..22a1d192 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4,13 +4,13 @@
# Files and directories with the attribute export-ignore won’t be added to
# archive files. See http://git-scm.com/docs/gitattributes for details.
-/.github/ export-ignore
-/build/ export-ignore
-/icons/svg/ export-ignore
-/tests/ export-ignore
-/.editorconfig export-ignore
-/.flake8 export-ignore
-/.gitattributes export-ignore
-/.gitignore export-ignore
-/makefile export-ignore
-/pyproject.toml export-ignore
+/.github/ export-ignore
+/build/ export-ignore
+/icons/svg/ export-ignore
+/tests/ export-ignore
+/.editorconfig export-ignore
+/.flake8 export-ignore
+/.gitattributes export-ignore
+/.gitignore export-ignore
+/pyproject.toml export-ignore
+/requirements-dev.txt export-ignore
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 597f97e5..c64eb24b 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -24,4 +24,4 @@
- [ ] My code follows the code style of this project.
- [ ] My change requires a change to the documentation.
-- [ ] I have read the **CONTRIBUTING** document.
+- [ ] I have read the [**CONTRIBUTING**](https://github.com/SublimeText/AFileIcon/blob/develop/CONTRIBUTING.md) document.
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 1ab9888a..c988231c 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -3,16 +3,19 @@ on: [push, pull_request]
jobs:
build:
-
runs-on: ubuntu-latest
+
steps:
- - uses: actions/checkout@v1
+ - name: Checkout the latest code
+ uses: actions/checkout@v4
+
- name: Set up Python
- uses: actions/setup-python@v1
+ uses: actions/setup-python@v5
with:
- python-version: 3.8
- - name: Install black
- run: pip install black
- - name: Check formating
- run: black --check .
+ python-version-file: '.python-version'
+
+ - name: Install dependencies
+ run: python -m pip install -U -r requirements-dev.txt
+ - name: Check formatting
+ run: python -m black --check .
diff --git a/.sublime/A File Icon.sublime-settings b/A File Icon.sublime-settings
similarity index 100%
rename from .sublime/A File Icon.sublime-settings
rename to A File Icon.sublime-settings
diff --git a/.github/CONTRIBUTING.md b/CONTRIBUTING.md
similarity index 82%
rename from .github/CONTRIBUTING.md
rename to CONTRIBUTING.md
index cc9cb4c7..49deba9d 100644
--- a/.github/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -12,57 +12,72 @@ We have very precise rules over how our git commit messages can be formatted. Th
We use [**Angular JS commit guidelines**](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#-git-commit-guidelines) (except scope notes: we don't need them).
-## Building
+## Development
-## Prerequisites
+### Prerequisites
-This package provides the `build` python package to create the preferences and icons. In order to add new icons a _python 3_ interpreter is required.
+The CairoSVG dependency needs the `cairo` library being present on the system.
-The `build` uses [pyPNG](https://pypi.org/project/pypng/) and [CairoSVG](https://pypi.org/project/CairoSVG/) to convert the icons from SVG to PNG. You nee to...
+**Linux**
```bash
-pip install cairosvg
-pip install pypng
+sudo apt-get install libcairo2
```
-The CairoSVG needs the `cairo` library being present on the system.
+**Windows**
-**Linux**
+You can download the latest release of [`cairo.dll`](https://github.com/preshing/cairo-windows/releases) and place it somewhere Python can load it from.
+
+As a last resort, [Graphviz](https://graphviz.org/) includes `cairo.dll` in its distribution.
+
+### Installation
+
+Navigate to _A File Icon_ root directory and call...
+
+**Linux/MacOS**
```bash
-sudo apt-get install libcairo2
+python3 -m venv .venv
+. .venv/bin/activate
+python3 -m pip install -U -r requirements-dev.txt
```
**Windows**
-You can download the latest release of the [cairo.dll](https://github.com/preshing/cairo-windows/releases) from https://github.com/preshing/cairo-windows/releases and place it somewhere python can load it from.
+```cmd
+py -m venv .venv
+.venv\Scripts\activate
+py -m pip install -U -r requirements-dev.txt
+```
### Building
-Run the build scripts via makefile:
+Navigate to _A File Icon_ root directory, activate python virtual environment and call...
+
+**Linux/MacOS**
```bash
-# build all
-make all
+# build everything
+python3 build
-# build icons
-make icons
+# build icons only
+python3 build --icons
-# build preferences
-make preferences
+# build preferences only
+python3 build --preferences
```
-If no make is available run the build scripts directly via python:
+**Windows**
-```bash
-# build all
-python -u build --icons --preferences
+```cmd
+: build everything
+py build
-# build icons
-python -u build --icons
+: build icons only
+py build --icons
-# build preferences
-python -u build --preferences
+: build preferences only
+py build --preferences
```
## Want to add new icons?
diff --git a/.sublime/Default.sublime-commands b/Default.sublime-commands
similarity index 74%
rename from .sublime/Default.sublime-commands
rename to Default.sublime-commands
index 5acce44b..82ecfc5a 100644
--- a/.sublime/Default.sublime-commands
+++ b/Default.sublime-commands
@@ -3,7 +3,7 @@
"caption": "Preferences: A File Icon Settings",
"command": "edit_settings", "args":
{
- "base_file": "${packages}/A File Icon/.sublime/A File Icon.sublime-settings",
+ "base_file": "${packages}/A File Icon/A File Icon.sublime-settings",
"default": "// A File Icon Preferences – User\n// ================================================================\n{\n\t$0\n}\n"
}
}
diff --git a/.sublime/Main.sublime-menu b/Main.sublime-menu
similarity index 87%
rename from .sublime/Main.sublime-menu
rename to Main.sublime-menu
index 27f2beb3..046385cd 100644
--- a/.sublime/Main.sublime-menu
+++ b/Main.sublime-menu
@@ -15,7 +15,7 @@
"caption": "Settings",
"command": "edit_settings",
"args": {
- "base_file": "${packages}/A File Icon/.sublime/A File Icon.sublime-settings",
+ "base_file": "${packages}/A File Icon/A File Icon.sublime-settings",
"default": "// A File Icon Preferences – User\n// ================================================================\n{\n\t$0\n}\n"
}
},
diff --git a/PACKAGES.md b/PACKAGES.md
index d95eaf61..71000774 100644
--- a/PACKAGES.md
+++ b/PACKAGES.md
@@ -20,6 +20,10 @@ This file contains a list of possible packages you may need to install to see th
- [Ansible](https://packagecontrol.io/packages/Ansible)
+## ANTLR
+
+- [ANTLR syntax highlight](https://packagecontrol.io/packages/ANTLR%20syntax%20highlight)
+
## Arduino
- [Arduino](https://packagecontrol.io/packages/Arduino)
diff --git a/.sublime/Preferences.sublime-settings b/Preferences.sublime-settings
similarity index 100%
rename from .sublime/Preferences.sublime-settings
rename to Preferences.sublime-settings
diff --git a/build/__main__.py b/build/__main__.py
index a94cfbbe..78847ad4 100644
--- a/build/__main__.py
+++ b/build/__main__.py
@@ -16,19 +16,21 @@ def main(argv=None):
"-p", "--preferences", action="store_true", help="create preferences"
)
+ with open(icons_path("icons.json")) as fp:
+ icons = json.load(fp)
+
options = parser.parse_args(argv)
if not options.icons and not options.preferences:
- return parser.print_help()
+ options.icons = True
+ options.preferences = True
- with open(icons_path("icons.json")) as fp:
- icons = json.load(fp)
+ if options.preferences:
+ print("building preferences...")
+ create_preferences(icons)
if options.icons:
print("building icons...")
create_icons(icons)
- if options.preferences:
- print("building preferences...")
- create_preferences(icons)
if __name__ == "__main__":
diff --git a/build/icons.py b/build/icons.py
index e0752023..68052256 100644
--- a/build/icons.py
+++ b/build/icons.py
@@ -1,26 +1,10 @@
+import cairosvg
import json
import os
+import png
import re
import subprocess
-try:
- import cairosvg
-except ImportError:
- print(
- "Error: CairoSVG not installed!\n"
- " Run `pip install cairosvg`!\n"
- " Windows users need the cairo.dll from"
- " https://github.com/preshing/cairo-windows/releases"
- )
-
-try:
- import png
-except ImportError:
- print(
- "Error: pyPNG not installed!\n"
- " Run `pip install pypng`!"
- )
-
PACKAGE_ROOT = os.path.dirname(os.path.dirname(__file__))
diff --git a/core/settings.py b/core/settings.py
index 925cfa49..92e73e56 100644
--- a/core/settings.py
+++ b/core/settings.py
@@ -16,7 +16,7 @@
def add_listener():
log("Initializing settings")
- path = "Packages/{0}/.sublime/{1}".format(PACKAGE_NAME, PACKAGE_SETTINGS)
+ path = "Packages/{0}/{1}".format(PACKAGE_NAME, PACKAGE_SETTINGS)
settings = sublime.load_settings(PACKAGE_SETTINGS)
for key in sublime.decode_value(sublime.load_resource(path)).keys():
if key not in ("dev_mode", "dev_trace"):
diff --git a/icons/icons.json b/icons/icons.json
index 9bbecd87..7e871991 100644
--- a/icons/icons.json
+++ b/icons/icons.json
@@ -130,6 +130,19 @@
}
]
},
+ "file_type_antlr": {
+ "color": "orange",
+ "syntaxes": [
+ {
+ "extensions": [
+ "g",
+ "g4"
+ ],
+ "name": "Plain Text (ANTLR)",
+ "scope": "source.antlr"
+ }
+ ]
+ },
"file_type_apache": {
"color": "yellow",
"syntaxes": [
@@ -1193,6 +1206,19 @@
}
]
},
+ "file_type_glyphs": {
+ "aliases": [
+ {
+ "base": "source.plist",
+ "extensions": [
+ "glyphs"
+ ],
+ "name": "Glyphs (Property List)",
+ "scope": "source.plist.glyphs"
+ }
+ ],
+ "color": "green"
+ },
"file_type_go": {
"color": "sky",
"syntaxes": [
@@ -1224,6 +1250,27 @@
}
]
},
+ "file_type_gradle_wrapper": {
+ "aliases": [
+ {
+ "base": "source.dosbatch",
+ "extensions": [
+ "gradlew.bat"
+ ],
+ "name": "Batch File (Gradle)",
+ "scope": "source.dosbatch.gradle"
+ },
+ {
+ "base": "source.shell",
+ "extensions": [
+ "gradlew"
+ ],
+ "name": "Shell Script (Gradle)",
+ "scope": "source.shell.gradle"
+ }
+ ],
+ "color": "purple"
+ },
"file_type_graphql": {
"color": "pink",
"syntaxes": [
@@ -1360,6 +1407,19 @@
}
]
},
+ "file_type_haxelib": {
+ "aliases": [
+ {
+ "base": "source.json",
+ "extensions": [
+ "haxelib.json"
+ ],
+ "name": "JSON (Haxelib)",
+ "scope": "source.json.haxelib"
+ }
+ ],
+ "color": "red"
+ },
"file_type_heroku": {
"color": "purple",
"syntaxes": [
@@ -1410,6 +1470,18 @@
}
]
},
+ "file_type_hxml": {
+ "color": "blue",
+ "syntaxes": [
+ {
+ "extensions": [
+ "hxml"
+ ],
+ "name": "Plain Text (HXML)",
+ "scope": "source.hxml"
+ }
+ ]
+ },
"file_type_image": {
"aliases": [
{
@@ -1820,6 +1892,27 @@
],
"color": "red"
},
+ "file_type_maven_wrapper": {
+ "aliases": [
+ {
+ "base": "source.dosbatch",
+ "extensions": [
+ "mvnw.cmd"
+ ],
+ "name": "Batch File (Maven)",
+ "scope": "source.dosbatch.maven"
+ },
+ {
+ "base": "source.shell",
+ "extensions": [
+ "mvnw"
+ ],
+ "name": "Shell Script (Maven)",
+ "scope": "source.shell.maven"
+ }
+ ],
+ "color": "purple"
+ },
"file_type_maya": {
"color": "cyan",
"syntaxes": [
@@ -2006,12 +2099,20 @@
{
"base": "source.shell",
"extensions": [
- ".npmignore",
- ".npmrc"
+ ".npmignore"
],
"name": "Shell Script (NPM)",
"scope": "source.shell.npm"
},
+ {
+ "base": "source.ini",
+ "extensions": [
+ ".npmrc",
+ "npmrc"
+ ],
+ "name": "INI (NPM)",
+ "scope": "source.ini.npm"
+ },
{
"base": "source.json",
"extensions": [
@@ -2500,7 +2601,8 @@
"aliases": [
{
"extensions": [
- ".python-version"
+ ".python-version",
+ "py.typed"
],
"name": "Plain Text (Python)",
"scope": "text.plain.python"
@@ -3728,12 +3830,12 @@
"syntaxes": [
{
"extensions": [
+ "mt",
"wl",
"wls",
- "wlt",
- "mt"
+ "wlt"
],
- "name": "Text Plain (Wolfram)",
+ "name": "Plain Text (Wolfram)",
"scope": "source.wolfram"
}
]
@@ -3765,19 +3867,28 @@
"file_type_yarn": {
"aliases": [
{
- "base": "source.shell",
"extensions": [
+ ".yarnclean",
".yarnrc"
],
- "name": "Shell Script (Yarn)",
- "scope": "source.shell.yarn"
+ "name": "Plain Text (Yarn)",
+ "scope": "text.plain.yarn"
+ },
+ {
+ "base": "source.json",
+ "extensions": [
+ ".yarn-integrity",
+ ".yarn-metadata.json"
+ ],
+ "name": "JSON (Yarn)",
+ "scope": "source.json.yarn"
},
{
"base": "source.yaml",
"extensions": [
- "yarn.lock",
+ ".yarnrc.yaml",
".yarnrc.yml",
- ".yarnrc.yaml"
+ "yarn.lock"
],
"name": "YAML (Yarn)",
"scope": "source.yaml.yarn"
@@ -3785,12 +3896,34 @@
],
"color": "blue"
},
+ "file_type_yarn_wrapper": {
+ "aliases": [
+ {
+ "base": "source.dosbatch",
+ "extensions": [
+ "yarnw.cmd"
+ ],
+ "name": "Batch File (Yarn)",
+ "scope": "source.dosbatch.yarn"
+ },
+ {
+ "base": "source.shell",
+ "extensions": [
+ "yarnw"
+ ],
+ "name": "Shell Script (Yarn)",
+ "scope": "source.shell.yarn"
+ }
+ ],
+ "color": "purple"
+ },
"file_type_zig": {
"color": "yellow",
"syntaxes": [
{
"extensions": [
- "zig"
+ "zig",
+ "zon"
],
"name": "Zig",
"scope": "source.zig"
diff --git a/icons/multi/file_type_antlr.png b/icons/multi/file_type_antlr.png
new file mode 100644
index 00000000..baec627b
Binary files /dev/null and b/icons/multi/file_type_antlr.png differ
diff --git a/icons/multi/file_type_antlr@2x.png b/icons/multi/file_type_antlr@2x.png
new file mode 100644
index 00000000..518da881
Binary files /dev/null and b/icons/multi/file_type_antlr@2x.png differ
diff --git a/icons/multi/file_type_antlr@3x.png b/icons/multi/file_type_antlr@3x.png
new file mode 100644
index 00000000..280549c7
Binary files /dev/null and b/icons/multi/file_type_antlr@3x.png differ
diff --git a/icons/multi/file_type_glyphs.png b/icons/multi/file_type_glyphs.png
new file mode 100644
index 00000000..0e0cd051
Binary files /dev/null and b/icons/multi/file_type_glyphs.png differ
diff --git a/icons/multi/file_type_glyphs@2x.png b/icons/multi/file_type_glyphs@2x.png
new file mode 100644
index 00000000..04b9cede
Binary files /dev/null and b/icons/multi/file_type_glyphs@2x.png differ
diff --git a/icons/multi/file_type_glyphs@3x.png b/icons/multi/file_type_glyphs@3x.png
new file mode 100644
index 00000000..ae027bc0
Binary files /dev/null and b/icons/multi/file_type_glyphs@3x.png differ
diff --git a/icons/multi/file_type_gradle_wrapper.png b/icons/multi/file_type_gradle_wrapper.png
new file mode 100644
index 00000000..c4e4b709
Binary files /dev/null and b/icons/multi/file_type_gradle_wrapper.png differ
diff --git a/icons/multi/file_type_gradle_wrapper@2x.png b/icons/multi/file_type_gradle_wrapper@2x.png
new file mode 100644
index 00000000..edf81d3c
Binary files /dev/null and b/icons/multi/file_type_gradle_wrapper@2x.png differ
diff --git a/icons/multi/file_type_gradle_wrapper@3x.png b/icons/multi/file_type_gradle_wrapper@3x.png
new file mode 100644
index 00000000..8d579fd2
Binary files /dev/null and b/icons/multi/file_type_gradle_wrapper@3x.png differ
diff --git a/icons/multi/file_type_haxe.png b/icons/multi/file_type_haxe.png
index 51a58998..02a346f5 100644
Binary files a/icons/multi/file_type_haxe.png and b/icons/multi/file_type_haxe.png differ
diff --git a/icons/multi/file_type_haxe@2x.png b/icons/multi/file_type_haxe@2x.png
index 1b53d667..b6b2e9da 100644
Binary files a/icons/multi/file_type_haxe@2x.png and b/icons/multi/file_type_haxe@2x.png differ
diff --git a/icons/multi/file_type_haxelib.png b/icons/multi/file_type_haxelib.png
new file mode 100644
index 00000000..79244476
Binary files /dev/null and b/icons/multi/file_type_haxelib.png differ
diff --git a/icons/multi/file_type_haxelib@2x.png b/icons/multi/file_type_haxelib@2x.png
new file mode 100644
index 00000000..c396bdef
Binary files /dev/null and b/icons/multi/file_type_haxelib@2x.png differ
diff --git a/icons/multi/file_type_haxelib@3x.png b/icons/multi/file_type_haxelib@3x.png
new file mode 100644
index 00000000..1062d550
Binary files /dev/null and b/icons/multi/file_type_haxelib@3x.png differ
diff --git a/icons/multi/file_type_hxml.png b/icons/multi/file_type_hxml.png
new file mode 100644
index 00000000..bb7882a4
Binary files /dev/null and b/icons/multi/file_type_hxml.png differ
diff --git a/icons/multi/file_type_hxml@2x.png b/icons/multi/file_type_hxml@2x.png
new file mode 100644
index 00000000..d1c27a68
Binary files /dev/null and b/icons/multi/file_type_hxml@2x.png differ
diff --git a/icons/multi/file_type_hxml@3x.png b/icons/multi/file_type_hxml@3x.png
new file mode 100644
index 00000000..13312807
Binary files /dev/null and b/icons/multi/file_type_hxml@3x.png differ
diff --git a/icons/multi/file_type_maven_wrapper.png b/icons/multi/file_type_maven_wrapper.png
new file mode 100644
index 00000000..003c4178
Binary files /dev/null and b/icons/multi/file_type_maven_wrapper.png differ
diff --git a/icons/multi/file_type_maven_wrapper@2x.png b/icons/multi/file_type_maven_wrapper@2x.png
new file mode 100644
index 00000000..5dc29245
Binary files /dev/null and b/icons/multi/file_type_maven_wrapper@2x.png differ
diff --git a/icons/multi/file_type_maven_wrapper@3x.png b/icons/multi/file_type_maven_wrapper@3x.png
new file mode 100644
index 00000000..0e96eb1d
Binary files /dev/null and b/icons/multi/file_type_maven_wrapper@3x.png differ
diff --git a/icons/multi/file_type_yarn_wrapper.png b/icons/multi/file_type_yarn_wrapper.png
new file mode 100644
index 00000000..dd2342bc
Binary files /dev/null and b/icons/multi/file_type_yarn_wrapper.png differ
diff --git a/icons/multi/file_type_yarn_wrapper@2x.png b/icons/multi/file_type_yarn_wrapper@2x.png
new file mode 100644
index 00000000..3f845362
Binary files /dev/null and b/icons/multi/file_type_yarn_wrapper@2x.png differ
diff --git a/icons/multi/file_type_yarn_wrapper@3x.png b/icons/multi/file_type_yarn_wrapper@3x.png
new file mode 100644
index 00000000..51221fcd
Binary files /dev/null and b/icons/multi/file_type_yarn_wrapper@3x.png differ
diff --git a/icons/single/file_type_antlr.png b/icons/single/file_type_antlr.png
new file mode 100644
index 00000000..acc23b54
Binary files /dev/null and b/icons/single/file_type_antlr.png differ
diff --git a/icons/single/file_type_antlr@2x.png b/icons/single/file_type_antlr@2x.png
new file mode 100644
index 00000000..168e5bd9
Binary files /dev/null and b/icons/single/file_type_antlr@2x.png differ
diff --git a/icons/single/file_type_antlr@3x.png b/icons/single/file_type_antlr@3x.png
new file mode 100644
index 00000000..4173c587
Binary files /dev/null and b/icons/single/file_type_antlr@3x.png differ
diff --git a/icons/single/file_type_glyphs.png b/icons/single/file_type_glyphs.png
new file mode 100644
index 00000000..a150822c
Binary files /dev/null and b/icons/single/file_type_glyphs.png differ
diff --git a/icons/single/file_type_glyphs@2x.png b/icons/single/file_type_glyphs@2x.png
new file mode 100644
index 00000000..7886d178
Binary files /dev/null and b/icons/single/file_type_glyphs@2x.png differ
diff --git a/icons/single/file_type_glyphs@3x.png b/icons/single/file_type_glyphs@3x.png
new file mode 100644
index 00000000..e75565b4
Binary files /dev/null and b/icons/single/file_type_glyphs@3x.png differ
diff --git a/icons/single/file_type_gradle_wrapper.png b/icons/single/file_type_gradle_wrapper.png
new file mode 100644
index 00000000..4eaa6d69
Binary files /dev/null and b/icons/single/file_type_gradle_wrapper.png differ
diff --git a/icons/single/file_type_gradle_wrapper@2x.png b/icons/single/file_type_gradle_wrapper@2x.png
new file mode 100644
index 00000000..73832b34
Binary files /dev/null and b/icons/single/file_type_gradle_wrapper@2x.png differ
diff --git a/icons/single/file_type_gradle_wrapper@3x.png b/icons/single/file_type_gradle_wrapper@3x.png
new file mode 100644
index 00000000..974be1df
Binary files /dev/null and b/icons/single/file_type_gradle_wrapper@3x.png differ
diff --git a/icons/single/file_type_haxe.png b/icons/single/file_type_haxe.png
index 3cbd9f42..84aebe54 100644
Binary files a/icons/single/file_type_haxe.png and b/icons/single/file_type_haxe.png differ
diff --git a/icons/single/file_type_haxe@2x.png b/icons/single/file_type_haxe@2x.png
index 01611d21..3ff2afc5 100644
Binary files a/icons/single/file_type_haxe@2x.png and b/icons/single/file_type_haxe@2x.png differ
diff --git a/icons/single/file_type_haxelib.png b/icons/single/file_type_haxelib.png
new file mode 100644
index 00000000..00884939
Binary files /dev/null and b/icons/single/file_type_haxelib.png differ
diff --git a/icons/single/file_type_haxelib@2x.png b/icons/single/file_type_haxelib@2x.png
new file mode 100644
index 00000000..43ed0157
Binary files /dev/null and b/icons/single/file_type_haxelib@2x.png differ
diff --git a/icons/single/file_type_haxelib@3x.png b/icons/single/file_type_haxelib@3x.png
new file mode 100644
index 00000000..073f9b7d
Binary files /dev/null and b/icons/single/file_type_haxelib@3x.png differ
diff --git a/icons/single/file_type_hxml.png b/icons/single/file_type_hxml.png
new file mode 100644
index 00000000..84aebe54
Binary files /dev/null and b/icons/single/file_type_hxml.png differ
diff --git a/icons/single/file_type_hxml@2x.png b/icons/single/file_type_hxml@2x.png
new file mode 100644
index 00000000..3ff2afc5
Binary files /dev/null and b/icons/single/file_type_hxml@2x.png differ
diff --git a/icons/single/file_type_hxml@3x.png b/icons/single/file_type_hxml@3x.png
new file mode 100644
index 00000000..f3270063
Binary files /dev/null and b/icons/single/file_type_hxml@3x.png differ
diff --git a/icons/single/file_type_maven_wrapper.png b/icons/single/file_type_maven_wrapper.png
new file mode 100644
index 00000000..3d491412
Binary files /dev/null and b/icons/single/file_type_maven_wrapper.png differ
diff --git a/icons/single/file_type_maven_wrapper@2x.png b/icons/single/file_type_maven_wrapper@2x.png
new file mode 100644
index 00000000..53d3a71a
Binary files /dev/null and b/icons/single/file_type_maven_wrapper@2x.png differ
diff --git a/icons/single/file_type_maven_wrapper@3x.png b/icons/single/file_type_maven_wrapper@3x.png
new file mode 100644
index 00000000..e1991d62
Binary files /dev/null and b/icons/single/file_type_maven_wrapper@3x.png differ
diff --git a/icons/single/file_type_yarn_wrapper.png b/icons/single/file_type_yarn_wrapper.png
new file mode 100644
index 00000000..ca198045
Binary files /dev/null and b/icons/single/file_type_yarn_wrapper.png differ
diff --git a/icons/single/file_type_yarn_wrapper@2x.png b/icons/single/file_type_yarn_wrapper@2x.png
new file mode 100644
index 00000000..edcc9ae2
Binary files /dev/null and b/icons/single/file_type_yarn_wrapper@2x.png differ
diff --git a/icons/single/file_type_yarn_wrapper@3x.png b/icons/single/file_type_yarn_wrapper@3x.png
new file mode 100644
index 00000000..b424feff
Binary files /dev/null and b/icons/single/file_type_yarn_wrapper@3x.png differ
diff --git a/icons/svg/file_type_antlr.svg b/icons/svg/file_type_antlr.svg
new file mode 100644
index 00000000..62e4df32
--- /dev/null
+++ b/icons/svg/file_type_antlr.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/svg/file_type_glyphs.svg b/icons/svg/file_type_glyphs.svg
new file mode 100644
index 00000000..75c10b39
--- /dev/null
+++ b/icons/svg/file_type_glyphs.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/svg/file_type_gradle_wrapper.svg b/icons/svg/file_type_gradle_wrapper.svg
new file mode 100644
index 00000000..e9791304
--- /dev/null
+++ b/icons/svg/file_type_gradle_wrapper.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/svg/file_type_haxe.svg b/icons/svg/file_type_haxe.svg
index 81ead037..926b86f2 100644
--- a/icons/svg/file_type_haxe.svg
+++ b/icons/svg/file_type_haxe.svg
@@ -1,3 +1,3 @@
diff --git a/icons/svg/file_type_haxelib.svg b/icons/svg/file_type_haxelib.svg
new file mode 100644
index 00000000..aabbb4b7
--- /dev/null
+++ b/icons/svg/file_type_haxelib.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/svg/file_type_hxml.svg b/icons/svg/file_type_hxml.svg
new file mode 100644
index 00000000..926b86f2
--- /dev/null
+++ b/icons/svg/file_type_hxml.svg
@@ -0,0 +1,3 @@
+
diff --git a/icons/svg/file_type_maven_wrapper.svg b/icons/svg/file_type_maven_wrapper.svg
new file mode 100644
index 00000000..41f3e85a
--- /dev/null
+++ b/icons/svg/file_type_maven_wrapper.svg
@@ -0,0 +1,9 @@
+
diff --git a/icons/svg/file_type_yarn_wrapper.svg b/icons/svg/file_type_yarn_wrapper.svg
new file mode 100644
index 00000000..2b6f2349
--- /dev/null
+++ b/icons/svg/file_type_yarn_wrapper.svg
@@ -0,0 +1,3 @@
+
diff --git a/makefile b/makefile
deleted file mode 100644
index 20d0a350..00000000
--- a/makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-all:
- python build -i -p
-
-icons:
- python build -i
-
-preferences:
- python build -p
-
-check:
- black --check .
diff --git a/preferences/file_type_antlr.tmPreferences b/preferences/file_type_antlr.tmPreferences
new file mode 100644
index 00000000..c19f007f
--- /dev/null
+++ b/preferences/file_type_antlr.tmPreferences
@@ -0,0 +1,12 @@
+
+
+
+ scope
+ source.antlr
+ settings
+
+ icon
+ file_type_antlr
+
+
+
diff --git a/preferences/file_type_glyphs.tmPreferences b/preferences/file_type_glyphs.tmPreferences
new file mode 100644
index 00000000..dc154807
--- /dev/null
+++ b/preferences/file_type_glyphs.tmPreferences
@@ -0,0 +1,12 @@
+
+
+
+ scope
+ source.plist.glyphs
+ settings
+
+ icon
+ file_type_glyphs
+
+
+
diff --git a/preferences/file_type_gradle_wrapper.tmPreferences b/preferences/file_type_gradle_wrapper.tmPreferences
new file mode 100644
index 00000000..30894262
--- /dev/null
+++ b/preferences/file_type_gradle_wrapper.tmPreferences
@@ -0,0 +1,12 @@
+
+
+
+ scope
+ source.dosbatch.gradle, source.shell.gradle
+ settings
+
+ icon
+ file_type_gradle_wrapper
+
+
+
diff --git a/preferences/file_type_haxelib.tmPreferences b/preferences/file_type_haxelib.tmPreferences
new file mode 100644
index 00000000..475d43d4
--- /dev/null
+++ b/preferences/file_type_haxelib.tmPreferences
@@ -0,0 +1,12 @@
+
+
+
+ scope
+ source.json.haxelib
+ settings
+
+ icon
+ file_type_haxelib
+
+
+
diff --git a/preferences/file_type_hxml.tmPreferences b/preferences/file_type_hxml.tmPreferences
new file mode 100644
index 00000000..1e890beb
--- /dev/null
+++ b/preferences/file_type_hxml.tmPreferences
@@ -0,0 +1,12 @@
+
+
+
+ scope
+ source.hxml
+ settings
+
+ icon
+ file_type_hxml
+
+
+
diff --git a/preferences/file_type_maven_wrapper.tmPreferences b/preferences/file_type_maven_wrapper.tmPreferences
new file mode 100644
index 00000000..d0d348c4
--- /dev/null
+++ b/preferences/file_type_maven_wrapper.tmPreferences
@@ -0,0 +1,12 @@
+
+
+
+ scope
+ source.dosbatch.maven, source.shell.maven
+ settings
+
+ icon
+ file_type_maven_wrapper
+
+
+
diff --git a/preferences/file_type_npm.tmPreferences b/preferences/file_type_npm.tmPreferences
index e0596405..d2757ebc 100644
--- a/preferences/file_type_npm.tmPreferences
+++ b/preferences/file_type_npm.tmPreferences
@@ -2,7 +2,7 @@
scope
- source.json.npm, source.shell.npm
+ source.ini.npm, source.json.npm, source.shell.npm
settings
icon
diff --git a/preferences/file_type_yarn.tmPreferences b/preferences/file_type_yarn.tmPreferences
index 8872d034..436ff199 100644
--- a/preferences/file_type_yarn.tmPreferences
+++ b/preferences/file_type_yarn.tmPreferences
@@ -2,7 +2,7 @@
scope
- source.shell.yarn, source.yaml.yarn
+ source.json.yarn, source.yaml.yarn, text.plain.yarn
settings
icon
diff --git a/preferences/file_type_yarn_wrapper.tmPreferences b/preferences/file_type_yarn_wrapper.tmPreferences
new file mode 100644
index 00000000..a2205b04
--- /dev/null
+++ b/preferences/file_type_yarn_wrapper.tmPreferences
@@ -0,0 +1,12 @@
+
+
+
+ scope
+ source.dosbatch.yarn, source.shell.yarn
+ settings
+
+ icon
+ file_type_yarn_wrapper
+
+
+
diff --git a/pyproject.toml b/pyproject.toml
index 0951d711..7c3b7446 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -7,7 +7,7 @@ exclude = '''
| \.mypy_cache
| \.tox
| \.venv
- | build
+ | tests
| vendor
)/
'''
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 00000000..10220a04
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,8 @@
+pip
+
+# Build
+cairosvg >= 2.7.0
+pypng >= 0.20220715.0
+
+# Format
+black >= 23.7.0
diff --git a/tests/.yarn-integrity b/tests/.yarn-integrity
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/.yarn-metadata.json b/tests/.yarn-metadata.json
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/.yarnclean b/tests/.yarnclean
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/build.zig b/tests/build.zig
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/build.zig.zon b/tests/build.zig.zon
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/file_type_antlr.g b/tests/file_type_antlr.g
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/file_type_antlr.g4 b/tests/file_type_antlr.g4
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/file_type_glyphs.glyphs b/tests/file_type_glyphs.glyphs
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/file_type_hxml.hxml b/tests/file_type_hxml.hxml
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/file_type_zon.zon b/tests/file_type_zon.zon
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/gradlew b/tests/gradlew
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/gradlew.bat b/tests/gradlew.bat
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/haxelib.json b/tests/haxelib.json
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/mvnw b/tests/mvnw
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/mvnw.cmd b/tests/mvnw.cmd
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/npmrc b/tests/npmrc
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/py.typed b/tests/py.typed
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/yarnw b/tests/yarnw
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/yarnw.cmd b/tests/yarnw.cmd
new file mode 100644
index 00000000..e69de29b