Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
Visual Studio Code와 Cursor에 Groovy·Grails·GSP 언어 지원 추가
Add Groovy, Grails and GSP language support to Visual Studio Code and Cursor
AI가 요약 · README에서
플러그인TypeScriptGitHub @code-groovy직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
로그인 상태를 확인하는 중입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Groovy, Grails and GSP language support for Visual Studio Code and Cursor.
• Go to Definition (Ctrl/Cmd + click, or F12) for Groovy classes, methods, services and inherited methods, resolving both workspace sources and the Gradle/Maven JAR classpath — including source JARs when they are available locally.
• TagLib navigation across files: jump from catalogTagLib.method or namespace.method in Groovy, and from or ns.method in GSP, straight to the TagLib closure that defines it. Works for Groovy inside ${...} and blocks too.README 전문 보기 ↗Groovy, Grails and GSP language support for Visual Studio Code and Cursor.
Ctrl/Cmd + click, or F12) for Groovy classes, methods, services and inherited methods, resolving both workspace sources and the Gradle/Maven JAR classpath — including source JARs when they are available locally.catalogTagLib.method or namespace.method in Groovy, and from <ns:tag> or ns.method in GSP, straight to the TagLib closure that defines it. Works for Groovy inside ${...} and <%...%> blocks too.Ctrl/Cmd + click on template=, src= or url= in g:render and asset:* tags. The full attribute value is underlined, and .scss sources are preferred over compiled .css.Ctrl/Cmd + click on the controller, action or view of createLink, redirect, render, <g:link>, <g:form> and similar calls and tags opens the controller class, the action method (including actions inherited from a base controller) or the GSP view. Without a controller, the current controller is used — the controller file itself, or the views/<controller>/ folder of a GSP.def myTag = { ... }) and methods with generic return types such as Map or List<Map>.Pet stay above longer JAR names such as PetProfileDTO.receiver.) following the same Grails artifact hierarchy used by Go to Definition.g: and Asset Pipeline asset: tags, with hover documentation linking to the legacy GSP reference.namespace: or namespace., inferring self-closing versus body tags from whether the closure calls body().F2) for identifiers within the current Groovy file, skipping comments and strings.identifier / number is treated as division, while = /regex/ still highlights as a slashy string.[ and ]..gsp, configured so Emmet does not hijack g.each or your own namespace.method completions.bootRun/run with JDWP on the app JVM, or attach to a JVM already listening (default port 5005). Breakpoints in .groovy files are supported (uses the bundled Java debug extensions).| Command | ID | Keybinding |
|---|---|---|
| Debug Groovy / Grails Application | cgroovy.debugApp | — |
| Organize imports | cgroovy.organizeImports | Cmd+Shift+O / Ctrl+Shift+O |
| Organize dependences | cgroovy.organizeDependences | Cmd+Shift+D / Ctrl+Shift+D |
| Rebuild Code Groovy Index | cgroovy.rebuildIndex | — |
| Show Code Groovy Index Output | cgroovy.showIndexOutput | — |
Keybindings are active only while a .groovy or .gsp editor has focus.
| Setting | Default | Description |
|---|---|---|
codeGroovy.debug.attachTimeoutMs | 600000 | How long to wait for Gradle bootRun and the app JVM to open a JDWP port before giving up. |
codeGroovy.debug.gradleConsole | rich | Gradle console mode in the Groovy Debug terminal (rich = colors, plain = no ANSI). |
codeGroovy.index.maxSourceFiles | 0 | Maximum workspace .groovy / .java files to index when Grails module detection is not in use. 0 means no limit. |
codeGroovy.modules | ["domain", "web", "api"] | Gradle submodules to index when a settings.gradle is found. |
codeGroovy.importOrder.warnings | true | Warn in Problems when imports are out of order (same order as Organize imports). Set false to turn off those warnings only. |
Requires the Java extensions listed under Requirements (installed as dependencies). Code Groovy starts or attaches to the JVM; Debugger for Java owns stepping, variables and the call stack.
.groovy source../gradlew :web:bootRun in a Grails multi-module repo (bootRun at the root for a single module, run for Micronaut/plain Gradle), injects JDWP on the app JavaExec, waits for Listening for transport dt_socket, then attaches. Gradle output stays in the Groovy Debug integrated terminal (ANSI colors via --console=rich by default). A progress notification and status bar follow Gradle tasks (:web:compileGroovy → debug port → application running).5005).When the debugger stops in a Gradle copy under bin/default (common in Grails multi-module projects), Code Groovy remaps the stack frame to the matching grails-app / src file you edit.
Hover and the Watch view evaluate Grails implicits as Java (GrailsWebRequest.lookup().getParams(), params.id → .get("id")) so they work on Groovy stack frames. params / session / request / flash are also injected at the top of Locals when available.
Optional launch.json fields: port, task, module, gradleArgs, sourcePaths, projectName, serverUrl, openBrowserOnReady. For attach, use hostName and port. projectName is the Java project Debugger for Java uses to evaluate expressions (auto-detected as the Gradle module, usually web). Source directories under grails-app and src/main/groovy are detected automatically.
While a Groovy or GSP editor is focused, Cmd/Ctrl+Shift+D is bound to Organize dependences, not the Run and Debug view — use the Command Palette or rebind the key.
Visual Studio Code 1.74.0 or newer, or any recent Cursor build.
The extension declares these dependencies in package.json (Marketplace / Cursor install them together with Code Groovy):
vscode.html-language-features) — built into VS Code/Cursor; GSP/Emmet supportredhat.java)vscjava.vscode-java-debug) — required for Groovy/Grails debug (breakpoints, variables, step)Syntax highlighting, snippets and GSP support work once Code Groovy is installed. Auto-import and go-to-definition against third-party libraries additionally require a populated Gradle or Maven cache on the machine. Resolution is more precise when source JARs have been downloaded.
.gsp are not supported.Cmd/Ctrl+Shift+O) and Run and Debug view (Cmd/Ctrl+Shift+D) while a Groovy or GSP file is focused. Rebind them in Keyboard Shortcuts if you prefer the defaults.codeGroovy.modules, or cap it with codeGroovy.index.maxSourceFiles.git clone https://github.com/code-groovy/code-groovy.git
cd code-groovy
npm install
npm run compile # or: npm run watch
Press F5 in VS Code to launch an Extension Development Host with the extension loaded.
npm run test:unit # unit tests (fast, no editor required)
npm test # unit tests + integration tests in a VS Code instance
npx vsce package # build a .vsix
This is an open source project open to anyone, and contributions are extremely welcome. Read the contributing guide to set up the project and open your first pull request.
Report any problems you face on the issue tracker, and ask questions in Discussions.
Licensed under the MIT License.
Lots of help from vscode-sort-lines.
Groovy symbol support based on vscode-groovy.