Code Monkey home page Code Monkey logo

vscode-quakec's People

Contributors

dependabot[bot] avatar joshuaskelly avatar paril avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

vscode-quakec's Issues

Bundle Extension Files

Summary

Running vsce package generate the following warning:

This extension consists of 5074 files, out of which 2836 are JavaScript files. For performance reasons, you should bundle your extension: https://aka.ms/vscode-bundle-extension . You should also exclude unnecessary files by adding them to your .vscodeignore: https://aka.ms/vscode-vscodeignore

We probably should bundle the files as suggested.

Notes

Need way to resolve ranges from the beginning to the end of a matched piece of grammar

A fully resolved piece of grammar should, somehow, have a neatly defined beginning and end. For instance, given this code:

local float x = 5.0;

or:

void() x = { return true; }

there needs to be a way to get the full "start" and "end" ranges of these. Each of the symbols have their own range, but there's no quick way (without stepping backwards/forwards through the syntax tree) to find what belongs to x as a full symbol.

Does not respect case sensitive file systems

Opening the folder Development/quake/ArcaneDimensions parses the code and finishes, populating a list of problems. When clicking any of the warnings it tries to open a file that doesn't exist. If I chose to create this file it will be created at development/quake/arcanedimensions all lower case. If I move the source directory to a path that is lower case all the way, jumping to problems works as expected.

Linux issue

I have a space in a directory name, so I get:
Request initialize failed with message: ENOENT: no such file or directory, scandir '/home/lordy/Code/Quake%20Repos/tf-qwprogs-rewrite'

[DRAFT] Support for MODELGEN Commands

Summary

Provide robust support for MODELGEN commands (called commands in this document for brevity). Specifically the $frame command, which defines names in the scope.

1. Specifications

A command is:

  1. A line of QuakeC source that begins with the character $
  2. Typically a single line, but can be multiline.
  3. May be followed by 0-n arguments.
  4. Is considered an error if not recognized.

1.1. $frame Command

  1. Is a single line command.
  2. Takes 0-n name arguments.
  3. Creates a frame macro for each given name.

1.2. Frame Macros

  1. May only be an rvalue.
  2. Is of float type.
  3. May be defined multiple times.

2. Proposal

TODO: Complete proposal

3. Examples

3.1 Basic Definition

$frame macro1 macro2

Defines two constants $macro1 and $macro2

3.2 Basic RValue Usages

$frame macro1 macro2

void() f = {
    local float x = $macro1;
    local float y = $macro1 + 1;
};

Valid usages as an rvalue.

3.3 Duplicate Frame Macro Names

$frame macro1 macro2 macro2

Should warn about duplicate name $macro2.

3.4 Using Frame Macro Incorrectly as a Definition

$frame macro1 macro2
$macro1 = 2

Should treat $macro1 as an unknown modelgen command and discard it.

3.5 Using Frame Macro Incorrectly as a Statement

$frame macro1 macro2

void() f = {
    $macro1 = 2;
}

Should give an error, complaining that $macro1 is a const value and cannot be assigned.

4. References

Fix Packaging Issue

Summary

The extension does not work when packaged. @Paril has a hunch it has to do with how the parser module is included in the project.

cannot read property "id" of undefined

in Arcane Dimensions' source, mon_soldier.qc:

void()	army_load2	=[	$load2,	army_load3	] {ai_trackenemy();};
void() <---	army_load3	=[	$load3,	army_load4	] {ai_trackenemy();};

the "void" is highlighted as "Undefined." error; I think this is valid standard qcc?

Remove Unused Settings Option

Summary

We inherited quakec.maxNumberOfProblems from the LSP sample project. We should either use it, or remove it.

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.