<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Joseph Kato</title>
    <description>The latest articles on DEV Community by Joseph Kato (@jdkato).</description>
    <link>https://dev.to/jdkato</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F470452%2Fff30122e-5d69-4de3-bb12-3e8ad3837042.png</url>
      <title>DEV Community: Joseph Kato</title>
      <link>https://dev.to/jdkato</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jdkato"/>
    <language>en</language>
    <item>
      <title>Setting up Neovim for Gno development</title>
      <dc:creator>Joseph Kato</dc:creator>
      <pubDate>Tue, 05 Sep 2023 22:09:54 +0000</pubDate>
      <link>https://dev.to/jdkato/setting-up-neovim-for-gno-development-1a6d</link>
      <guid>https://dev.to/jdkato/setting-up-neovim-for-gno-development-1a6d</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UlQIey-O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qxk0xu5zp59l1pqb4qha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UlQIey-O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qxk0xu5zp59l1pqb4qha.png" alt="Gno.land Logo" width="405" height="93"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Gnolang (Gno) is an interpretation of the widely-used Golang (Go) programming language for blockchain created by Cosmos co-founder Jae Kwon in 2022 to mark a new era in smart contracting. - &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fgno.land%2Fgnolang"&gt;About the Gnolang, the Gno Language&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;In this post, I'm going to walk through setting up a development environment for Gno in &lt;a href="https://neovim.io/"&gt;Neovim&lt;/a&gt;. At the end, we'll have error diagnostics, syntax highlighting, auto-formatting, and basic intellisense (autocomplete + hover information) for the Gno standard library.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8I97kHM6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohize7768njzb00hd3ou.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8I97kHM6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohize7768njzb00hd3ou.png" alt="Neovim configured for Gno" width="800" height="648"&gt;&lt;/a&gt;&lt;br&gt;The final result
  &lt;/p&gt;

&lt;p&gt;For the purposes of this post, I'm going to be using the &lt;a href="https://astronvim.com/"&gt;AstroNvim&lt;/a&gt; configuration but this isn't strictly required: as long as you have &lt;a href="https://github.com/neovim/nvim-lspconfig"&gt;&lt;code&gt;nvim-lspconfig&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter"&gt;&lt;code&gt;nvim-treesitter&lt;/code&gt;&lt;/a&gt;, you should be able to follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install &lt;code&gt;tree-sitter-go&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Navigate to &lt;code&gt;~/.config/nvim/lua/plugins/treesitter.lua&lt;/code&gt; (or equivalent) and make sure that &lt;code&gt;go&lt;/code&gt; is listed in &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter#modules"&gt;&lt;code&gt;ensure_installed&lt;/code&gt;&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="n"&gt;ensure_installed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"lua"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"vim"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"vimdoc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"query"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"go"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Assign a syntax with Tree-sitter
&lt;/h2&gt;

&lt;p&gt;Navigate to &lt;code&gt;~/.config/nvim/lua/plugins/configs/nvim-treesitter.lua&lt;/code&gt; (or equivalent) and add these two lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cmd&lt;/span&gt; &lt;span class="s1"&gt;'autocmd BufRead,BufNewFile *gno set filetype=gno'&lt;/span&gt;
&lt;span class="n"&gt;vim&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;treesitter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'go'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'gno'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first line creates an autocommand to assign the &lt;code&gt;gno&lt;/code&gt; filetype to all &lt;code&gt;*.gno&lt;/code&gt; files. The second &lt;a href="https://github.com/nvim-treesitter/nvim-treesitter#adding-parsers"&gt;registers&lt;/a&gt; the &lt;code&gt;gno&lt;/code&gt; filetype with the Go parser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Configure &lt;code&gt;gnols&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Download a binary from the &lt;a href="https://github.com/jdkato/gnols/releases"&gt;&lt;code&gt;gnols&lt;/code&gt; releases page&lt;/a&gt; and save it somewhere.&lt;/p&gt;

