This repository provides language support for Pkl for neovim.
Supported features:
-
Syntax highlighting (via nvim-treesitter)
-
Code folding (via nvim-treesitter)
This plugin requires Neovim version 0.5 or higher.
Install nvim-treesitter along side this plugin using your favorite plugin manager.
Here is a sample init.vim
file using vim-plug.
To complete the setup, you will need to run :PlugInstall
, then restart neovim.
call plug#begin()
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
Plug 'https://github.com/apple/pkl-neovim.git'
call plug#end()
" The below is required for enabling the tree-sitter syntax engine, which is used by pkl-neovim.
lua <<EOF
local hasConfigs, configs = pcall(require, "nvim-treesitter.configs")
if hasConfigs then
configs.setup {
ensure_installed = "pkl",
highlight = {
enable = true, -- false will disable the whole extension
},
indent = {
enable = true
}
}
end
EOF
Here’s a sample block to add your Lazy.nvim configuration. To complete the setup, restart neovim after adding this to your setup.
This config is compatible with LazyVim.
{
"apple/pkl-neovim",
lazy = true,
ft = "pkl",
dependencies = {
{
"nvim-treesitter/nvim-treesitter",
build = function(_)
vim.cmd("TSUpdate")
end,
},
"L3MON4D3/LuaSnip",
},
build = function()
require('pkl-neovim.internal').init()
-- Set up syntax highlighting.
vim.cmd("TSInstall! pkl")
end,
config = function()
-- Set up snippets.
require("luasnip.loaders.from_snipmate").lazy_load()
end,
}
Here is a sample init.lua
file using packer.nvim.
To complete the setup, you will need to run :PackerSync
, then restart neovim.
require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'} -- Treesitter syntax highlighting.
use {'https://github.com/apple/pkl-neovim', after = "nvim-treesitter", run = ":TSInstall! pkl"} -- Pkl syntax highlighting
end)
-- The below is required for enabling the tree-sitter syntax engine, which is used by pkl-neovim.
-- Set up Treesitter languages.
require'nvim-treesitter.configs'.setup {
ensure_installed = "all", -- or "pkl" for just this plugin.
highlight = {
enable = true, -- false will disable the whole extension
},
indent = {
enable = true
}
}
Some troubleshooting tips if the installation isn’t working:
-
If using neovim 0.5, ensure you are using the 0.5-compat branch of the nvim-treesitter/nvim-treesitter plugin
-
Run
:TSInstall pkl
to manually install the Pkl parser. -
If syntax highlighting doesn’t work until you
:edit
the pkl file to reload it, ensure that thepkl-neovim
plugin is configured to run after thenvim-treesitter
plugin.