diff --git a/README.md b/README.md index 0d8e813..56f660c 100644 --- a/README.md +++ b/README.md @@ -407,6 +407,8 @@ Jump between symbols with treesitter (with `]r` and `[r`) ### Diagnostic Visual studio code style show errors minimap in scroll bar area +(Check setup for `diag_scroll_bar_sign`) + ![diagnostic_scroll_bar](https://user-images.githubusercontent.com/1681295/128736430-e365523d-810c-4c16-a3b4-c74969f45f0b.jpg) diff --git a/lua/navigator/diagnostics.lua b/lua/navigator/diagnostics.lua index c4880a6..082a889 100644 --- a/lua/navigator/diagnostics.lua +++ b/lua/navigator/diagnostics.lua @@ -27,10 +27,10 @@ local function error_marker(result, client_id) log(result, bufnr) if result == nil or result.diagnostics == nil or #result.diagnostics == 0 then - local diag_cnt = vim.lsp.diagnostic.get_count(0, [[Error]]) - + vim.lsp.diagnostic.get_count(0, [[Warning]]) - if diag_cnt == 0 then - vim.api.nvim_buf_clear_namespace(0, _NG_VT_NS, 0, -1) + local diag_cnt = vim.lsp.diagnostic.get_count(bufnr, [[Error]]) + + vim.lsp.diagnostic.get_count(bufnr, [[Warning]]) + if diag_cnt == 0 and _NG_VT_NS ~= nil then + vim.api.nvim_buf_clear_namespace(bufnr, _NG_VT_NS, 0, -1) end return end @@ -208,8 +208,34 @@ M.set_diag_loclist = function() end end -function M.clear_blame_VT() -- important for clearing out the text when our cursor moves +function M.clear_blame_VT() -- important for clearing out when no more errors vim.api.nvim_buf_clear_namespace(0, _NG_VT_NS, 0, -1) + _NG_VT_NS = nil end +-- TODO: callback when scroll +function M.update_err_marker() + if _NG_VT_NS == nil then + -- nothing to update + return + end + local bufnr = vim.fn.bufnr() + + local diag_cnt = vim.lsp.diagnostic.get_count(bufnr, [[Error]]) + + vim.lsp.diagnostic.get_count(bufnr, [[Warning]]) + if diag_cnt == 0 and _NG_VT_NS ~= nil then + vim.api.nvim_buf_clear_namespace(bufnr, _NG_VT_NS, 0, -1) + return + end + + -- redraw + vim.api.nvim_buf_clear_namespace(0, _NG_VT_NS, 0, -1) + local errors = vim.lsp.diagnostic.get(bufnr) + local result = {diagnostics = errors} + error_marker(result) +end + +-- TODO: update the marker +-- vim.cmd [[autocmd WinScrolled * lua require'navigator.diagnostics'.update_err_marker()]] + return M diff --git a/lua/navigator/gui.lua b/lua/navigator/gui.lua index 6f63049..28113a8 100644 --- a/lua/navigator/gui.lua +++ b/lua/navigator/gui.lua @@ -214,7 +214,7 @@ return M call_by = { }, col = 40, display_filename = "./curry.js", - filename = "/Users/ray.xu/lsp_test/js/curry.js", + filename = "/Users/username/lsp_test/js/curry.js", lnum = 4, range = { end = { @@ -228,7 +228,7 @@ return M }, rpath = "js/curry.js", text = " (sum, element, index) => (sum += element * vector2[index]),", - uri = "file:///Users/ray.xu/lsp_test/js/curry.js" + uri = "file:///Users/username/lsp_test/js/curry.js" } --]] @@ -252,7 +252,7 @@ return M } }, col = 22, display_filename = "./curry.js", - filename = "/Users/ray.xu/lsp_test/js/curry.js", + filename = "/Users/username/lsp_test/js/curry.js", lnum = 4, range = { end = { @@ -266,6 +266,6 @@ return M }, rpath = "js/curry.js", text = " 4: (sum, element, index) => (sum += element * vector   curriedDot()", - uri = "file:///Users/ray.xu/lsp_test/js/curry.js" + uri = "file:///Users/username/lsp_test/js/curry.js" -- ]] diff --git a/lua/navigator/protocal.json b/lua/navigator/protocal.json index 9fb8e27..ce2bf1f 100644 --- a/lua/navigator/protocal.json +++ b/lua/navigator/protocal.json @@ -5,7 +5,7 @@ parameter line = 13 }, textDocument = { - uri = "file:///Users/ray.xu/lsp_test/go/interface.go" + uri = "file:///Users/username/lsp_test/go/interface.go" } } @@ -38,7 +38,7 @@ dir from result { { line = 39 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, fromRanges = { { end = { @@ -75,7 +75,7 @@ dir from result { { line = 43 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, fromRanges = { { end = { @@ -116,7 +116,7 @@ dir from result { { line = 26 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, { range = { ["end"] = { @@ -128,7 +128,7 @@ dir from result { { line = 35 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" } } --]] @@ -146,7 +146,7 @@ definition.lua:9: { { line = 33 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" } } @@ -165,7 +165,7 @@ definition.lua:9: { { line = 33 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" } } } } @@ -186,7 +186,7 @@ definition.lua:9: { { line = 7 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, name = "command-line-arguments.geometry" }, { @@ -203,7 +203,7 @@ definition.lua:9: { { line = 12 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, name = "command-line-arguments.rect" }, { @@ -220,7 +220,7 @@ definition.lua:9: { { line = 43 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, name = "command-line-arguments.main" }, { @@ -237,7 +237,7 @@ definition.lua:9: { { line = 8 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, name = "command-line-arguments.geometry.area" }, { @@ -254,7 +254,7 @@ definition.lua:9: { { line = 13 } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" }, name = "command-line-arguments.rect.width" }} @@ -298,7 +298,7 @@ definition.lua:9: { { severity = 1, source = "compiler" } }, - uri = "file:///Users/ray.xu/lsp-test/go/interface.go" + uri = "file:///Users/username/lsp-test/go/interface.go" } @@ -320,7 +320,7 @@ definition.lua:9: { { } } }, textDocument = { - uri = "file:///Users/ray.xu/lsp_test/go/ref.go", + uri = "file:///Users/username/lsp_test/go/ref.go", version = 0 } } } @@ -341,7 +341,7 @@ definition.lua:9: { { line = 4 } }, - URI = "file:///Users/ray.xu/lsp_test/go/ref.go" + URI = "file:///Users/username/lsp_test/go/ref.go" } }, command = "gopls.apply_fix", title = "undeclared name: rect" @@ -383,7 +383,7 @@ definition.lua:9: { { line = 4 } }, - URI = "file:///Users/ray.xu/lsp_test/go/ref.go" + URI = "file:///Users/username/lsp_test/go/ref.go" } }, command = "gopls.apply_fix", title = "Extract to function" @@ -433,7 +433,7 @@ definition.lua:9: { { } } }, textDocument = { - uri = "file:///Users/ray.xu/lsp_test/go/ref.go", + uri = "file:///Users/username/lsp_test/go/ref.go", version = 0 } } } @@ -457,7 +457,7 @@ definition.lua:9: { { } } }, textDocument = { - uri = "file:///Users/ray.xu/lsp_test/go/ref.go", + uri = "file:///Users/username/lsp_test/go/ref.go", version = 0 } } } @@ -969,3 +969,59 @@ definition.lua:9: { { range = { 25, 32 } }, }} + + + + +-- get diagnostics response +{ { + code = "UndeclaredName", + codeDescription = { + href = "https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UndeclaredName" + }, + col = 16, + display_filename = "./interface.go", + filename = "/Users/username/lsp_test/go/interface.go", + lnum = 38, + message = "undeclared name: geometry", + range = { + end = { + character = 23, + line = 37 + }, + start = { + character = 15, + line = 37 + } + }, + severity = 1, + source = "compiler", + tags = { 1 }, + text = "🈲func measure(g geometry) int {📛undeclared name: geometry", + uri = "file:///Users/username/lsp_test/go/interface.go" + },{ + code = "UndeclaredName", + codeDescription = { + href = "https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source=gopls#UndeclaredName" + }, + col = 9, + display_filename = "./interface.go", + filename = "/Users/username/lsp_test/go/interface.go", + lnum = 30, + message = "undeclared name: circle", + range = { + end = { + character = 14, + line = 29 + }, + start = { + character = 8, + line = 29 + } + }, + severity = 1, + source = "compiler", + tags = { 1 }, + text = "🈲func (c circle) area() float64 {📛undeclared name: circle", + uri = "file:///Users/username/lsp_test/go/interface.go" + } }