mirror of https://github.com/neovim/neovim.git
Compare commits
3 Commits
b5512ee00a
...
44c36b46c8
Author | SHA1 | Date |
---|---|---|
Tom Praschan | 44c36b46c8 | |
dundargoc | c18d7941ef | |
tom-anders | 402b07d794 |
|
@ -50,11 +50,6 @@ file(GLOB DOCFILES CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/runtime/doc/*.txt)
|
|||
set_directory_properties(PROPERTIES
|
||||
EP_PREFIX "${DEPS_BUILD_DIR}")
|
||||
|
||||
find_program(CCACHE_PRG ccache)
|
||||
if(CCACHE_PRG)
|
||||
set(CMAKE_C_COMPILER_LAUNCHER ${CMAKE_COMMAND} -E env CCACHE_SLOPPINESS=pch_defines,time_macros ${CCACHE_PRG})
|
||||
endif()
|
||||
|
||||
if(NOT CI_BUILD)
|
||||
set(CMAKE_INSTALL_MESSAGE NEVER)
|
||||
endif()
|
||||
|
|
|
@ -23,6 +23,12 @@ if(POLICY CMP0092)
|
|||
list(APPEND DEPS_CMAKE_ARGS -D CMAKE_POLICY_DEFAULT_CMP0092=NEW)
|
||||
endif()
|
||||
|
||||
find_program(CACHE_PRG NAMES ccache sccache)
|
||||
if(CACHE_PRG)
|
||||
set(CMAKE_C_COMPILER_LAUNCHER ${CMAKE_COMMAND} -E env CCACHE_SLOPPINESS=pch_defines,time_macros ${CACHE_PRG})
|
||||
list(APPEND DEPS_CMAKE_CACHE_ARGS -DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER})
|
||||
endif()
|
||||
|
||||
# MAKE_PRG
|
||||
if(UNIX)
|
||||
find_program(MAKE_PRG NAMES gmake make)
|
||||
|
@ -58,7 +64,8 @@ function(get_externalproject_options name DEPS_IGNORE_SHA)
|
|||
|
||||
set(EXTERNALPROJECT_OPTIONS
|
||||
DOWNLOAD_NO_PROGRESS TRUE
|
||||
EXTERNALPROJECT_OPTIONS URL ${${name_allcaps}_URL})
|
||||
EXTERNALPROJECT_OPTIONS URL ${${name_allcaps}_URL}
|
||||
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
|
||||
|
||||
if(NOT ${DEPS_IGNORE_SHA})
|
||||
list(APPEND EXTERNALPROJECT_OPTIONS URL_HASH SHA256=${${name_allcaps}_SHA256})
|
||||
|
|
|
@ -350,22 +350,43 @@ Lua module: vim.diagnostic *diagnostic-api*
|
|||
0-based rows and columns). |api-indexing|
|
||||
|
||||
Fields: ~
|
||||
• {bufnr}? (`integer`) Buffer number
|
||||
• {lnum} (`integer`) The starting line of the diagnostic
|
||||
(0-indexed)
|
||||
• {end_lnum}? (`integer`) The final line of the diagnostic (0-indexed)
|
||||
• {col} (`integer`) The starting column of the diagnostic
|
||||
(0-indexed)
|
||||
• {end_col}? (`integer`) The final column of the diagnostic
|
||||
(0-indexed)
|
||||
• {severity}? (`vim.diagnostic.Severity`) The severity of the
|
||||
diagnostic |vim.diagnostic.severity|
|
||||
• {message} (`string`) The diagnostic text
|
||||
• {source}? (`string`) The source of the diagnostic
|
||||
• {code}? (`string|integer`) The diagnostic code
|
||||
• {_tags}? (`{ deprecated: boolean, unnecessary: boolean}`)
|
||||
• {user_data}? (`any`) arbitrary data plugins can add
|
||||
• {namespace}? (`integer`)
|
||||
• {bufnr}? (`integer`) Buffer number
|
||||
• {lnum} (`integer`) The starting line of the
|
||||
diagnostic (0-indexed)
|
||||
• {end_lnum}? (`integer`) The final line of the diagnostic
|
||||
(0-indexed)
|
||||
• {col} (`integer`) The starting column of the
|
||||
diagnostic (0-indexed)
|
||||
• {end_col}? (`integer`) The final column of the diagnostic
|
||||
(0-indexed)
|
||||
• {severity}? (`vim.diagnostic.Severity`) The severity of
|
||||
the diagnostic |vim.diagnostic.severity|
|
||||
• {message} (`string`) The diagnostic text
|
||||
• {related_information}? (`vim.DiagnosticRelatedInformation[]`) An
|
||||
array of related diagnostic information. See
|
||||
|vim.DiagnosticRelatedInformation|.
|
||||
• {source}? (`string`) The source of the diagnostic
|
||||
• {code}? (`string|integer`) The diagnostic code
|
||||
• {_tags}? (`{ deprecated: boolean, unnecessary: boolean}`)
|
||||
• {user_data}? (`any`) arbitrary data plugins can add
|
||||
• {namespace}? (`integer`)
|
||||
|
||||
*vim.DiagnosticRelatedInformation*
|
||||
Related message and location for a diagnostic. This can be used to point
|
||||
to code locations that cause or are related to a diagnostics, e.g when
|
||||
duplicating a symbol in a scope.
|
||||
|
||||
Fields: ~
|
||||
• {bufnr}? (`integer`) Buffer number
|
||||
• {lnum} (`integer`) The starting line of the related information
|
||||
(0-indexed)
|
||||
• {end_lnum}? (`integer`) The final line of the related information
|
||||
(0-indexed)
|
||||
• {col} (`integer`) The starting column of the related
|
||||
information (0-indexed)
|
||||
• {end_col}? (`integer`) The final column of the related information
|
||||
(0-indexed)
|
||||
• {message} (`string`) The related information text
|
||||
|
||||
*vim.diagnostic.GetOpts*
|
||||
A table with the following keys:
|
||||
|
|
|
@ -271,6 +271,10 @@ The following new APIs and features were added.
|
|||
• |vim.lsp.buf.definition()|, |vim.lsp.buf.declaration()|,
|
||||
|vim.lsp.buf.type_definition()|, and |vim.lsp.buf.implementation()| now
|
||||
support the `loclist` field of |vim.lsp.ListOpts|.
|
||||
• Add `vim.Diagnostic.related_information` field and fill it with
|
||||
`lsp.DiagnosticRelatedInformation[]`. Deprecate
|
||||
`vim.Diagnostic.user_data.lsp.relatedInformation` in favor of this new
|
||||
field.
|
||||
|
||||
• Treesitter
|
||||
• Bundled parsers and queries (highlight, folds) for Markdown, Python, and
|
||||
|
|
|
@ -29,6 +29,9 @@ local M = {}
|
|||
--- The diagnostic text
|
||||
--- @field message string
|
||||
---
|
||||
--- An array of related diagnostic information
|
||||
--- @field related_information? vim.DiagnosticRelatedInformation[]
|
||||
---
|
||||
--- The source of the diagnostic
|
||||
--- @field source? string
|
||||
---
|
||||
|
@ -42,6 +45,29 @@ local M = {}
|
|||
---
|
||||
--- @field namespace? integer
|
||||
|
||||
--- Related message and location for a diagnostic.
|
||||
--- This can be used to point to code locations that cause or are related to
|
||||
--- a diagnostic, e.g when duplicating a symbol in a scope.
|
||||
--- @class vim.DiagnosticRelatedInformation
|
||||
---
|
||||
--- Buffer number
|
||||
--- @field bufnr? integer
|
||||
---
|
||||
--- The starting line of the related information (0-indexed)
|
||||
--- @field lnum integer
|
||||
---
|
||||
--- The final line of the related information (0-indexed)
|
||||
--- @field end_lnum? integer
|
||||
---
|
||||
--- The starting column of the related information (0-indexed)
|
||||
--- @field col integer
|
||||
---
|
||||
--- The final column of the related information (0-indexed)
|
||||
--- @field end_col? integer
|
||||
---
|
||||
--- The related information text
|
||||
--- @field message string
|
||||
|
||||
--- Each of the configuration options below accepts one of the following:
|
||||
--- - `false`: Disable this feature
|
||||
--- - `true`: Enable this feature, use default settings.
|
||||
|
|
|
@ -97,6 +97,33 @@ local function tags_lsp_to_vim(diagnostic, client_id)
|
|||
return tags
|
||||
end
|
||||
|
||||
---@param related_informations lsp.DiagnosticRelatedInformation[]
|
||||
---@param offset_encoding string
|
||||
---@return vim.DiagnosticRelatedInformation[]
|
||||
local function related_information_lsp_to_vim(related_informations, offset_encoding)
|
||||
return vim.iter(related_informations):map(
|
||||
--- @param related_information lsp.DiagnosticRelatedInformation
|
||||
--- @return vim.DiagnosticRelatedInformation
|
||||
function(related_information)
|
||||
local fname = vim.uri_to_fname(related_information.location.uri)
|
||||
local bufnr = vim.fn.bufadd(fname)
|
||||
if not bufnr then
|
||||
return
|
||||
end
|
||||
local buf_lines = get_buf_lines(bufnr)
|
||||
local start = related_information.location.range.start
|
||||
local _end = related_information.location.range['end']
|
||||
--- @type vim.DiagnosticRelatedInformation
|
||||
return {
|
||||
lnum = start.line,
|
||||
col = line_byte_from_position(buf_lines, start.line, start.character, offset_encoding),
|
||||
end_lnum = _end.line,
|
||||
end_col = line_byte_from_position(buf_lines, _end.line, _end.character, offset_encoding),
|
||||
message = related_information.message,
|
||||
}
|
||||
end)
|
||||
end
|
||||
|
||||
---@param diagnostics lsp.Diagnostic[]
|
||||
---@param bufnr integer
|
||||
---@param client_id integer
|
||||
|
@ -118,12 +145,15 @@ local function diagnostic_lsp_to_vim(diagnostics, bufnr, client_id)
|
|||
end_col = line_byte_from_position(buf_lines, _end.line, _end.character, offset_encoding),
|
||||
severity = severity_lsp_to_vim(diagnostic.severity),
|
||||
message = diagnostic.message,
|
||||
related_information = related_information_lsp_to_vim(diagnostic.relatedInformation,
|
||||
offset_encoding),
|
||||
source = diagnostic.source,
|
||||
code = diagnostic.code,
|
||||
_tags = tags_lsp_to_vim(diagnostic, client_id),
|
||||
user_data = {
|
||||
lsp = {
|
||||
-- usage of user_data.lsp.code is deprecated in favor of the top-level code field
|
||||
-- usage of user_data.lsp.code and user_data.lsp.relatedInformation is deprecated
|
||||
-- in favor of the top-level code and related_information fields
|
||||
code = diagnostic.code,
|
||||
codeDescription = diagnostic.codeDescription,
|
||||
relatedInformation = diagnostic.relatedInformation,
|
||||
|
@ -194,7 +224,7 @@ function M.get_namespace(client_id, is_pull)
|
|||
local client = vim.lsp.get_client_by_id(client_id)
|
||||
if is_pull then
|
||||
local server_id =
|
||||
vim.tbl_get((client or {}).server_capabilities, 'diagnosticProvider', 'identifier')
|
||||
vim.tbl_get((client or {}).server_capabilities, 'diagnosticProvider', 'identifier')
|
||||
local key = string.format('%d:%s', client_id, server_id or 'nil')
|
||||
local name = string.format(
|
||||
'vim.lsp.%s.%d.%s',
|
||||
|
@ -431,8 +461,8 @@ function M._enable(bufnr)
|
|||
buffer = bufnr,
|
||||
callback = function(opts)
|
||||
if
|
||||
opts.data.method ~= ms.textDocument_didChange
|
||||
and opts.data.method ~= ms.textDocument_didOpen
|
||||
opts.data.method ~= ms.textDocument_didChange
|
||||
and opts.data.method ~= ms.textDocument_didOpen
|
||||
then
|
||||
return
|
||||
end
|
||||
|
@ -461,9 +491,9 @@ function M._enable(bufnr)
|
|||
local clients = vim.lsp.get_clients({ bufnr = bufnr, method = ms.textDocument_diagnostic })
|
||||
|
||||
if
|
||||
not vim.iter(clients):any(function(c)
|
||||
return c.id ~= args.data.client_id
|
||||
end)
|
||||
not vim.iter(clients):any(function(c)
|
||||
return c.id ~= args.data.client_id
|
||||
end)
|
||||
then
|
||||
disable(bufnr)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue