From 9b749922ea2d5653dfc0aa1d14136bbdef57173a Mon Sep 17 00:00:00 2001 From: matt1432 Date: Thu, 9 May 2024 17:14:55 -0400 Subject: [PATCH] feat(nvim): setup ts-error-translator.nvim --- common/home/neovim/langs/bash.nix | 2 +- common/home/neovim/langs/hyprlang.nix | 4 ++-- common/home/neovim/langs/java.nix | 2 +- common/home/neovim/langs/web.nix | 31 +++++++++++++++++++++------ flake.lock | 17 +++++++++++++++ flake.nix | 7 ++++++ 6 files changed, 53 insertions(+), 10 deletions(-) diff --git a/common/home/neovim/langs/bash.nix b/common/home/neovim/langs/bash.nix index fe993b4..e3df8eb 100644 --- a/common/home/neovim/langs/bash.nix +++ b/common/home/neovim/langs/bash.nix @@ -24,7 +24,7 @@ in { lua */ '' - vim.api.nvim_create_autocmd("FileType", { + vim.api.nvim_create_autocmd('FileType', { pattern = 'sh', command = 'setlocal ts=4 sw=4 sts=0 expandtab', }); diff --git a/common/home/neovim/langs/hyprlang.nix b/common/home/neovim/langs/hyprlang.nix index 84792d9..3222764 100644 --- a/common/home/neovim/langs/hyprlang.nix +++ b/common/home/neovim/langs/hyprlang.nix @@ -14,10 +14,10 @@ in */ '' vim.filetype.add({ - pattern = { [".*/hypr/.*%.conf"] = "hyprlang" }, + pattern = { ['.*/hypr/.*%.conf'] = 'hyprlang' }, }); - vim.api.nvim_create_autocmd("FileType", { + vim.api.nvim_create_autocmd('FileType', { pattern = 'hyprlang', command = 'setlocal ts=4 sw=4 sts=0 expandtab', }); diff --git a/common/home/neovim/langs/java.nix b/common/home/neovim/langs/java.nix index 0499441..3edde6b 100644 --- a/common/home/neovim/langs/java.nix +++ b/common/home/neovim/langs/java.nix @@ -31,7 +31,7 @@ in lua */ '' - vim.api.nvim_create_autocmd("FileType", { + vim.api.nvim_create_autocmd('FileType', { pattern = 'java', command = 'setlocal ts=4 sw=4 sts=0 expandtab', }); diff --git a/common/home/neovim/langs/web.nix b/common/home/neovim/langs/web.nix index 1a7f4f5..4f9367e 100644 --- a/common/home/neovim/langs/web.nix +++ b/common/home/neovim/langs/web.nix @@ -3,10 +3,17 @@ pkgs, lib, stylelint-lsp, + vimplugin-ts-error-translator-src, ... }: let inherit (config.vars) neovimIde; inherit (pkgs) vimPlugins; + + buildPlugin = pname: src: + pkgs.vimUtils.buildVimPlugin { + inherit pname src; + version = src.shortRev; + }; in lib.mkIf neovimIde { programs = { @@ -27,26 +34,34 @@ in lua */ '' - vim.api.nvim_create_autocmd("FileType", { + vim.api.nvim_create_autocmd('FileType', { pattern = { 'javascript', 'typescript', 'css', 'scss' }, command = 'setlocal ts=4 sw=4 sts=0 expandtab', }); - vim.api.nvim_create_autocmd("FileType", { + vim.api.nvim_create_autocmd('FileType', { pattern = 'html', command = 'setlocal ts=2 sw=2 expandtab', }); - vim.api.nvim_create_autocmd("FileType", { + vim.api.nvim_create_autocmd('FileType', { pattern = 'scss', command = 'setlocal iskeyword+=@-@', }); local lsp = require('lspconfig'); local coq = require('coq'); - local tsserver = require("typescript-tools"); + local tsserver = require('typescript-tools'); - tsserver.setup(coq.lsp_ensure_capabilities({})); + tsserver.setup(coq.lsp_ensure_capabilities({ + handlers = { + -- format error code with better error message + ['textDocument/publishDiagnostics'] = function(err, result, ctx, config) + require('ts-error-translator').translate_diagnostics(err, result, ctx, config) + vim.lsp.diagnostic.on_publish_diagnostics(err, result, ctx, config) + end, + }, + })); lsp.eslint.setup(coq.lsp_ensure_capabilities({ -- auto-save @@ -72,7 +87,7 @@ in }, })); - require('lspconfig').stylelint_lsp.setup(coq.lsp_ensure_capabilities({ + lsp.stylelint_lsp.setup(coq.lsp_ensure_capabilities({ settings = { stylelintplus = {}, }, @@ -81,6 +96,10 @@ in plugins = [ vimPlugins.typescript-tools-nvim + + { + plugin = buildPlugin "ts-error-translator" vimplugin-ts-error-translator-src; + } ]; }; }; diff --git a/flake.lock b/flake.lock index d14c4cc..46dd550 100644 --- a/flake.lock +++ b/flake.lock @@ -1730,6 +1730,7 @@ "touch-gestures-src": "touch-gestures-src", "trash-d-src": "trash-d-src", "vimplugin-easytables-src": "vimplugin-easytables-src", + "vimplugin-ts-error-translator-src": "vimplugin-ts-error-translator-src", "wpaperd": "wpaperd", "xresources-theme-src": "xresources-theme-src" } @@ -2056,6 +2057,22 @@ "type": "github" } }, + "vimplugin-ts-error-translator-src": { + "flake": false, + "locked": { + "lastModified": 1712269172, + "narHash": "sha256-NJ0qfKvkwZ/0GolAeATlQLyQ7nGN6Z6q3uRqI+73wPk=", + "owner": "dmmulroy", + "repo": "ts-error-translator.nvim", + "rev": "11ae55b28bde02663b5f983f59b0e3fd9c4e845b", + "type": "github" + }, + "original": { + "owner": "dmmulroy", + "repo": "ts-error-translator.nvim", + "type": "github" + } + }, "wpaperd": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index a8fe658..03d4c65 100644 --- a/flake.nix +++ b/flake.nix @@ -354,6 +354,13 @@ repo = "easytables.nvim"; flake = false; }; + + vimplugin-ts-error-translator-src = { + type = "github"; + owner = "dmmulroy"; + repo = "ts-error-translator.nvim"; + flake = false; + }; # # Nix tools