&lt;p&gt;Navigate to &lt;code&gt;~/.config/nvim/lua/user/init.lua&lt;/code&gt; (or equivalent; wherever you customize &lt;code&gt;nvim-lspconfig&lt;/code&gt;) and add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;lsp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;formatting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;format_on_save&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;servers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="s2"&gt;"gnols"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;gnols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="n"&gt;cmd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"path/to/your/gnols/binary"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
          &lt;span class="n"&gt;filetypes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"gno"&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
          &lt;span class="n"&gt;root_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"lspconfig.util"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;root_pattern&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'.git'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'gno.mod'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
          &lt;span class="n"&gt;settings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;gno&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"path/to/you/gno/binary"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;precompileOnSave&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;buildOnSave&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="c1"&gt;-- the clone location of github.com/gnolang/gno&lt;/span&gt;
            &lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"path/to/local/clone/gno"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, when you open a Gno file, you should see syntax highlighting and status bar indicators that &lt;code&gt;gnols&lt;/code&gt; is active:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CL9K6x2b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/phkmkupqvefoepihn416.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CL9K6x2b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/phkmkupqvefoepihn416.png" alt="Neovim running gnols" width="800" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Write Gno code!
&lt;/h2&gt;

&lt;p&gt;After following these steps, you'll now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Syntax highlighting for &lt;code&gt;.gno&lt;/code&gt; files;&lt;/li&gt;
&lt;li&gt;autocomplete for the Gno standard library;&lt;/li&gt;
&lt;li&gt;hover information (bound to &lt;a href="https://github.com/neovim/nvim-lspconfig#suggested-configuration"&gt;&lt;code&gt;('n', 'K')&lt;/code&gt;&lt;/a&gt;) for the Gno standard library; and&lt;/li&gt;
&lt;li&gt;the ability to auto-format your Gno files (set to on-file-save).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>neovim</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Setting up Sublime Text 4 for Gno development</title>
      <dc:creator>Joseph Kato</dc:creator>
      <pubDate>Tue, 05 Sep 2023 21:45:25 +0000</pubDate>
      <link>https://dev.to/jdkato/setting-up-sublime-text-4-for-gno-development-2km3</link>
      <guid>https://dev.to/jdkato/setting-up-sublime-text-4-for-gno-development-2km3</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UlQIey-O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qxk0xu5zp59l1pqb4qha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UlQIey-O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qxk0xu5zp59l1pqb4qha.png" alt="Gno.land Logo" width="405" height="93"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Gnolang (Gno) is an interpretation of the widely-used Golang (Go) programming language for blockchain created by Cosmos co-founder Jae Kwon in 2022 to mark a new era in smart contracting. - &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fgno.land%2Fgnolang"&gt;About the Gnolang, the Gno Language&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;When you first open a Gno file in &lt;a href="https://www.sublimetext.com/"&gt;Sublime Text&lt;/a&gt;, you'll see something like the screenshot below: a simple plain-text file. No syntax highlighting or fancy language-specific intelligence features that you're probably used to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jnKadiUo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7gpc7zkwum146j594lc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jnKadiUo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7gpc7zkwum146j594lc5.png" width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While it would be easy enough to simply assign the Go syntax to the &lt;code&gt;.gno&lt;/code&gt; extension (super+shift+p -&amp;gt; &lt;code&gt;Set Syntax: Go&lt;/code&gt;), this has the undesirable effect of instructing Sublime Text to treat &lt;code&gt;.gno&lt;/code&gt; files &lt;em&gt;as&lt;/em&gt; &lt;code&gt;.go&lt;/code&gt; files -- meaning it assumes that all Go-related tooling (&lt;code&gt;go test&lt;/code&gt;, &lt;code&gt;gopls&lt;/code&gt;, etc.) works when it actually doesn't.&lt;/p&gt;

