Giter Club home page Giter Club logo

Comments (3)

VonHeikemen avatar VonHeikemen commented on September 22, 2024 1

I've added highlight_symbol() function to lsp-zero now.

from lsp-zero.nvim.

VonHeikemen avatar VonHeikemen commented on September 22, 2024

Sounds good. I can add that to lsp-zero.

Here is a snippet you can test before I update lsp-zero.

vim.opt.updatetime = 350
vim.cmd([[
  hi! LspReferenceRead cterm=bold ctermbg=red guibg=LightYellow
  hi! LspReferenceText cterm=bold ctermbg=red guibg=LightYellow
  hi! LspReferenceWrite cterm=bold ctermbg=red guibg=LightYellow
]])

local function highlight_symbol(client, bufnr)
  if not client.supports_method('textDocument/documentHighlight') then
    return
  end

  local autocmd = vim.api.nvim_create_autocmd
  local augroup = vim.api.nvim_create_augroup('lsp_zero_highlight_symbol', {clear = false})

  vim.api.nvim_clear_autocmds({buffer = bufnr, group = augroup})

  autocmd({'CursorHold', 'CursorHoldI'}, {
    group = augroup,
    buffer = bufnr,
    callback = vim.lsp.buf.document_highlight,
  })

  autocmd({'CursorMoved', 'CursorMovedI'}, {
    group = augroup,
    buffer = bufnr,
    callback = vim.lsp.buf.clear_references,
  })
end

local lsp_zero = require('lsp-zero')

lsp_zero.on_attach(function(client, bufnr)
  lsp_zero.default_keymaps({ buffer = bufnr })
  highlight_symbol(client, bufnr)
end)

The function highlight_symbol can be added to lsp-zero, but there is still some things the user should do. To control the time the user would have to update the option updatetime. I don't want to manipulate the updatetime inside lsp-zero because it's a global option with side effects, which the user should consider. And the color of the highlights should be handled by the colorscheme.

from lsp-zero.nvim.

screendriver avatar screendriver commented on September 22, 2024

Here is a snippet you can test before I update lsp-zero.

Looks good! Thank you very much 👍 Works exactly as it should 🙂

I don't want to manipulate the updatetime inside lsp-zero because it's a global option with side effects

Sounds reasonable.

from lsp-zero.nvim.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.