Module snippets

Source
Expand description

Β§The Snippets Module

πŸ“¦ This module provides a comprehensive toolkit for working with VS Code snippets. It allows creating, managing, and serializing code snippets with rich customization options.

Β§Components

Β§Overview

  • πŸ“ Create and edit snippets with rich formatting
  • πŸ”§ Customize triggers, descriptions, and scopes
  • πŸ“¦ Manage collections of snippets
  • πŸ’Ύ Serialize/deserialize to VS Code format

Β§Examples

§🎨 Creating a Simple Snippet
use snippets::SnippetBuilder;
 
let snippet = SnippetBuilder::new()
    .set_prefix("fn")
    .add_line("fn ${1:name}() {")
    .add_line("    ${0:// TODO: ${0}}")
    .add_line("}")
    .build()
    .unwrap();
Β§πŸ“ Managing Snippet Collections
use snippets::{ SnippetsFile, SnippetBuilder };
 
let mut file = SnippetsFile::new(vec![
    SnippetBuilder::new()
        .set_prefix("fn")
        .set_body(vec![
            "fn main() {",
            "    $0",
            "}"
        ])
        .set_scope("rust")
]);
 
// Add test snippet
file.add_snippet(
    SnippetBuilder::new()
        .set_prefix("test")
        .set_body(vec![
            "#[test]",
            "fn test_${1:name}() {",
            "    $0",
            "}"
        ])
        .set_scope("rust")
        .build()
        .unwrap()
);

Β§Panics

The builder’s build() method will panic if

  • prefix is empty
  • name is empty
  • body is empty

Β§Notes

Β§The syntax of VS Code snippets:
  • πŸ“Œ Use $0 to specify the final cursor position
  • πŸ“Œ Use $1, $2, etc. for tabstops
  • πŸ“Œ Use ${1:default text} for placeholders with default values
  • πŸ“Œ Use ${1|one,two,three|} for dropdown choices
Β§See Also

Re-exportsΒ§

pub use snippet::Snippet;
pub use snippet_builder::SnippetBuilder;
pub use snippets_file::SnippetsFile;

ModulesΒ§

snippet
snippet_builder
snippets_file