&lt;p&gt;Instead, we want to teach Sublime Text to understand &lt;code&gt;.gno&lt;/code&gt; files as a standalone filetype and how to make use of its own tooling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install the &lt;code&gt;Gno&lt;/code&gt; package
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eZV6WK9W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9h7a9d057mdsbt98ojv7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eZV6WK9W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9h7a9d057mdsbt98ojv7.png" width="800" height="619"&gt;&lt;/a&gt;&lt;br&gt;super+shift+p -&amp;gt; &lt;code&gt;Package Control: Install Package&lt;/code&gt; -&amp;gt; &lt;code&gt;Gno&lt;/code&gt;
  &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://packagecontrol.io/packages/Gno"&gt;Gno&lt;/a&gt; package provides syntax highlighting for &lt;code&gt;.gno&lt;/code&gt;, &lt;code&gt;gno.mod&lt;/code&gt;, and &lt;code&gt;gno.sum&lt;/code&gt; files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bNT_v6_Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/otnmuj6phauj6tyzcess.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bNT_v6_Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/otnmuj6phauj6tyzcess.png" alt="Gno file with syntax highlighting" width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After installing the package and re-opening the buffer, you'll see some nice syntax highlighting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Install the &lt;code&gt;LSP-gnols&lt;/code&gt; package
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Before completing this step, you'll need to install the &lt;a href="https://packagecontrol.io/packages/Terminus"&gt;Terminus&lt;/a&gt; and &lt;a href="https://packagecontrol.io/packages/LSP"&gt;LSP&lt;/a&gt; packages (if you haven't already).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://packagecontrol.io/packages/LSP-gnols"&gt;&lt;code&gt;LSP-gnols&lt;/code&gt;&lt;/a&gt; is a package for &lt;a href="https://github.com/jdkato/gnols"&gt;&lt;code&gt;gnols&lt;/code&gt;&lt;/a&gt;, an implementation of the &lt;a href="https://microsoft.github.io/language-server-protocol/"&gt;Language Server Protocol&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aRJwWrsA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpbqli6e0j7eio5igamu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aRJwWrsA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpbqli6e0j7eio5igamu.png" width="800" height="619"&gt;&lt;/a&gt;&lt;br&gt;super+shift+p -&amp;gt; &lt;code&gt;Package Control: Install Package&lt;/code&gt; -&amp;gt; &lt;code&gt;LSP-gnols&lt;/code&gt;
  &lt;/p&gt;

&lt;p&gt;After installing the package, you'll need to provide a few configuration values. Go to &lt;code&gt;Settings&lt;/code&gt; -&amp;gt; &lt;code&gt;Package Settings&lt;/code&gt; -&amp;gt; &lt;code&gt;LSP&lt;/code&gt; -&amp;gt; &lt;code&gt;Servers&lt;/code&gt; -&amp;gt; &lt;code&gt;LSP-gnols&lt;/code&gt; and fill in the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"settings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"gno"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"root"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;gno&lt;/code&gt; is an absolute path to the &lt;code&gt;gno&lt;/code&gt; binary and &lt;code&gt;root&lt;/code&gt; is the clone location of &lt;a href="https://github.com/gnolang/gno"&gt;&lt;code&gt;github.com/gnolang/gno&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Write Gno code!
&lt;/h2&gt;

&lt;p&gt;After following these steps, you'll now have:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Syntax highlighting for &lt;code&gt;.gno&lt;/code&gt;, &lt;code&gt;gno.mod&lt;/code&gt;, and &lt;code&gt;gno.sum&lt;/code&gt; files;&lt;/li&gt;
&lt;li&gt;autocomplete for the Gno standard library;&lt;/li&gt;
&lt;li&gt;hover information for the Gno standard library;&lt;/li&gt;
&lt;li&gt;the ability to auto-format your Gno files; and&lt;/li&gt;
&lt;li&gt;Code Lens annotations for running tests and benchmarks.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>web3</category>
      <category>programming</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
