Files
tree-sitter-shellspec/.serena/memories/code_style_conventions.md
Ismo Vuorinen c8ba576b4e feat: implement complete tree-sitter-shellspec grammar with comprehensive testing
- Add full ShellSpec grammar extending tree-sitter-bash
- Support all ShellSpec constructs: Describe, Context, It, hooks, utilities
- Include Data block parsing with statements and argument styles
- Add 61 comprehensive test cases covering real-world patterns
- Implement optimized GitHub workflows with CI/CD automation
- Configure complete development tooling (linting, formatting, pre-commit)
- Add comprehensive documentation and contribution guidelines
- Optimize grammar conflicts to zero warnings
- Support editor integration for Neovim, VS Code, Emacs

Breaking Changes:
- Initial release, no previous API to break

BREAKING CHANGE: Initial implementation of tree-sitter-shellspec grammar

# Conflicts:
#	.github/workflows/codeql.yml
#	.github/workflows/pr-lint.yml
#	.pre-commit-config.yaml

# Conflicts:
#	.github/workflows/pr-lint.yml

# Conflicts:
#	.github/workflows/pr-lint.yml
2026-01-04 15:32:39 +02:00

1.2 KiB

Code Style and Conventions

EditorConfig Rules

All files follow .editorconfig specifications:

  • Charset: UTF-8
  • Line endings: LF (Unix style)
  • Indentation: 2 spaces (no tabs except Makefiles)
  • Max line length: 160 characters
  • Final newline: Required
  • Trim trailing whitespace: Yes (except .md files)

JavaScript/Grammar Conventions

  • Use 2-space indentation
  • JSDoc comments for file headers
  • TypeScript reference comments for tree-sitter DSL
  • Semicolons and consistent formatting
  • Descriptive field names in grammar rules

Grammar Design Patterns

  • Use prec.right(1, seq(...)) for block structures
  • Handle conflicts explicitly in the conflicts array
  • Extend original bash rules with choice(original, new_rules)
  • Use field() for semantic labeling of important parts
  • Block patterns: BlockType description statements End

File Organization

  • grammar.js: Main grammar definition
  • src/: Generated parser files (don't edit manually)
  • Configuration files in root directory
  • GitHub workflows in .github/workflows/

Naming Conventions

  • Snake_case for grammar rule names
  • Descriptive names for block types and fields
  • Prefix ShellSpec-specific rules with shellspec_