Editor setup
Using a different editor? Feel free to add instructions for your editor of choice.
Add a template for creating components
JetBrains IDEs
- Navigate to File | Settings | Editor | Live Templates.
- Select Rust and click on the + icon to add a new Live Template.
- Give it a name and description of your preference.
- Paste the following snippet(s) into the Template Text section.
- Change the applicability on the lower right, select Rust > Item > Module
For function components, use the following template.
- (Optional) Click on Edit Variable and give
taga reasonable default value like "div", with double quotes.
#[derive(PartialEq, Properties)]
pub struct $Name$Props {
}
#[component]
pub fn $Name$(props: &$Name$Props) -> Html {
html! {
<$tag$>$END$</$tag$>
}
}
For struct components, you can use the following more complicated template.
struct $NAME$;
enum $NAME$Msg {
}
impl Component for $NAME$ {
type Message = $NAME$Msg;
type Properties = ();
fn create(ctx: &Context<Self>) -> Self {
Self
}
fn view(&self, ctx: &Context<Self>) -> Html {
html! {
$HTML$
}
}
}
VS Code
- Navigate to File > Preferences > User Snippets.
- Select Rust as the language.
- Add the following snippet in the snippet JSON file:
{
"New Yew function component": {
"prefix": "yewfc",
"body": [
"#[derive(PartialEq, Properties)]",
"pub struct ${1:ComponentName}Props {}",
"",
"#[component]",
"pub fn $1(props: &${1}Props) -> Html {",
" let ${1}Props {} = props;",
" html! {",
" <${2:div}>$0</${2}>",
" }",
"}"
],
"description": "Create a minimal Yew function component"
},
"New Yew struct component": {
"prefix": "yewsc",
"body": [
"pub struct ${1:ComponentName};",
"",
"pub enum ${1}Msg {",
"}",
"",
"impl Component for ${1} {",
" type Message = ${1}Msg;",
" type Properties = ();",
"",
" fn create(ctx: &Context<Self>) -> Self {",
" Self",
" }",
"",
" fn view(&self, ctx: &Context<Self>) -> Html {",
" html! {",
" $0",
" }",
" }",
"}"
],
"description": "Create a new Yew component with a message enum"
}
}
Support for the html! macro
JetBrains IDEs
Contribution Welcome!
VS Code
The Rust-Yew extension
This is a work in progress, and community maintained project! Please see details and direct related bug reports / issues / questions over to the extension's repository
The Rust-Yew extension is available on VSC Marketplace, providing syntax highlighting, renames, hover, and more.
Emmet support should work out of the box; if not, please fall back to editing the settings.json file:
"emmet.includeLanguages": {
"rust": "html",
}
Neovim
Lazyvim
The below configuration works with LazyVim and the lazy.vim plugin. Create a file in
lua/plugins/nvim-lspconfig.lua(or update yourlspconfig) with:
return {
{
"neovim/nvim-lspconfig",
init_options = {
userLanguages = {
eelixir = "html-eex",
eruby = "erb",
rust = "html",
},
},
},
}