▶️ Goplay.nvim

March 11, 2023 · View on GitHub

goplay.nvim is a local go playground for Neovim. Goplay.nvim uses locally installed Go tool to prepare and run the code from the playground.

⚡️ Requirements

📦 Installation

Install the plugin via your favorite plugins manager, e.g.:

use "jeniasaigak/goplay.nvim"

Then you may add the following Lua code to setup the plugin:

require('goplay').setup()

⚙️ Configuration

goplay.nvim comes with the following defaults:

{
  template = require("goplay.templates").default, -- template which will be used as the default content for the playground
  mode = "vsplit", -- current/split/[vsplit] specifies where the playground will be opened
  playgroundDirName = "goplayground", -- a name of the directory under GOPATH/src where the playground will be saved
  tempPlaygroundDirName = "goplayground_temp", -- a name of the directory under GOPATH/src where the temporary playground will be saved. This option is used when you need to execute a file
  output_mode = "formatted", -- [formatted]/raw mode to display output
}

🚀 Usage

CommandLuaDescription
:GPOpenrequire("goplay").goPlaygroundOpen()opens a playground; this command will prepare playground directory & files if needed
:GPTogglerequire("goplay").goPlaygroundToggle()executes open command if the playground is closed, or close command otherwise
:GPExecrequire("goplay").goExecPlayground()executes the code at the playground and prints the results
:GPCloserequire("goplay").goPlaygroundClose()close a playground
:GPClearrequire("goplay").deletePlayground()removes the playground folder
:GPExecFilerequire("goplay").goExecFileAsPlayground()simply execute lines from currently opened buffer as go file and show the results

⌨️ Gopaly Key Mappings

Here are recommended keybindings to use:

vim.api.nvim_set_keymap('n', '<leader>gpt', ':GPToggle<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>gpe', ':GPExec<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>gpf', ':GPExecFile<CR>', { noremap = true, silent = true })