From d35e92f09070ec04a1f96fceda47d63ccb9d34ae Mon Sep 17 00:00:00 2001 From: Blallo Date: Sun, 2 Oct 2022 00:46:25 +0200 Subject: [PATCH] Add hare support --- .gitmodules | 3 +++ deps/tree-sitter-hare | 1 + filetype.lua | 3 +++ lua/config/lspconfig.lua | 32 +++++++++++++++++++++++++++++++- lua/config/treesitter.lua | 18 ++++++++++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 160000 deps/tree-sitter-hare create mode 100644 filetype.lua diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e04d750 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "deps/tree-sitter-hare"] + path = deps/tree-sitter-hare + url = https://git.sr.ht/~ecmma/tree-sitter-hare diff --git a/deps/tree-sitter-hare b/deps/tree-sitter-hare new file mode 160000 index 0000000..bc26a6a --- /dev/null +++ b/deps/tree-sitter-hare @@ -0,0 +1 @@ +Subproject commit bc26a6a949f2e0d98b7bfc437d459b250900a165 diff --git a/filetype.lua b/filetype.lua new file mode 100644 index 0000000..46325b7 --- /dev/null +++ b/filetype.lua @@ -0,0 +1,3 @@ +vim.filetype.add({ + extension = { ha = "hare" }, +}) diff --git a/lua/config/lspconfig.lua b/lua/config/lspconfig.lua index 7f1d7f8..3bbdc33 100644 --- a/lua/config/lspconfig.lua +++ b/lua/config/lspconfig.lua @@ -1,4 +1,22 @@ local nvim_lsp = require('lspconfig') +local configs = require('lspconfig.configs') + + +-- harepls +if not configs.harepls then + configs.harepls = { + default_config = { + cmd = { '/home/leo/code/hare/harepls/harepls' }; + filetypes = { 'hare' }; + root_dir = function(fname) + return nvim_lsp.util.find_git_ancestor(fname) + end; + settings = {}; + }; + } +end + +-- nvim_lsp.harepls.setup {} local on_attach = function(client, bufrn) Mapper = require("nvim-mapper") @@ -31,7 +49,19 @@ local on_attach = function(client, bufrn) end -- Launch language servers -local servers = { 'pyright', 'pylsp', 'gopls', 'rust_analyzer', 'tsserver', 'elixirls', 'dartls', 'denols', 'clangd', 'zls' } +local servers = { + 'harepls', + 'pyright', + 'pylsp', + 'gopls', + 'rust_analyzer', + 'tsserver', + 'elixirls', + 'dartls', + 'denols', + 'clangd', + 'zls', +} for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, diff --git a/lua/config/treesitter.lua b/lua/config/treesitter.lua index 430b971..cdeedc6 100644 --- a/lua/config/treesitter.lua +++ b/lua/config/treesitter.lua @@ -23,3 +23,21 @@ require('nvim-treesitter.configs').setup { enable = true }, } + +local parser_config = require "nvim-treesitter.parsers".get_parser_configs() + +parser_config.hare = { + install_info = { + -- url = 'https://git.sr.ht/~ecmma/tree-sitter-hare', -- local path or git repo + url = '/home/leo/.config/nvim/deps/tree-sitter-hare', + files = { "src/parser.c" }, + -- optional entries: + -- branch = "main", -- default branch in case of git repo if different from master + generate_requires_npm = false, -- if stand-alone parser without npm dependencies + requires_generate_from_grammar = false, -- if folder contains pre-generated src/parser.c + }, + filetype = "ha", -- if filetype does not match the parser name +} + +local ft_to_parser = require "nvim-treesitter.parsers".filetype_to_parsername +ft_to_parser.hare = "hare"