Take a "screenshot" of your code by turning it into an image, thanks to freeze by charm.
Report an issue · Suggest a feature
Remember to always follow the code of conduct
[!warning]
This plugin requires Neovim v0.9.0 or higher
Using your plugin manager at your disposal, in the example lazy is going to be used.
[!note]
If you don't have freeze installed, and if you have golang installed, it will
go install github.com/charmbracelet/freeze@latest
for you 🫡.In the case that you don't have neither of those, don't you worry 😉, we got you cover. It will install
freeze
usingcURL
to the freeze's releases page.
return {
"AlejandroSuero/freeze-code.nvim",
config = function()
require("freeze-code").setup()
end,
}
[!note]
You can also install it using Rocks.nvim
:Rocks install freeze-code.nvim
Also as
luarocks install freeze-code.nvim
return {
"AlejandroSuero/freeze-code.nvim",
config = function()
require("freeze-code.nvim").setup({
-- your configuration goes here
})
end,
}
[!note]
See default configuration below.
local opts = {
freeze_path = vim.fn.exepath("freeze"), -- where is freeze installed
copy_cmd = "", -- the default copy command is native to your OS (see below)
copy = false, -- copy after screenshot option
open = false, -- open after screenshot option
dir = vim.env.PWD, -- where is the image going to be saved "." as default
freeze_config = { -- configuration options for `freeze` command
output = "freeze.png",
config = "base",
theme = "default",
},
}
[!note]
The commands to copy, as defaults per OS will be, for example, for Windows:
Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.Clipboard]::SetImage(...)
, for Linux:xclip -selection clipboard -t image/png ...
if is anX11
session,wl-copy < ...
if is aWayland
session, and for MacOS:osascript -e 'to set the clipboard to (read (POSIX file "...") as «class PNGf»)'
.
If you specify a copy_cmd
in the configuration, it will be used instead of the
default one. To use the custom command, you need to specify "filename"
in the
command, where the image will be saved.
Once you have it installed, you can use :checkhealt freeze-code
to see if there
are any problems with the installation or you need to install additional tools.
To use this plugin, simply call :Freeze
and it will take a screenshot of the
current buffer and save it in the dir
path you have configured.
If you want to take a screenshot of a specific line, you can use the :Freeze
in
visual mode, and it will take a screenshot of the selected lines.
local fz_api = require("freeze-code.utils.api")
vim.keymap.set("n", "<leader>fz", fz_api.freeze)
vim.keymap.set("v", "<leader>fz", function()
fz_api.freeze(vim.fn.line("'<"), vim.fn.line("'>"))
end)
-- or using `<cmd>Freeze<cr>`
vim.keymap.set("n", "<leader>fl", fz.freeze_line)
-- or using `<cmd>FreezeLine<cr>`
Thank you to everyone that is contributing and to those who want to contribute. Any contribution is welcomed!
Quick guide:
git clone <fork-URL>
).git remote add upstream <main-repo-URL>
).git switch -c feature/your-feature
or
git switch -c fix/your-fix
).git commit -m "feat(...): ..."
).git push origin <branch-name>
).For more information, check CONTRIBUTING.md.
Thanks goes to these wonderful people that have contributed to this project: