diff --git a/README.md b/README.md index deb88aa..6f556d2 100644 --- a/README.md +++ b/README.md @@ -143,6 +143,34 @@ EOF You can remove your lspconfig.lua and use the hooks of navigator.lua. As the navigator will bind keys and handler for you. The LSP will be loaded lazily based on filetype. +A treesitter only mode. In some cases LSP is buggy or not available, you can also us treesitter +standalone + +```vim +call plug#begin('~/.vim/plugged') + +Plug 'ray-x/guihua.lua', {'do': 'cd lua/fzy && make' } +Plug 'ray-x/navigator.lua' + +" Plug 'hrsh7th/nvim-compe' and other plugins you commenly use... + +" optional, if you need treesitter symbol support +Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} +" optional: +Plug 'nvim-treesitter/nvim-treesitter-refactor' " this provides "go to def" etc + +call plug#end() + +lua < lua vim.lsp.buf.document_highlight()` +That is where you saw current symbol been highlighted. + +* GHListDark and GHTextViewDark is used for floating listvew and TextView. They are be based on current background +(Normal) and PmenuSel + +* In future, I will use NormalFloat for floating view. But ATM, most of colorscheme does not define NormalFloat + +You can override above highlight to fit your current colorscheme + + ## Screenshots colorscheme: [aurora](https://github.com/ray-x/aurora) diff --git a/lua/navigator/dochighlight.lua b/lua/navigator/dochighlight.lua index a272e98..7aa4813 100644 --- a/lua/navigator/dochighlight.lua +++ b/lua/navigator/dochighlight.lua @@ -24,7 +24,7 @@ local function add_locs(bufnr, result) _NG_hi_list[symbol] = {range = {}} end if _NG_hi_list[symbol] ~= nil then - log("already added", symbol) + trace("already added", symbol) _NG_hi_list[symbol].range = {} -- vim.fn.matchdelete(hid) end @@ -37,7 +37,7 @@ local function nohl() for key, value in pairs(_NG_hi_list) do if value.hi_ids ~= nil then for _, v in ipairs(value.hi_ids) do - log("delete", v) + trace("delete", v) vim.fn.matchdelete(v) end _NG_hi_list[key].hi_ids = nil @@ -85,7 +85,7 @@ local function hi_symbol() total_match = tonumber(p) end if total_match == totalref then -- same number as matchpos - log(total_match, "use matchadd()") + trace(total_match, "use matchadd()") local k = range[1].kind local hi_name = string.format("NGHiReference_%i_%i", _NG_ref_hi_idx, k) local m = string.format("\\<%s\\>", symbol_wd) @@ -107,7 +107,7 @@ local function hi_symbol() end local w = value.range['end'].character - value.range.start.character local hi_name = string.format("NGHiReference_%i_%i", _NG_ref_hi_idx, k) - log(hi_name, {l, cs, w}) + trace(hi_name, {l, cs, w}) local m = vim.fn.matchaddpos(hi_name, {{l, cs, w}}, 10) table.insert(_NG_hi_list[symbol].hi_ids, m) end @@ -153,7 +153,7 @@ local function handle_document_highlight(_, _, result, _, bufnr, _) end -- modify from vim-illuminate local function goto_adjent_reference(opt) - log(opt) + trace(opt) opt = vim.tbl_extend("force", {forward = true, wrap = true}, opt or {}) local bufnr = vim.api.nvim_get_current_buf() @@ -187,7 +187,7 @@ local function goto_adjent_reference(opt) next = refs[nexti].range end - log(next) + trace(next) vim.api.nvim_win_set_cursor(0, {next.start.line + 1, next.start.character}) return next end diff --git a/lua/navigator/gui.lua b/lua/navigator/gui.lua index 70a5fcc..e2faa17 100644 --- a/lua/navigator/gui.lua +++ b/lua/navigator/gui.lua @@ -189,9 +189,8 @@ function M.new_list_view(opts) pos = 1 end local l = idx(data, pos) -- bug it not work with fzy filter - log(data) if l.filename ~= nil then - trace("openfile ", l.filename, l.lnum, l.col) + log("openfile ", l.filename, l.lnum, l.col) util.open_file_at(l.filename, l.lnum, l.col) end end, diff --git a/lua/navigator/lspclient/clients.lua b/lua/navigator/lspclient/clients.lua index 3c9e3ad..0bfbaee 100644 --- a/lua/navigator/lspclient/clients.lua +++ b/lua/navigator/lspclient/clients.lua @@ -20,7 +20,11 @@ end local has_lsp, lspconfig = pcall(require, "lspconfig") if not has_lsp then - error("loading lsp config") + return { + setup = function() + print("loading lsp config failed LSP may not working correctly") + end + } end local highlight = require "navigator.lspclient.highlight" diff --git a/lua/navigator/lspclient/mapping.lua b/lua/navigator/lspclient/mapping.lua index dd18771..1126171 100644 --- a/lua/navigator/lspclient/mapping.lua +++ b/lua/navigator/lspclient/mapping.lua @@ -10,21 +10,25 @@ local event_hdlrs = { {ev = "CursorMoved", func = "clear_references()"} } +local double = {"╔", "═", "╗", "║", "╝", "═", "╚", "║"} +local single = {"╭", "─", "╮", "│", "╯", "─", "╰", "│"} local key_maps = { {key = "gr", func = "references()"}, {mode = "i", key = "", func = "signature_help()"}, {key = "gs", func = "signature_help()"}, {key = "g0", func = "document_symbol()"}, {key = "gW", func = "workspace_symbol()"}, {key = "", func = "definition()"}, - {key = "gD", func = "declaration()"}, + {key = "gD", func = "declaration({ popup_opts = { border = 'single' }})"}, {key = "gp", func = "require('navigator.definition').definition_preview()"}, {key = "gT", func = "require('navigator.treesitter').buf_ts()"}, - {key = "GT", func = "require('navigator.treesitter').bufs_ts()"}, {key = "K", func = "hover()"}, + {key = "GT", func = "require('navigator.treesitter').bufs_ts()"}, + {key = "K", func = "hover({ popup_opts = { border = single }})"}, {key = "ga", mode = "n", func = "code_action()"}, {key = "ga", mode = "v", func = "range_code_action()"}, {key = "re", func = "rename()"}, {key = "gi", func = "incoming_calls()"}, {key = "go", func = "outgoing_calls()"}, {key = "gi", func = "implementation()"}, {key = "gt", func = "type_definition()"}, {key = "gL", func = "diagnostic.show_line_diagnostics()"}, {key = "gG", func = "require('navigator.diagnostics').show_diagnostic()"}, - {key = "]d", func = "diagnostic.goto_next()"}, {key = "[d", func = "diagnostic.goto_prev()"}, + {key = "]d", func = "diagnostic.goto_next({ popup_opts = { border = single }})"}, + {key = "[d", func = "diagnostic.goto_next({ popup_opts = { border = single }})"}, {key = "]r", func = "require('navigator.treesitter').goto_next_usage()"}, {key = "[r", func = "require('navigator.treesitter').goto_previous_usage()"}, {key = "", func = "definition()"}, {key = "g", func = "implementation()"}, @@ -174,7 +178,7 @@ function M.setup(user_opts) vim.lsp.handlers["textDocument/signatureHelp"] = require"navigator.signature".signature_handler end - -- vim.lsp.handlers["textDocument/hover"] = require 'navigator.hover'.hover_handler + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {border = single}) end return M diff --git a/lua/navigator/symbols.lua b/lua/navigator/symbols.lua index 80139f4..d631494 100644 --- a/lua/navigator/symbols.lua +++ b/lua/navigator/symbols.lua @@ -116,7 +116,7 @@ function M.document_symbol_handler(err, _, result, _, bufnr) child.range = c.range local ckind = symbol_kind(child.kind) child.selectionRange = c.selectionRange - child.fname = fname + child.filename = fname child.uri = uri child.lnum = c.range.start.line + 1 child.detail = c.detail or ""