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"
+ } }