Neovim plugin for the Pic graphics language. Provides filetype detection, syntax highlighting, indentation, and a built-in LSP server.
- Filetype detection for
*.picfiles - Syntax highlighting (primitives, attributes, labels, macros, strings, comments, etc.)
- Auto-indentation for
[]and{}blocks - LSP server (written in Lua, no external dependencies) with:
- Completion for all Pic keywords, primitives, attributes, functions, style variables, labels, and macros
- Hover documentation
- Diagnostics (unmatched braces/brackets,
.PS/.PEpairing) - Document symbols (labels and macro definitions)
- Neovim >= 0.11 (uses
vim.lsp.config/vim.lsp.enable) luaorluajitonPATH(for the LSP server)
{
"jdearmas/pic.nvim",
ft = "pic",
opts = {},
}use {
"jdearmas/pic.nvim",
ft = "pic",
config = function()
require("pic").setup()
end,
}Plug 'jdearmas/pic.nvim'Then in your init.lua:
require("pic").setup()Clone the repo into your Neovim packages directory:
git clone https://github.com/jdearmas/pic.nvim.git \
~/.local/share/nvim/site/pack/plugins/start/pic.nvimThen add to your init.lua:
require("pic").setup()Call setup() to enable the LSP server. Filetype detection, syntax highlighting, and indentation work without it.
require("pic").setup()require("pic").setup({
-- Override the LSP command (default: auto-detects lua/luajit on PATH)
cmd = { "/path/to/lua", "/path/to/pic-lsp.lua" },
})MIT