From 0e1e60f532d296ac7232aef682aa19a487eb207a Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Sun, 19 Feb 2023 17:18:43 +0100 Subject: [PATCH] [nvim] feat: basic web-dev setup add LSPs for JavaScript/HTML add Treesitter for JavaScript/HTML/markdown add support for .njk (as HTML) files --- .config/nvim/after/ftplugin/javascript.lua | 14 +++++++ .config/nvim/after/ftplugin/markdown.lua | 44 ++++++++++++++++++++++ .config/nvim/lua/plugin/lsp/html.lua | 10 +++++ .config/nvim/lua/plugin/lsp/init.lua | 2 + .config/nvim/lua/plugin/lsp/tsserver.lua | 11 ++++++ .config/nvim/lua/plugin/treesitter.lua | 1 + .config/nvim/lua/settings.lua | 5 +++ 7 files changed, 87 insertions(+) create mode 100644 .config/nvim/after/ftplugin/javascript.lua create mode 100644 .config/nvim/after/ftplugin/markdown.lua create mode 100644 .config/nvim/lua/plugin/lsp/html.lua create mode 100644 .config/nvim/lua/plugin/lsp/tsserver.lua diff --git a/.config/nvim/after/ftplugin/javascript.lua b/.config/nvim/after/ftplugin/javascript.lua new file mode 100644 index 0000000..6a3dc86 --- /dev/null +++ b/.config/nvim/after/ftplugin/javascript.lua @@ -0,0 +1,14 @@ +-- Author : swytch +-- Created : Saturday Feb. 18, 2023 20:41:05 CET +-- License : GPLv3 +-- Description : javascript settings file + + +local format_sync_grp = vim.api.nvim_create_augroup("Format", {}) +vim.api.nvim_create_autocmd("BufWritePre", { + pattern = "*.js", + callback = function() + vim.lsp.buf.format({ timeout_ms = 200 }) + end, + group = format_sync_grp, +}) diff --git a/.config/nvim/after/ftplugin/markdown.lua b/.config/nvim/after/ftplugin/markdown.lua new file mode 100644 index 0000000..40defc9 --- /dev/null +++ b/.config/nvim/after/ftplugin/markdown.lua @@ -0,0 +1,44 @@ +-- Author : swytch +-- Created : Saturday Feb. 18, 2023 21:54:19 CET +-- License : GPLv3 +-- Description : markdown settings file + + +-- Snippets +local ls = require("luasnip") + +-- some shorthands... +local s = ls.snippet +local sn = ls.snippet_node +local t = ls.text_node +local i = ls.insert_node +local d = ls.dynamic_node + +-- Returns a snippet_node wrapped around an insertNode whose initial +-- text value is set to the current date in the desired format. +local date_input = function(args, snip, old_state, fmt) + local fmt = fmt or "%Y-%m-%d" + return sn(nil, i(1, os.date(fmt))) +end + +ls.add_snippets("markdown", { + s("date", { + d(1, date_input, {}, { user_args = { "%Y-%m-%d" } }), + }), + s("datep", { + d(1, date_input, {}, { user_args = { "%Y-%m-%d %X %z" } }), + }), + s("/xrpt", { + t(""), + }), + s("bb", { + t({ "**" }), + i(1), + t({ "**" }), + }), + s("ii", { + t({ "*" }), + i(1), + t({ "*" }), + }), +}) diff --git a/.config/nvim/lua/plugin/lsp/html.lua b/.config/nvim/lua/plugin/lsp/html.lua new file mode 100644 index 0000000..e30f573 --- /dev/null +++ b/.config/nvim/lua/plugin/lsp/html.lua @@ -0,0 +1,10 @@ +-- Author : swytch +-- Created : Sunday Feb. 19, 2023 17:09:46 CET +-- License : GPLv3 +-- Description : neovim lsp config file for html-lsp + +local M = {} + +M.setup = function(opts) end + +return M diff --git a/.config/nvim/lua/plugin/lsp/init.lua b/.config/nvim/lua/plugin/lsp/init.lua index 4721084..7b225af 100644 --- a/.config/nvim/lua/plugin/lsp/init.lua +++ b/.config/nvim/lua/plugin/lsp/init.lua @@ -11,6 +11,8 @@ local servers = { "rust_analyzer", "lua_ls", "texlab", + "tsserver", + "html", } return { diff --git a/.config/nvim/lua/plugin/lsp/tsserver.lua b/.config/nvim/lua/plugin/lsp/tsserver.lua new file mode 100644 index 0000000..bbeb11f --- /dev/null +++ b/.config/nvim/lua/plugin/lsp/tsserver.lua @@ -0,0 +1,11 @@ +-- Author : swytch +-- Created : Sunday Feb. 19, 2023 17:12:35 CET +-- License : GPLv3 +-- Description : neovim lsp config file for tsserver + + +local M = {} + +M.setup = function(opts) end + +return M diff --git a/.config/nvim/lua/plugin/treesitter.lua b/.config/nvim/lua/plugin/treesitter.lua index 6b65232..8797bdb 100644 --- a/.config/nvim/lua/plugin/treesitter.lua +++ b/.config/nvim/lua/plugin/treesitter.lua @@ -13,6 +13,7 @@ return { opts = { ensure_installed = { "c", "cpp", "lua", "rust", "bash", "vim", "latex", "python", + "html", "javascript", "json", "markdown" }, highlight = { enable = true, diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua index 3336c43..0269caf 100644 --- a/.config/nvim/lua/settings.lua +++ b/.config/nvim/lua/settings.lua @@ -63,3 +63,8 @@ utils.create_augroup({ {"BufNewFile,BufRead", "*.mom", "set filetype=groff"}, {"BufNewFile,BufRead", "*.tex", "set filetype=tex"}, }, "enforce_filetypes") + +vim.api.nvim_create_autocmd({"BufEnter", "BufWinEnter"}, { + pattern = {"*.njk"}, + callback = function() vim.bo.filetype="html" end, +})