Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

GriddyCode

Coding has never been more lit!

preview.mp4

P.S. Press CTRL + I for a quick introduction in the Editor :)

Table of Contents

Requirements

RequirementNotes
Nerdfont - we use Nerdfont for the file picker.You'll know it's missing when your icons look like "□"
Linux - GriddyCode is tested mainly on LinuxNo, macOS won't be supported. Gaming OS works.

⌨️ Lua modding

GriddyCode allows you to extend its functionality via Lua.

Where?

To open the folder with Lua scripts, go to:

  • Windows: %APPDATA%\Godot\app_userdata\Bussin GriddyCode
  • macOS: ~/Library/Application Support/Bussin GriddyCode
  • Linux: ~/.local/share/godot/app_userdata/Bussin GriddyCode

Note: the paths are not accurate, we recommend you manually search for GriddyCode in the AppData of your OS.

How?

You may see the folders "langs" and "themes".

  • "langs" holds a bunch of .lua files that power GriddyCode's syntax highlighting & autocomplete.
  • "themes" holds a bunch of .lua files that change GriddyCode's appearance.

Note: the Lua scripts are reloaded only if you switch from a different file extension (i.e. "README.md" -> "main.ts"), or if GriddyCode is restarted.

Docs?

Langs

Introduction

To extend the functionality of GriddyCode for a specific file extension, create a file with its name. (i.e. toml.lua)

Methods

MethodExampleDescriptionNotes
highlight(keyword: String, color: String)highlight("const", "reserved")Tells GriddyCode to highlight a certain keyword with a preset of colors.Available colors: reserved, annotation, string, binary, symbol, variable, operator, comments, error, function, member
highlight_region(start: String, end: String, color: String, line_only: bool = false)highlight("/*", "*/", "comments", false)Tells GriddyCode to highlight a region with a preset of colors.The start must be a symbol. Due to Godot's limited functionality, you can't use RegEx.
add_comment(comment: String)add_comment("What is blud doing 🗣️🗣️🗣️")Adds a comment to be randomly chosen in the CTRL + L menu.The username, profile picture, date, and likes are chosen by GriddyCode.
detect_functions(content: String, line: int, column: int) -> Array[String]detect_functions("const test = 3; function main() {}; async init() => { main() }")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["main", "init"]). "line" and "column" are the position of the cursor when the autocomplete was requested.
detect_variables(content: String, line: int, column: int) -> Array[String]detect_variables("const test = 3;")Called by GriddyCode upon input. Results are showed in the autocomplete feature.This must be provided by the Lua script. It must return an array of strings (i.e. ["test"]). "line" and "column" are the position of the cursor when the autocomplete was requested.

Note: to provide reserved variables/functions (i.e. Math/parseInt() in JS) you can have them already set up in the array you return. GriddyCode will handle the rest!

Themes

Introduction

To add a theme, create a file in the "themes" folder with any name. (i.e. "dracula.lua"). You will be able to choose it within GriddyCode.

Methods

MethodExampleDescriptionNotes
set_keywords(property: String, new_color: String)set_keywords("reserved", "#ff00ff")Set the color of syntax highlighting.The second argument must be a hex, # being optional. Available colors/properties listed above at langs.
set_gui(property: String, new_color: String)set_gui("background_color", "#ff00ff")This method is dedicated to the overall GUI aspect of GriddyCode.Available properties: background_color, current_line_color, selection_color, font_color, word_highlighted_color, selection_background_color. Properties except background_color, if not provided, will be set to a slightly modified version of background_color. Although possible, we don't recommend you rely on those & instead set all the values.
disable_glow()disable_glow()Disables the "glow" setting.This exists because Godot's glow seems to mess up on light colors. Not adding this on light themes may result in the entire screen going white.

Note: if the HEX you input is invalid, it will default to #ff0000 (red)

Publishing

If you want to use a theme/plugin for yourself, you can put it into your AppData.

If you want to submit a theme/plugin, open a pull request adding it to Lua/Plugins or Lua/Themes respectively. If merged, it will be included in the next build.

Contributions

Contributions are heavily appreciated, whether it's for adding Lua plugins, themes, safely exposing more features to Lua, or adding features directly to GriddyCode!

Notice

  • You will need to install the Godot Engine to run your proposed change & make sure it runs flawlessly.
  • You don't have to submit executables.
  • Use the v4.2 of the engine (currently Latest)

🐛 Current bugs/needed features:

HIGH PRIORITY

  • The VHS & CRT shader, on certain themes (One Dark Pro, GitHub Light, etc.), becomes completely white. Works good on GitHub Dark;
  • Light modes get affected by glow, while dark modes seem fine.

MEDIUM PRIORITY

  • An option in the settings menu (CTRL + ,) to change the font;
  • The current limit for lines is ~1600. If the cursor moves past that amount, the CodeEdit node will activate its scrolling, making the camera bug & go out of view. A limit should be implemented so that the camera won't go out of screen.

LOW PRIORITY

  • Making the cat jumping video in the settings menu fade in/out along the actual menu. Currently it ignores the transition;
  • CTRL + P to open a quick file picker, similar to VSCode.
  • Selecting a setting with the property "shader" should disable previously-enabled settings with "shader".
  • The CheckButton node for each setting scene doesn't change with the theme. This affects light themes specifically.

Please note that creating a Pull Request to fix these features does not guarantee its merge. Please don't open a Pull Request unless you are confident you've done a good job.

About

A code editor made with Godot. Code has never been more lit!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages