bang for VS Code
bang 언어의 VS Code 지원 —
문법 하이라이팅, 오류 검사, 자동완성, 실행 명령.
bang은 순차적으로 쓰면 병렬로 실행되는 동적 타입 스크립트 언어다.
async/await 색칠 없음, GIL 없음, 락 없음 — spawn 한 단어가 동시성의 전부.
기능
| 기능 |
설명 |
| 오류 검사(진단) |
입력이 멈추면 bang check를 돌려 파스·리졸브·타입 오류를 Problems 패널과 밑줄로 표시. 저장 전 내용도 검사한다. |
| 자동완성 |
빌트인 109개(시그니처·설명), 키워드, 문서 내 fn/let 정의. 타입 힌트 자리에서는 타입 이름만. |
| 호버 |
빌트인·키워드 설명, 지역 정의는 선언 줄 미리보기. |
| 시그니처 도움말 |
호출 괄호 안에서 인자 목록과 현재 인자 강조. |
| 아웃라인 · 정의로 이동 |
⇧⌘O 심볼 목록, F12 정의로 이동. |
| 문법 하이라이팅 |
키워드(spawn/parallel/try/catch…), 빌트인, 타입 힌트(: int, -> int), 문자열·숫자·주석. |
| 스니펫 |
fn try for spawn parallel pmap fanout server serve json … |
| 명령 |
파일 실행(⌘⌥R / Ctrl+Alt+R), 오류 검사(⌘⌥C / Ctrl+Alt+C), 네이티브 컴파일(AOT), REPL 열기. |
요구사항
bang 실행 파일이 PATH에 있어야 한다(없으면 진단·실행이 동작하지 않는다).
brew install knoxxr/tap/bang # macOS
cargo install --path . # 소스에서
PATH에 두지 않았다면 bang.executablePath에 절대경로를 지정한다.
설정
| 설정 |
기본값 |
설명 |
bang.executablePath |
bang |
실행 파일 경로 |
bang.runMode |
vm |
vm(전 기능) / interp(트리워킹 — 일부 기능 미지원) |
bang.diagnostics |
onType |
onType / onSave / off |
bang.diagnosticsDelay |
400 |
입력 후 검사까지 대기(ms) |
개발
cd editors/vscode-bang
npm test # 단위 테스트 (node만 필요 — VS Code 불필요)
F5(Extension Development Host)로 디버그 실행. 진단·자동완성 로직은 extension.js,
빌트인 목록은 builtins.js에 있다.
builtins.js와 문법 파일의 빌트인 목록은 src/vm.rs의 BUILTINS 배열과
일치해야 하며, npm test가 이를 검증한다. 빌트인을 추가하면 세 곳을 함께 갱신한다.
설치 · 등록(게시)
1. 로컬 설치 (게시 없이 바로 쓰기)
cd editors/vscode-bang
npx @vscode/vsce package # bang-lang-0.2.0.vsix 생성
code --install-extension bang-lang-0.2.0.vsix
또는 VS Code에서 확장 패널 → ⋯ → VSIX에서 설치.
2. VS Code 마켓플레이스에 등록
한 번만 하는 준비:
- Azure DevOps 조직 만들기 — https://dev.azure.com (Microsoft 계정으로 로그인).
- Personal Access Token(PAT) 발급 — 우측 상단 사용자 설정 →
Personal access tokens
→ New Token.
- Organization: All accessible organizations (필수 — 이걸 빼면 게시가 거부된다)
- Scopes:
Custom defined → Marketplace › Manage
- 만료일: 최대 1년. 발급된 토큰 문자열을 안전한 곳에 저장한다(다시 볼 수 없다).
- 퍼블리셔 생성 — https://marketplace.visualstudio.com/manage/createpublisher
package.json의 "publisher" 값(knoxxr)과 똑같은 ID로 만든다.
게시:
cd editors/vscode-bang
npx @vscode/vsce login knoxxr # PAT 입력 (1회 — 이후 저장됨)
npx @vscode/vsce publish # package.json의 version으로 게시
버전을 올리며 게시하려면 npx @vscode/vsce publish minor(patch/minor/major).
CI에서 게시할 때는 로그인 대신 토큰을 인자로 넘긴다:
npx @vscode/vsce publish -p "$VSCE_PAT"
게시 후 몇 분 안에 마켓플레이스에 노출되고, 사용자는
code --install-extension knoxxr.bang-lang 또는 확장 패널에서 "bang"으로 찾아 설치한다.
게시 상태·설치 수는 https://marketplace.visualstudio.com/manage/publishers/knoxxr 에서 본다.
3. Open VSX에도 등록 (VSCodium · Cursor · Gitpod 사용자용)
VS Code 마켓플레이스는 Microsoft 정품 빌드에서만 쓸 수 있다. 포크 사용자를
포함하려면 Open VSX에도 올린다.
- https://open-vsx.org 에 GitHub으로 로그인 → 게시자 동의서(Publisher Agreement) 서명.
Settings → Access Tokens에서 토큰 발급.
- 네임스페이스를 만들고 게시한다:
npx ovsx create-namespace knoxxr -p "$OVSX_TOKEN" # 최초 1회
npx ovsx publish bang-lang-0.2.0.vsix -p "$OVSX_TOKEN"
체크리스트 (게시 전)
- [ ]
npm test green
- [ ]
package.json의 version 상승 + CHANGELOG.md 갱신
- [ ]
publisher가 마켓플레이스 퍼블리셔 ID와 일치
- [ ]
icon.png(128×128 이상), README.md, LICENSE 포함 —
마켓플레이스 페이지가 README를 그대로 렌더링한다
- [ ]
npx @vscode/vsce ls로 패키지에 들어갈 파일 확인(test/는 제외됨)
라이선스
MIT