Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

textDocument/codeAction workspace edit title with new line #1035

Closed
aspeddro opened this issue Apr 11, 2022 · 0 comments
Closed

textDocument/codeAction workspace edit title with new line #1035

aspeddro opened this issue Apr 11, 2022 · 0 comments
Labels
bug Something isn't working

Comments

@aspeddro
Copy link

aspeddro commented Apr 11, 2022

Describe the bug
A textDocument/codeAction request return a edit with title very long containing newlines \n

To Reproduce

Neovim head:

nvim --version
NVIM v0.7.0-dev+1425-gff726cc56
Build type: RelWithDebInfo
LuaJIT 2.1.0-beta3
  1. File example
local null_ls = require 'null-ls'
local formatting = null_ls.builtins.formatting

null_ls.setup {
  debug = false,
  sources = {
    formatting.prettier.with {
      only_local = 'node_modules/.bin',
      condition = function(utils)
        return utils.root_has_file {
          '.prettierrc',
          '.prettierrc.json',
          '.prettierrc.yml',
          '.prettierrc.yaml',
          '.prettierrc.json5',
          '.prettierrc.js',
          '.prettierrc.cjs',
          'prettier.config.js',
          'prettier.config.cjs',
          '.prettierrc.toml',
        }
      end,
    },
    formatting.stylua.with {
      condition = function(utils)
        return utils.root_has_file { 'stylua.toml', '.stylua.toml' }
      end,
    },
    -- formatting.styler,
    formatting.black.with {
      condition = function(utils)
        return utils.root_has_file { 'setup.py', 'setup.cfg', 'pyproject.toml' }
      end,
    },
    formatting.rescript.with {
      only_local = 'node_modules/.bin',
      condition = function(utils)
        return utils.root_has_file { 'bsconfig.json' }
      end,
    },
    -- code_actions.gitsigns,
  },
  on_attach = function(client, bufnr)
    -- Format on Save
    if client.resolved_capabilities.document_formatting then
      vim.cmd [[
        augroup nullls_lsp_buf_format
          au! BufWritePre <buffer>
          autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync()
        augroup END
      ]]
    end

    -- if client.resolved_capabilities.document_range_formatting then
    --   vim.api.nvim_buf_set_keymap(
    --     bufnr,
    --     'v',
    --     '<leader>f',
    --     '<cmd>lua vim.lsp.buf.range_formatting()<CR>',
    --     {
    --       noremap = true,
    --       silent = false,
    --     }
    --   )
    -- end
  end,
}
  1. Send a request:
