summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/user/lsp/lsp-installer.lua25
-rw-r--r--lua/user/lsp/settings/awk_ls.lua10
-rw-r--r--lua/user/lsp/settings/bashls.lua11
-rw-r--r--lua/user/lsp/settings/clangd.lua10
-rw-r--r--lua/user/lsp/settings/cmake.lua12
-rw-r--r--lua/user/lsp/settings/html.lua18
-rw-r--r--lua/user/lua.lua79
-rw-r--r--lua/user/treesitter.lua2
8 files changed, 166 insertions, 1 deletions
diff --git a/lua/user/lsp/lsp-installer.lua b/lua/user/lsp/lsp-installer.lua
index f539050..ac8f40c 100644
--- a/lua/user/lsp/lsp-installer.lua
+++ b/lua/user/lsp/lsp-installer.lua
@@ -26,6 +26,31 @@ lsp_installer.on_server_ready(function(server)
opts = vim.tbl_deep_extend("force", pyright_opts, opts)
end
+ if server.name == "awk_ls" then
+ local awk_opts = require("user.lsp.settings.awk_ls")
+ opts = vim.tbl_deep_extend("force", awk_opts, opts)
+ end
+
+ if server.name == "bashls" then
+ local bash_opts = require("user.lsp.settings.bashls")
+ opts = vim.tbl_deep_extend("force", bash_opts, opts)
+ end
+
+ if server.name == "clangd" then
+ local clangd_opts = require("user.lsp.settings.clangd")
+ opts = vim.tbl_deep_extend("force", clangd_opts, opts)
+ end
+
+ if server.name == "cmake" then
+ local cmake_opts = require("user.lsp.settings.cmake")
+ opts = vim.tbl_deep_extend("force", cmake_opts, opts)
+ end
+
+ if server.name == "html" then
+ local html_opts = require("user.lsp.settings.html")
+ opts = vim.tbl_deep_extend("force", html_opts, opts)
+ end
+
-- This setup() function is exactly the same as lspconfig's setup function.
-- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
server:setup(opts)
diff --git a/lua/user/lsp/settings/awk_ls.lua b/lua/user/lsp/settings/awk_ls.lua
new file mode 100644
index 0000000..9d4a2da
--- /dev/null
+++ b/lua/user/lsp/settings/awk_ls.lua
@@ -0,0 +1,10 @@
+return {
+ settings = {
+
+ awk = {
+ filetypes = { 'awk' },
+ single_file_support = true,
+ }
+ }
+}
+
diff --git a/lua/user/lsp/settings/bashls.lua b/lua/user/lsp/settings/bashls.lua
new file mode 100644
index 0000000..72f8409
--- /dev/null
+++ b/lua/user/lsp/settings/bashls.lua
@@ -0,0 +1,11 @@
+return {
+ settings = {
+
+ bash = {
+ cmd_env = {GLOB_PATTERN = "*@(.sh|.inc|.bash|.command)" },
+ filetypes = { 'sh' },
+ single_file_support = true,
+ }
+ }
+}
+
diff --git a/lua/user/lsp/settings/clangd.lua b/lua/user/lsp/settings/clangd.lua
new file mode 100644
index 0000000..55798a1
--- /dev/null
+++ b/lua/user/lsp/settings/clangd.lua
@@ -0,0 +1,10 @@
+return {
+ settings = {
+
+ clangd = {
+ filetypes = { "c","cpp" },
+ single_file_support = true,
+ }
+ }
+}
+
diff --git a/lua/user/lsp/settings/cmake.lua b/lua/user/lsp/settings/cmake.lua
new file mode 100644
index 0000000..c81df8a
--- /dev/null
+++ b/lua/user/lsp/settings/cmake.lua
@@ -0,0 +1,12 @@
+return {
+ settings = {
+
+ cmake = {
+ whitelist = {"cmake" },
+ initialization_Options = {
+ buildDirectory = {"build"},
+ },
+ }
+ }
+}
+
diff --git a/lua/user/lsp/settings/html.lua b/lua/user/lsp/settings/html.lua
new file mode 100644
index 0000000..fb161a9
--- /dev/null
+++ b/lua/user/lsp/settings/html.lua
@@ -0,0 +1,18 @@
+return {
+ settings = {
+
+ html = {
+ filetypes = { 'html' },
+ init_options = {
+ configurationSection = {"html", "css", "javascript" },
+ embeddedLanguages = {
+ css = true,
+ javascript = true,
+ },
+ provideFormatter = true
+ },
+ single_file_support = true,
+ }
+ }
+}
+
diff --git a/lua/user/lua.lua b/lua/user/lua.lua
new file mode 100644
index 0000000..c97c178
--- /dev/null
+++ b/lua/user/lua.lua
@@ -0,0 +1,79 @@
+local fmt = string.format
+
+-- Iterator that splits a string o a given delimiter
+local function split(str, delim)
+ delim = delim or "%s"
+ return string.gmatch(str, fmt('[^%s]+', delim))
+end
+
+-- Find the proper directory separator depending
+-- on lua installation or OS.
+local function dir_separator()
+ -- Look at package.config for directory separator string (it's the first line)
+ if package.config then
+ return string.match(package.config, '^[^\n]')
+ elseif vim.fn.has('win32') == 1 then
+ return '\\'
+ else
+ return '/'
+ end
+end
+
+-- Search for lua traditional include paths.
+-- This mimics how require internally works.
+local function include_paths(fname, ext)
+ ext = ext or "lua"
+ local sep = dir_separator()
+ local paths = string.gsub(package.path, '%?', fname)
+ for path in split(paths, "%;") do
+ if vim.fn.filereadable(path) == 1 then
+ return path
+ end
+ end
+end
+
+-- Search for nvim lua include paths
+local function include_rtpaths(fname, ext)
+ ext = ext or "lua"
+ local sep = dir_separator()
+ local rtpaths = vim.api.nvim_list_runtime_paths()
+ local modfile, initfile = fmt('%s.%s', fname, ext), fmt('init.%s', ext)
+ for _, path in ipairs(rtpaths) do
+ -- Look on runtime path for 'lua/*.lua' files
+ local path1 = table.concat({path, ext, modfile}, sep)
+ if vim.fn.filereadable(path1) == 1 then
+ return path1
+ end
+ -- Look on runtime path for 'lua/*/init.lua' files
+ local path2 = table.concat({path, ext, fname, initfile}, sep)
+ if vim.fn.filereadable(path2) == 1 then
+ return path2
+ end
+ end
+end
+
+-- Global function that searches the path for the required file
+function find_required_path(module)
+ -- Look at package.config for directory separator string (it's the first line)
+ local sep = string.match(package.config, '^[^\n]')
+ -- Properly change '.' to separator (probably '/' on *nix and '\' on Windows)
+ local fname = vim.fn.substitute(module, "\\.", sep, "g")
+ local f
+ ---- First search for lua modules
+ f = include_paths(fname, 'lua')
+ if f then return f end
+ -- This part is just for nvim modules
+ f = include_rtpaths(fname, 'lua')
+ if f then return f end
+ ---- Now search for Fennel modules
+ f = include_paths(fname, 'fnl')
+ if f then return f end
+ -- This part is just for nvim modules
+ f = include_rtpaths(fname, 'fnl')
+ if f then return f end
+end
+
+
+-- Set options to open require with gf
+vim.opt_local.include = [=[\v<((do|load)file|require)\s*\(?['"]\zs[^'"]+\ze['"]]=]
+vim.opt_local.includeexpr = "v:lua.find_required_path(v:fname)" \ No newline at end of file
diff --git a/lua/user/treesitter.lua b/lua/user/treesitter.lua
index b840ccd..ce57664 100644
--- a/lua/user/treesitter.lua
+++ b/lua/user/treesitter.lua
@@ -14,7 +14,7 @@
local configs = require("nvim-treesitter.configs")
configs.setup {
- ensure_installed = "maintained",
+ ensure_installed = {"python","lua","json"},
sync_install = false,
ignore_install = { "" }, -- List of parsers to ignore installing
autopairs = {