Code Monkey home page Code Monkey logo

source-engine-vscode-extension's Introduction

Source Engine Support for Vscode

CI Test contributions welcome Release

VSCODE ESLINT TYPESCRIPT NODE.JS

Visual Studio Marketplace - OpenVSX Registry

Discord - Bugs


This extension adds intelligent syntax highlighting and additional tooling for Source Engine file formats.

Syntax highlighting

Available for:

  • KeyValue files
    • .vdf .res .acf .kv .vmf .vmm .vmx
    • .txt files can be auto-detected as being KV files
  • .vmt
  • .fgd
  • .qc
  • .cfg
  • lights.rad
  • .vpc, .vgc
  • .smd
  • .fxc and _fxc.h

Syntax highlighting in vmt files

In-Editor compilation

Instead of juggling standalone tools or CLI programs, simply compile model (.qc) and captions (subtitles_english.txt) right inside of the extension.

Compile button

KeyValue file auto-detection

In Source, many KeyValue files are saved with a .txt extension. Since not all .txt files should be treated as KeyValue files, this extension can auto-detect KeyValue files which end in .txt. Instead, KeyValue files are matched using a list of common keyvalue file names. (e.g.: gameinfo.txt, game_sounds_*.txt, subtitles_engish.txt...)

Full feature list

Here's a list of all the things that are implemented in this extension

General

  • KeyValue syntax highlighting
  • KeyValue semantic highlighting
  • Auto-detect common file names like gameinfo.txt
  • Semantic Tokenizer
  • Error detection
  • Duplicate key detection
  • Support for #include and #base
  • Support for conditionals (e.g.: [$Debug])

VMT

  • .vmt syntax highlighting
  • .vmt semantic highlighting with error detection and completions
  • Parameter name completion
  • Config for parameters
  • Parameter value completion
  • Parameter value validation dependent on parameter name
  • Texture (vtf) file path completion and missing file detection
  • Color value preview

FGD

  • .fgd syntax highlighting
  • UnifyFGD syntax support (Hammer Addons)

QC

  • QC syntax highlighting
  • Compile model button
    • Configuration for mdlcompile.exe
    • Configuration for game root path

Captions

  • Captions syntax highlighting
  • Captions markup highlighting (I, B, clr tags...)
  • Captions color preview (clr tags)
  • In-editor Compile captions button

CFG

  • .cfg syntax highlighting

VPC

  • .vpc and .vgc syntax highlighting

Lights.rad

  • .rad file syntax highlighting

Soundscripts

  • Soundscript syntax highlighting
  • Soundscript snippets

SMD

  • .smd syntax highlighting

FXC

  • .fxc syntax highlighting
  • _fxc.h syntax highlighting (Shader header files)

Sourcelib

This extension implements the features seen in sourcelib.

Contributing

This repository uses trunk based development, which means that all changes can be pushed straight to master. Every commit is automatically tested via the CI pipeline. Once a new version tag is pushed, the release is deployed.

As an outside contributor, please create your pull requests to merge to the master branch. Do not edit changelog.md or the feature listings in readme.md as the changelog will be handled later when releasing.

Make sure all workflows succeed. To validate locally:

npm run lint
npm run test

Compiling and testing locally

Users can just install this extension on the VSCode Marketplace, but developers might want to run the development build of the extension.

Prerequisites

  1. Install NPM and NodeJS (>v12)
  2. Install Visual Studio Code (Duh)
  3. Clone the repository
  4. Run npm install in the repository's folder, to install the dependencies

Testing

To start the unit tests, run npm run test. The project will be automatically compiled.

Benchmarking

To run the benchmark tests, run npm run benchmark. The project will be automatically compiled

Running the extension

  1. To start the extension, first compile the project npm run build (Or npm run watch to auto-compile on every file change)
  2. Open the repository in VSCode
  3. Open the 'Run and Debug' tab
  4. Select the 'Extension' run configuration on the dropdown on the top
  5. Run by pressing F5

License

This project is licensed under the GNU Public License version 3: License

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.