:lua vim.lsp.buf_request_all(0, "textDocument/codeAction", vim.lsp.util.make_range_params(), function(results) print(vim.inspect(results)) end)
Server Response:
{ {
    result = { {
        command = {
          arguments = { {
              action = "add",
              key = "Lua.diagnostics.disable",
              uri = "file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua",
              value = "unused-local"
            } },
          command = "lua.setConfig",
          title = "Disable diagnostics"
        },
        kind = "quickfix",
        title = "Disable diagnostics in the workspace (unused-local)."
      }, {
        edit = {
          changes = {
            ["file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua"] = { {
                newText = "---@diagnostic disable-next-line: unused-local\n",
                range = {
                  end = {
                    character = 0,
                    line = 42
                  },
                  start = {
                    character = 0,
                    line = 42
                  }
                }
              } }
          }
        },
        kind = "quickfix",
        title = "Disable diagnostics on this line (unused-local)."
      }, {
        edit = {
          changes = {
            ["file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua"] = { {
                newText = "---@diagnostic disable: unused-local\n",
                range = {
                  end = {
                    character = 0,
                    line = 0
                  },
                  start = {
                    character = 0,
                    line = 0
                  }
                }
              } }
          }
        },
        kind = "quickfix",
        title = "Disable diagnostics in this file (unused-local)."
      }, {
        edit = {
          changes = {
            ["file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua"] = { {
                newText = "client",
                range = {
                  end = {
                    character = 36,
                    line = 42
                  },
                  start = {
                    character = 31,
                    line = 42
                  }
                }
              }, {
                newText = "bufnr",
                range = {
                  end = {
                    character = 29,
                    line = 42
                  },
                  start = {
                    character = 23,
                    line = 42
                  }
                }
              } }
          }
        },
        kind = "refactor.rewrite",
        title = "Change to parameter 1 of `on_attach = function(client, bufnr)\n    -- Format on Save\n    if client.resolved_capabilities.document_formatting
then\n      vim.cmd [[\n        augroup nullls_lsp_buf_format\n          au! BufWritePre <buffer>\n          autocmd BufWritePre <buffer> lua vim.lsp.buf.forma
tting_sync()\n        augroup END\n      ]]\n    end\n\n    -- if client.resolved_capabilities.document_range_formatting then\n    --   vim.api.nvim_buf_set_ke
ymap(\n    --     bufnr,\n    --     'v',\n    --     '<leader>f',\n    --     '<cmd>lua vim.lsp.buf.range_formatting()<CR>',\n    --     {\n    --       norem
ap = true,\n    --       silent = false,\n    --     }\n    --   )\n    -- end\n  end`"
      } }
  } }
67 lines yanked
{ {
    result = { {
        command = {
          arguments = { {
              action = "add",
              key = "Lua.diagnostics.disable",
              uri = "file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua",
              value = "unused-local"
            } },
          command = "lua.setConfig",
          title = "Disable diagnostics"
        },
        kind = "quickfix",
        title = "Disable diagnostics in the workspace (unused-local)."
      }, {
        edit = {
          changes = {
            ["file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua"] = { {
                newText = "---@diagnostic disable-next-line: unused-local\n",
                range = {
                  end = {
                    character = 0,
                    line = 42
                  },
                  start = {
                    character = 0,
                    line = 42
                  }
                }
              } }
          }
        },
        kind = "quickfix",
        title = "Disable diagnostics on this line (unused-local)."
      },
{
        edit = {
          changes = {
            ["file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua"] = { {
                newText = "---@diagnostic disable: unused-local\n",
                range = {
                  end = {
                    character = 0,
                    line = 0
                  },
                  start = {
                    character = 0,
                    line = 0
                  }
                }
              } }
          }
        },
        kind = "quickfix",
        title = "Disable diagnostics in this file (unused-local)."
      }, {
        edit = {
          changes = {
            ["file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua"] = { {
                newText = "client",
                range = {
                  end = {
                    character = 36,
                    line = 42
                  },
                  start = {
                    character = 31,
                    line = 42
                  }
                }
              }, {
                newText = "bufnr",
                range = {
                  end = {
                    character = 29,
                    line = 42
                  },
                  start = {
                    character = 23,
                    line = 42
                  }
                }
              } }
          }
        },
        kind = "refactor.rewrite",
        title = "Change to parameter 1 of `on_attach = function(client, bufnr)\n    -- Format on Save\n    if client.resolved_capabilities.document_formatting
then\n      vim.cmd [[\n        augroup nullls_lsp_buf_format\n          au! BufWritePre <buffer>\n          autocmd BufWritePre <buffer> lua vim.lsp.buf.forma
tting_sync()\n        augroup END\n      ]]\n    end\n\n    -- if client.resolved_capabilities.document_range_formatting then\n    --   vim.api.nvim_buf_set_ke
ymap(\n    --     bufnr,\n    --     'v',\n    --     '<leader>f',\n    --     '<cmd>lua vim.lsp.buf.range_formatting()<CR>',\n    --     {\n    --       norem
ap = true,\n    --       silent = false,\n    --     }\n    --   )\n    -- end\n  end`"
      } }
  } }

Last action title:

title = "Change to parameter 1 of `on_attach = function(client, bufnr)\n    -- Format on Save\n    if client.resolved_capabilities.document_formatting
then\n      vim.cmd [[\n        augroup nullls_lsp_buf_format\n          au! BufWritePre <buffer>\n          autocmd BufWritePre <buffer> lua vim.lsp.buf.forma
tting_sync()\n        augroup END\n      ]]\n    end\n\n    -- if client.resolved_capabilities.document_range_formatting then\n    --   vim.api.nvim_buf_set_ke
ymap(\n    --     bufnr,\n    --     'v',\n    --     '<leader>f',\n    --     '<cmd>lua vim.lsp.buf.range_formatting()<CR>',\n    --     {\n    --       norem
ap = true,\n    --       silent = false,\n    --     }\n    --   )\n    -- end\n  end`"

Expected behavior
It should only return the name of the function

title = "Change to parameter 1 of `on_attach`"

Screenshots
image

Reproduce Screenshot:

  1. Go to line
  2. Run :lua vim.lsp.buf.code_action()

Environment (please complete the following information):

  • OS: [Arch Linux]
  • Is WSL remote? no
  • Client: [Neovim]

Provide logs

LOG
[02:28:52.739][info] [#0:/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/main.lua:65]: Lua Lsp startup, root: 	/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server
[02:28:52.739][info] [#0:/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/main.lua:66]: ROOT:	/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server
[02:28:52.739][info] [#0:/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/main.lua:67]: LOGPATH:	/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/log
[02:28:52.739][info] [#0:/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/main.lua:68]: METAPATH:	/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/meta
[02:28:52.739][info] [#0:/home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/main.lua:69]: VERSION:	3.0.0
[02:28:52.767][info] [#0:script/service/service.lua:141]:
========= Medical Examination Report =========
    --------------- Memory ---------------
        Total: 1.338 MB
        # 00 : 1.338 MB
        # 01 : 0.000 MB
        # 02 : 0.000 MB
        # 03 : 0.000 MB
        # 04 : 0.000 MB
    --------------- Coroutine ---------------
        Total:     0
        Running:   0
        Suspended: 0
        Normal:    0
        Dead:      0
    --------------- Cache ---------------
        Total: 1
        Dead:  0
    ---------------  RPC  ---------------
        Holdon:   0
        Waiting:  0
==============================================
[02:28:52.872][info] [#0:script/language.lua:135]: VSC language: nil
[02:28:52.872][info] [#0:script/language.lua:136]: LS  language: en-us
[02:28:52.977][info] [#0:script/provider/provider.lua:52]: Load config from client	fallback
[02:28:52.977][info] [#0:script/library.lua:207]: Init builtin library at:	nil
[02:28:52.996][info] [#0:script/plugin.lua:80]: plugin path:	nil
[02:28:52.997][info] [#0:script/provider/provider.lua:52]: Load config from client	fallback
[02:28:52.997][info] [#0:script/workspace/workspace.lua:278]: Preload start:	<fallback>
[02:28:52.997][info] [#0:script/workspace/workspace.lua:294]: Scan library at:	file:///home/pedro/.local/share/nvim/site/pack/packer/start/lua-dev.nvim/types
[02:28:52.998][warn] [#0:script/proto/proto.lua:122]: Response of [workspace/semanticTokens/refresh] error [-32601]: MethodNotFound
[02:28:52.998][warn] [#0:script/proto/proto.lua:122]: Response of [workspace/semanticTokens/refresh] error [-32601]: MethodNotFound
[02:28:52.999][info] [#0:script/workspace/workspace.lua:294]: Scan library at:	file:///home/pedro/.local/share/nvim/lsp_servers/sumneko_lua/extension/server/meta/LuaJIT%20en-us%20utf8
[02:28:52.999][info] [#0:script/workspace/workspace.lua:294]: Scan library at:	file:///usr/share/nvim/runtime/lua
[02:28:53.001][info] [#0:script/workspace/workspace.lua:294]: Scan library at:	file:///home/pedro/.local/share/nvim/site/pack/packer/start/plenary.nvim/lua
[02:28:54.788][info] [#0:script/workspace/workspace.lua:308]: Found 145 files at:	<fallback>
[02:28:55.655][info] [#0:script/workspace/loading.lua:154]: Loaded finish.
[02:28:55.655][info] [#0:script/workspace/workspace.lua:310]: Preload finish at:	<fallback>
[02:28:55.656][info] [#0:script/provider/diagnostic.lua:388]: Diagnostics scope [<fallback>], files count:[146]
[02:28:55.658][warn] [#0:script/proto/proto.lua:171]: Method [textDocument/didOpen] takes [0.935]sec. {
  jsonrpc = "2.0",
  method = "textDocument/didOpen",
  params = {
    textDocument = {
      languageId = "lua",
      text = '"***"',
      uri = "file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua",
      version = 0
    }
  }
}
[02:28:55.658][warn] [#0:script/proto/proto.lua:171]: Method [textDocument/documentHighlight] takes [0.934]sec. {
  id = 2,
  jsonrpc = "2.0",
  method = "textDocument/documentHighlight",
  params = {
    position = {
      character = 0,
      line = 0
    },
    textDocument = {
      uri = "file:///home/pedro/.config/nvim/lua/user/plugins/null-ls.lua"
    }
  }
}
[02:28:55.670][info] [#0:script/provider/diagnostic.lua:405]: Diagnostics scope [<fallback>] finished, takes [0.013] sec.
[02:28:55.973][info] [#0:script/provider/diagnostic.lua:388]: Diagnostics scope [<fallback>], files count:[145]
[02:28:55.976][info] [#0:script/provider/diagnostic.lua:405]: Diagnostics scope [<fallback>] finished, takes [0.004] sec.
[02:32:35.827][info] [#0:script/provider/diagnostic.lua:388]: Diagnostics scope [<fallback>], files count:[145]
[02:32:35.830][info] [#0:script/provider/diagnostic.lua:405]: Diagnostics scope [<fallback>] finished, takes [0.004] sec.
@aspeddro aspeddro changed the title textDocument/codeAction workspace edit title multiline textDocument/codeAction workspace edit title with new line Apr 11, 2022
@sumneko sumneko added the bug Something isn't working label Apr 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants