autozimu / LanguageClient-neovim

Language Server Protocol (LSP) support for vim and neovim.
MIT License
3.55k stars 274 forks source link

Workspace symbols call returning error for Elixir (ElixirLS) #411

Closed jswny closed 6 years ago

jswny commented 6 years ago

If you are reporting a bug, please read following FAQ first. If you are requesting other types of issue, please ignore.

Summary

I am getting an Invalid Request error when calling :call LanguageClient_workspace_symbol() in Elixir projects.

Reproduction

Plug 'autozimu/LanguageClient-neovim', { \ 'branch': 'next', \ 'do': 'bash install.sh', \ }

call plug#end()

augroup filetype_elixir autocmd! autocmd BufReadPost *.ex setlocal filetype=elixir augroup END

" Always draw sign column. Prevent buffer moving when adding/deleting sign. set signcolumn=yes

let g:LanguageClient_serverCommands = { \ 'elixir': ['elixir-ls.sh'], \ }

let g:LanguageClient_rootMarkers = { \ 'elixir': ['mix.exs'], \ }

let g:LanguageClient_loggingLevel = 'DEBUG'

- Language server link and version:
- Steps to reproduce the issue from clean state
    1. Clone [ElixirLS](https://github.com/JakeBecker/elixir-ls) somewhere
    2. Symlink `elixir-ls.sh` into your `$PATH`
    3. Use the minimal `.vimrc` as noted above
    4. Install [Elixir](https://elixir-lang.org/install.html) `v1.6.0`
    5. Create a test Mix project with `mix new thingy`
    6. `cd foo`
    7. `nvim lib/thingy.ex`
    8. Run `:call LanguageClient_workspace_symbol()`
- Logs. Paste or attach `/tmp/LanguageClient.log` and `/tmp/LanguageServer.log`.
Nothing is being populated in my `/tmp/LanguageServer.log` with the ElixirLS or the Rust version.
**Elixir client log**

####### LanguageClient 0.1.73 bfa74f1254805b463dbd1cbe0f24fa4eee0ec866 ####### 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 3 ==> 4 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[!!get(g:, 'LanguageClient_autoStart', 1), get(g:, 'LanguageClient_serverCommands', {}), get(g:, 'LanguageClient_selectionUI', v:null), get(g:, 'LanguageClient_trace', v:null), get(g:, 'LanguageClient_settingsPath', '.vim/settings.json'), !!get(g:, 'LanguageClient_loadSettings', 1), get(g:, 'LanguageClient_rootMarkers', v:null), get(g:, 'LanguageClient_changeThrottle', v:null), !!get(g:, 'LanguageClient_diagnosticsEnable', 1), get(g:, 'LanguageClient_diagnosticsList', v:null), get(g:, 'LanguageClient_diagnosticsDisplay', {}), get(g:, 'LanguageClient_windowLogMessageLevel', 'Warning'), has('nvim')]"],"id":4} 22:07:16 INFO main src/vim.rs:332 <= {"id": 4, "jsonrpc": "2.0", "result": [1, {"elixir": ["elixir-ls.sh"]}, null, null, ".vim/settings.json", 1, {"elixir": ["mix.exs"]}, null, 1, null, {"1": {"signText": "X", "texthl": "ErrorMsg", "signTexthl": "ErrorMsg"}, "2": {"signText": "!", "texthl": "WarningMsg", "signTexthl": "WarningMsg"}}, "Warning", 1]} 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 4 ==> 5 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["get(g:, 'loaded_fzf')"],"id":5} 22:07:16 INFO main src/vim.rs:332 <= {"id": 5, "jsonrpc": "2.0", "result": 1} 22:07:16 DEBUG Handler-main src/vim.rs:269 state.selectionUI: "LocationList" ==> "FZF" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.diagnosticsDisplay.1.signText: "✖" ==> "X" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.serverCommands.elixir: null ==> ["elixir-ls.sh"] 22:07:16 DEBUG Handler-main src/vim.rs:269 state.diagnosticsDisplay.2.signText: "⚠" ==> "!" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.loadSettings: false ==> true 22:07:16 DEBUG Handler-main src/vim.rs:269 state.diagnosticsDisplay.1.signTexthl: "ALEErrorSign" ==> "ErrorMsg" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.diagnosticsDisplay.2.signTexthl: "ALEWarningSign" ==> "WarningMsg" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.trace: null ==> "off" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.diagnosticsDisplay.1.texthl: "ALEError" ==> "ErrorMsg" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.rootMarkers: null ==> {"elixir":["mix.exs"]} 22:07:16 DEBUG Handler-main src/vim.rs:269 state.is_nvim: false ==> true 22:07:16 DEBUG Handler-main src/vim.rs:269 state.diagnosticsDisplay.2.texthl: "ALEWarning" ==> "WarningMsg" 22:07:16 DEBUG Handler-main src/vim.rs:269 state.child_ids.elixir: null ==> 24277 22:07:16 INFO Handler-main src/languageclient.rs:2377 End languageClient/startServer 22:07:16 INFO Handler-main src/languageclient.rs:171 Define signs 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 5 ==> 6 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'sign define LanguageClientError text=X texthl=ErrorMsg' | execute 'sign define LanguageClientHint text=➤ texthl=ALEInfoSign' | execute 'sign define LanguageClientInformation text=ℹ texthl=ALEInfoSign' | execute 'sign define LanguageClientWarning text=! texthl=WarningMsg'"],"id":6} 22:07:16 INFO main src/vim.rs:332 <= {"id": 6, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-main src/languageclient.rs:185 Define signs 22:07:16 INFO Handler-main src/languageclient.rs:574 Begin initialize 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [LanguageId, Filename] = [String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex")] 22:07:16 INFO Handler-main src/languageclient.rs:29 Some arguments are not available. Requesting from vim. Keys: ["rootPath", "hasSnippetSupport"]. Exps: ["v:null", "s:hasSnippetSupport()"] 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 6 ==> 7 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[v:null, s:hasSnippetSupport()]"],"id":7} 22:07:16 INFO main src/vim.rs:332 <= {"id": 7, "jsonrpc": "2.0", "result": [null, 0]} 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [("rootPath", "v:null"), ("hasSnippetSupport", "s:hasSnippetSupport()")] = [Null, Number(0)] 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 7 ==> 8 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echomsg 'LanguageClient project root: /Users/joe/Downloads/thingy'"],"id":8} 22:07:16 INFO main src/vim.rs:332 <= {"id": 8, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-main src/languageclient.rs:594 Project root: /Users/joe/Downloads/thingy 22:07:16 DEBUG Handler-main src/vim.rs:269 state.roots.elixir: null ==> "/Users/joe/Downloads/thingy" 22:07:16 DEBUG Handler-main src/languageclient.rs:611 Project settings: {} 22:07:16 DEBUG Handler-main src/languageclient.rs:613 Project settings.initializationOptions: null 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 8 ==> 9 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"completion":{"completionItem":{"commitCharactersSupport":null,"documentationFormat":null,"snippetSupport":false},"dynamicRegistration":null}}},"initializationOptions":null,"processId":24052,"rootPath":"/Users/joe/Downloads/thingy","rootUri":"file:///Users/joe/Downloads/thingy","trace":"off"},"id":9} 22:07:16 INFO main src/vim.rs:332 <= {"method": "languageClient/handleTextChanged", "jsonrpc": "2.0", "params": {"languageId": "elixir", "buftype": "", "filename": "/Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:07:16 INFO Handler-main src/languageclient.rs:1876 Begin languageClient/handleTextChanged 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, Filename] = [String(""), String("/Users/joe/Downloads/thingy/lib/thingy.ex")] 22:07:16 INFO Handler-main src/languageclient.rs:1491 Begin textDocument/didChange 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename] = [String(""), String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex")] 22:07:16 INFO Handler-main src/languageclient.rs:1500 Not opened yet. Switching to didOpen. 22:07:16 INFO Handler-main src/languageclient.rs:1446 Begin textDocument/didOpen 22:07:16 INFO Handler-main src/languageclient.rs:29 Some arguments are not available. Requesting from vim. Keys: ["text"]. Exps: ["s:Text()"] 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 9 ==> 10 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[s:Text()]"],"id":10} 22:07:16 INFO main src/vim.rs:332 <= {"id": 10, "jsonrpc": "2.0", "result": [["defmodule Thingy do", " @moduledoc \"\"\"", " Documentation for Thingy.", " \"\"\"", "", " # Enum.reduce([1, 2, 3])", " @doc \"\"\"", " Hello world.", "", " ## Examples", "", " iex> Thingy.hello", " :world", "", " \"\"\"", " def hello do", " :world", " Enum.foo", " end", "end", ""]]} 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename, Text] = [String(""), String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex"), Array([String("defmodule Thingy do"), String(" @moduledoc \"\"\""), String(" Documentation for Thingy."), String(" \"\"\""), String(""), String(" # Enum.reduce([1, 2, 3])"), String(" @doc \"\"\""), String(" Hello world."), String(""), String(" ## Examples"), String(""), String(" iex> Thingy.hello"), String(" :world"), String(""), String(" \"\"\""), String(" def hello do"), String(" :world"), String(" Enum.foo"), String(" end"), String("end"), String("")])] 22:07:16 DEBUG Handler-main src/vim.rs:269 state.text_documents./Users/joe/Downloads/thingy/lib/thingy.ex: null ==> {"languageId":"elixir","text":"defmodule Thingy do\n @moduledoc \"\"\"\n Documentation for Thingy.\n \"\"\"\n\n # Enum.reduce([1, 2, 3])\n @doc \"\"\"\n Hello world.\n\n ## Examples\n\n iex> Thingy.hello\n :world\n\n \"\"\"\n def hello do\n :world\n Enum.foo\n end\nend\n","uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex","version":0} 22:07:16 INFO Handler-main src/vim.rs:156 => {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"elixir","text":"defmodule Thingy do\n @moduledoc \"\"\"\n Documentation for Thingy.\n \"\"\"\n\n # Enum.reduce([1, 2, 3])\n @doc \"\"\"\n Hello world.\n\n ## Examples\n\n iex> Thingy.hello\n :world\n\n \"\"\"\n def hello do\n :world\n Enum.foo\n end\nend\n","uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex","version":0}}} 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 10 ==> 11 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["setlocal omnifunc=LanguageClient#complete"],"id":11} 22:07:16 INFO main src/vim.rs:332 <= {"id": 11, "jsonrpc": "2.0", "result": 0} 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 11 ==> 12 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientBufReadPost"],"id":12} 22:07:16 INFO main src/vim.rs:332 <= {"id": 12, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-main src/languageclient.rs:1486 End textDocument/didOpen 22:07:16 INFO Handler-main src/languageclient.rs:1901 End languageClient/handleTextChanged 22:07:16 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"Started ElixirLS\n","type":4}} 22:07:16 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:16 INFO RPC-elixir src/vim.rs:332 <= {"id":9,"jsonrpc":"2.0","result":{"capabilities":{"completionProvider":{"triggerCharacters":[".","@"]},"definitionProvider":true,"documentFormattingProvider":true,"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n"},"documentSymbolProvider":true,"hoverProvider":true,"referencesProvider":true,"signatureHelpProvider":{"triggerCharacters":["("]},"textDocumentSync":2}}} 22:07:16 DEBUG Handler-main src/vim.rs:269 state.capabilities.elixir: null ==> {"capabilities":{"completionProvider":{"triggerCharacters":[".","@"]},"definitionProvider":true,"documentFormattingProvider":true,"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n"},"documentSymbolProvider":true,"hoverProvider":true,"referencesProvider":true,"signatureHelpProvider":{"triggerCharacters":["("]},"textDocumentSync":2}} 22:07:16 INFO Handler-main src/languageclient.rs:652 End initialize 22:07:16 INFO Handler-main src/languageclient.rs:410 Begin register NCM source 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 12 ==> 13 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["exists('g:cm_matcher')"],"id":13} 22:07:16 INFO main src/vim.rs:332 <= {"id": 13, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-main src/languageclient.rs:662 Begin initialized 22:07:16 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[],"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [LanguageId] = [String("elixir")] 22:07:16 INFO Handler-main src/vim.rs:156 => {"jsonrpc":"2.0","method":"initialized","params":{}} 22:07:16 INFO Handler-main src/languageclient.rs:669 End initialized 22:07:16 INFO Handler-main src/languageclient.rs:1446 Begin textDocument/didOpen 22:07:16 INFO Handler-main src/languageclient.rs:29 Some arguments are not available. Requesting from vim. Keys: ["text"]. Exps: ["s:Text()"] 22:07:16 INFO Handler-elixir src/languageclient.rs:1628 Begin textDocument/publishDiagnostics 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 13 ==> 14 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[s:Text()]"],"id":14} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.diagnostics./Users/joe/Downloads/thingy/lib/thingy.ex: null ==> [] 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 14 ==> 15 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"setqflist","params":[[],"r"],"id":15} 22:07:16 INFO main src/vim.rs:332 <= {"id": 14, "jsonrpc": "2.0", "result": [["defmodule Thingy do", " @moduledoc \"\"\"", " Documentation for Thingy.", " \"\"\"", "", " # Enum.reduce([1, 2, 3])", " @doc \"\"\"", " Hello world.", "", " ## Examples", "", " iex> Thingy.hello", " :world", "", " \"\"\"", " def hello do", " :world", " Enum.foo", " end", "end", ""]]} 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename, Text] = [String(""), String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex"), Array([String("defmodule Thingy do"), String(" @moduledoc \"\"\""), String(" Documentation for Thingy."), String(" \"\"\""), String(""), String(" # Enum.reduce([1, 2, 3])"), String(" @doc \"\"\""), String(" Hello world."), String(""), String(" ## Examples"), String(""), String(" iex> Thingy.hello"), String(" :world"), String(""), String(" \"\"\""), String(" def hello do"), String(" :world"), String(" Enum.foo"), String(" end"), String("end"), String("")])] 22:07:16 INFO main src/vim.rs:332 <= {"id": 15, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-main src/vim.rs:156 => {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"elixir","text":"defmodule Thingy do\n @moduledoc \"\"\"\n Documentation for Thingy.\n \"\"\"\n\n # Enum.reduce([1, 2, 3])\n @doc \"\"\"\n Hello world.\n\n ## Examples\n\n iex> Thingy.hello\n :world\n\n \"\"\"\n def hello do\n :world\n Enum.foo\n end\nend\n","uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex","version":0}}} 22:07:16 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[],"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 15 ==> 16 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 16 ==> 17 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["s:Expand('%:p')"],"id":16} 22:07:16 INFO Handler-elixir src/languageclient.rs:1628 Begin textDocument/publishDiagnostics 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["setlocal omnifunc=LanguageClient#complete"],"id":17} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 17 ==> 18 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"setqflist","params":[[],"r"],"id":18} 22:07:16 INFO main src/vim.rs:332 <= {"id": 16, "jsonrpc": "2.0", "result": "/Users/joe/Downloads/thingy/lib/thingy.ex"} 22:07:16 INFO main src/vim.rs:332 <= {"id": 17, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO main src/vim.rs:332 <= {"id": 18, "jsonrpc": "2.0", "result": 0} 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 18 ==> 19 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 19 ==> 20 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientBufReadPost"],"id":19} 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["s:Expand('%:p')"],"id":20} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.signs./Users/joe/Downloads/thingy/lib/thingy.ex: null ==> [] 22:07:16 INFO Handler-elixir src/languageclient.rs:308 Command to update signs: echo 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 20 ==> 21 22:07:16 INFO main src/vim.rs:332 <= {"id": 19, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo"],"id":21} 22:07:16 INFO Handler-main src/languageclient.rs:1486 End textDocument/didOpen 22:07:16 INFO Handler-main src/languageclient.rs:1491 Begin textDocument/didChange 22:07:16 INFO main src/vim.rs:332 <= {"id": 20, "jsonrpc": "2.0", "result": "/Users/joe/Downloads/thingy/lib/thingy.ex"} 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename] = [String(""), String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex")] 22:07:16 INFO Handler-main src/languageclient.rs:29 Some arguments are not available. Requesting from vim. Keys: ["text"]. Exps: ["s:Text()"] 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 21 ==> 22 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[s:Text()]"],"id":22} 22:07:16 INFO Handler-elixir src/languageclient.rs:308 Command to update signs: echo 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 22 ==> 23 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo"],"id":23} 22:07:16 INFO main src/vim.rs:332 <= {"id": 21, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO main src/vim.rs:332 <= {"id": 22, "jsonrpc": "2.0", "result": [["defmodule Thingy do", " @moduledoc \"\"\"", " Documentation for Thingy.", " \"\"\"", "", " # Enum.reduce([1, 2, 3])", " @doc \"\"\"", " Hello world.", "", " ## Examples", "", " iex> Thingy.hello", " :world", "", " \"\"\"", " def hello do", " :world", " Enum.foo", " end", "end", ""]]} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 23 ==> 24 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_add_highlight","params":[0,0,"Error",1,1,1],"id":24} 22:07:16 INFO Handler-main src/languageclient.rs:46 gather_args: [Text] = [Array([String("defmodule Thingy do"), String(" @moduledoc \"\"\""), String(" Documentation for Thingy."), String(" \"\"\""), String(""), String(" # Enum.reduce([1, 2, 3])"), String(" @doc \"\"\""), String(" Hello world."), String(""), String(" ## Examples"), String(""), String(" iex> Thingy.hello"), String(" :world"), String(""), String(" \"\"\""), String(" def hello do"), String(" :world"), String(" Enum.foo"), String(" end"), String("end"), String("")])] 22:07:16 INFO main src/vim.rs:332 <= {"id": 23, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-main src/languageclient.rs:1515 Texts equal. Skipping didChange. 22:07:16 DEBUG Handler-main src/vim.rs:269 state.id: 24 ==> 25 22:07:16 INFO main src/vim.rs:332 <= {"id": 24, "jsonrpc": "2.0", "result": 1} 22:07:16 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientStarted"],"id":25} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.highlight_source: null ==> 1 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 25 ==> 26 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_add_highlight","params":[0,0,"Error",1,1,1],"id":26} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 26 ==> 27 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_clear_highlight","params":[0,1,1,-1],"id":27} 22:07:16 INFO main src/vim.rs:332 <= {"id": 25, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-main src/languageclient.rs:1871 End languageClient/handleBufReadPost 22:07:16 INFO main src/vim.rs:332 <= {"id": 26, "jsonrpc": "2.0", "result": 2} 22:07:16 INFO main src/vim.rs:332 <= {"id": 27, "jsonrpc": "2.0", "result": null} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.highlight_source: 1 ==> 2 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 27 ==> 28 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 28 ==> 29 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_clear_highlight","params":[0,2,1,-1],"id":28} 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientDiagnosticsChanged"],"id":29} 22:07:16 INFO main src/vim.rs:332 <= {"id": 28, "jsonrpc": "2.0", "result": null} 22:07:16 INFO main src/vim.rs:332 <= {"id": 29, "jsonrpc": "2.0", "result": 0} 22:07:16 DEBUG Handler-elixir src/vim.rs:269 state.id: 29 ==> 30 22:07:16 INFO Handler-elixir src/languageclient.rs:1689 End textDocument/publishDiagnostics 22:07:16 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientDiagnosticsChanged"],"id":30} 22:07:16 INFO main src/vim.rs:332 <= {"id": 30, "jsonrpc": "2.0", "result": 0} 22:07:16 INFO Handler-elixir src/languageclient.rs:1689 End textDocument/publishDiagnostics 22:07:21 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"Did not receive workspace/didChangeConfiguration notification after 5 seconds. Using default settings.","type":2}} 22:07:21 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:21 DEBUG Handler-elixir src/vim.rs:269 state.id: 30 ==> 31 22:07:21 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echomsg '[Warning] Did not receive workspace/didChangeConfiguration notification after 5 seconds. Using default settings.'"],"id":31} 22:07:21 INFO main src/vim.rs:332 <= {"id": 31, "jsonrpc": "2.0", "result": 0} 22:07:21 INFO Handler-elixir src/languageclient.rs:1703 End window/logMessage 22:07:22 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"Compiling with Mix env test\n","type":4}} 22:07:22 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:22 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Analyzing 0 modules: []","type":3}} 22:07:22 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:22 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Analysis finished in 34 milliseconds","type":3}} 22:07:22 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:22 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"message":"Call to missing or unexported function 'Elixir.Enum':foo/0","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"ElixirLS Dialyzer"}],"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:07:22 INFO Handler-elixir src/languageclient.rs:1628 Begin textDocument/publishDiagnostics 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.diagnostics./Users/joe/Downloads/thingy/lib/thingy.ex: [] ==> [{"code":null,"message":"Call to missing or unexported function 'Elixir.Enum':foo/0","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"ElixirLS Dialyzer"}] 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.id: 31 ==> 32 22:07:22 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"setqflist","params":[[{"col":5,"filename":"/Users/joe/Downloads/thingy/lib/thingy.ex","lnum":18,"nr":null,"text":"Call to missing or unexported function 'Elixir.Enum':foo/0","type":"W"}],"r"],"id":32} 22:07:22 INFO main src/vim.rs:332 <= {"id": 32, "jsonrpc": "2.0", "result": 0} 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.id: 32 ==> 33 22:07:22 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["s:Expand('%:p')"],"id":33} 22:07:22 INFO main src/vim.rs:332 <= {"id": 33, "jsonrpc": "2.0", "result": "/Users/joe/Downloads/thingy/lib/thingy.ex"} 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.signs./Users/joe/Downloads/thingy/lib/thingy.ex: [] ==> [{"id":75069,"line":18,"severity":2,"text":" Enum.foo"}] 22:07:22 INFO Handler-elixir src/languageclient.rs:308 Command to update signs: echo | execute 'sign place 75069 line=18 name=LanguageClientWarning file=/Users/joe/Downloads/thingy/lib/thingy.ex' 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.id: 33 ==> 34 22:07:22 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'sign place 75069 line=18 name=LanguageClientWarning file=/Users/joe/Downloads/thingy/lib/thingy.ex'"],"id":34} 22:07:22 INFO main src/vim.rs:332 <= {"id": 34, "jsonrpc": "2.0", "result": 0} 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.id: 34 ==> 35 22:07:22 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_clear_highlight","params":[0,2,1,-1],"id":35} 22:07:22 INFO main src/vim.rs:332 <= {"id": 35, "jsonrpc": "2.0", "result": null} 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.id: 35 ==> 36 22:07:22 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_add_highlight","params":[0,2,"WarningMsg",17,4,12],"id":36} 22:07:22 INFO main src/vim.rs:332 <= {"id": 36, "jsonrpc": "2.0", "result": 2} 22:07:22 DEBUG Handler-elixir src/vim.rs:269 state.id: 36 ==> 37 22:07:22 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientDiagnosticsChanged"],"id":37} 22:07:22 INFO main src/vim.rs:332 <= {"id": 37, "jsonrpc": "2.0", "result": 0} 22:07:22 INFO Handler-elixir src/languageclient.rs:1689 End textDocument/publishDiagnostics 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"Compile took 366 milliseconds","type":3}} 22:07:23 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Writing manifest...","type":3}} 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Checking for stale beam files","type":3}} 22:07:23 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:23 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"message":"function Enum.foo/0 is undefined or private","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"Xref"},{"message":"Call to missing or unexported function 'Elixir.Enum':foo/0","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"ElixirLS Dialyzer"}],"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:07:23 INFO Handler-elixir src/languageclient.rs:1628 Begin textDocument/publishDiagnostics 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.diagnostics./Users/joe/Downloads/thingy/lib/thingy.ex: [{"code":null,"message":"Call to missing or unexported function 'Elixir.Enum':foo/0","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"ElixirLS Dialyzer"}] ==> [{"code":null,"message":"function Enum.foo/0 is undefined or private","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"Xref"},{"code":null,"message":"Call to missing or unexported function 'Elixir.Enum':foo/0","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"ElixirLS Dialyzer"}] 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 37 ==> 38 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"setqflist","params":[[{"col":5,"filename":"/Users/joe/Downloads/thingy/lib/thingy.ex","lnum":18,"nr":null,"text":"function Enum.foo/0 is undefined or private","type":"W"},{"col":5,"filename":"/Users/joe/Downloads/thingy/lib/thingy.ex","lnum":18,"nr":null,"text":"Call to missing or unexported function 'Elixir.Enum':foo/0","type":"W"}],"r"],"id":38} 22:07:23 INFO main src/vim.rs:332 <= {"id": 38, "jsonrpc": "2.0", "result": 0} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 38 ==> 39 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["s:Expand('%:p')"],"id":39} 22:07:23 INFO main src/vim.rs:332 <= {"id": 39, "jsonrpc": "2.0", "result": "/Users/joe/Downloads/thingy/lib/thingy.ex"} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.signs./Users/joe/Downloads/thingy/lib/thingy.ex: [{"id":75069,"line":18,"severity":2,"text":" Enum.foo"}] ==> [{"id":75069,"line":18,"severity":2,"text":" Enum.foo"},{"id":75069,"line":18,"severity":2,"text":" Enum.foo"}] 22:07:23 INFO Handler-elixir src/languageclient.rs:308 Command to update signs: echo | execute 'sign place 75069 line=18 name=LanguageClientWarning file=/Users/joe/Downloads/thingy/lib/thingy.ex' 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 39 ==> 40 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'sign place 75069 line=18 name=LanguageClientWarning file=/Users/joe/Downloads/thingy/lib/thingy.ex'"],"id":40} 22:07:23 INFO main src/vim.rs:332 <= {"id": 40, "jsonrpc": "2.0", "result": 0} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 40 ==> 41 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_clear_highlight","params":[0,2,1,-1],"id":41} 22:07:23 INFO main src/vim.rs:332 <= {"id": 41, "jsonrpc": "2.0", "result": null} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 41 ==> 42 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_add_highlight","params":[0,2,"WarningMsg",17,4,12],"id":42} 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Analyzing 0 modules: []","type":3}} 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Analysis finished in 8 milliseconds","type":3}} 22:07:23 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:23 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:23 INFO main src/vim.rs:332 <= {"id": 42, "jsonrpc": "2.0", "result": 2} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 42 ==> 43 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_add_highlight","params":[0,2,"WarningMsg",17,4,12],"id":43} 22:07:23 INFO main src/vim.rs:332 <= {"id": 43, "jsonrpc": "2.0", "result": 2} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 43 ==> 44 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientDiagnosticsChanged"],"id":44} 22:07:23 INFO main src/vim.rs:332 <= {"id": 44, "jsonrpc": "2.0", "result": 0} 22:07:23 INFO Handler-elixir src/languageclient.rs:1689 End textDocument/publishDiagnostics 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"message":"function Enum.foo/0 is undefined or private","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"Xref"},{"message":"Call to missing or unexported function 'Elixir.Enum':foo/0","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"ElixirLS Dialyzer"}],"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:07:23 INFO Handler-elixir src/languageclient.rs:1628 Begin textDocument/publishDiagnostics 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 44 ==> 45 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"setqflist","params":[[{"col":5,"filename":"/Users/joe/Downloads/thingy/lib/thingy.ex","lnum":18,"nr":null,"text":"function Enum.foo/0 is undefined or private","type":"W"},{"col":5,"filename":"/Users/joe/Downloads/thingy/lib/thingy.ex","lnum":18,"nr":null,"text":"Call to missing or unexported function 'Elixir.Enum':foo/0","type":"W"}],"r"],"id":45} 22:07:23 INFO main src/vim.rs:332 <= {"id": 45, "jsonrpc": "2.0", "result": 0} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 45 ==> 46 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["s:Expand('%:p')"],"id":46} 22:07:23 INFO main src/vim.rs:332 <= {"id": 46, "jsonrpc": "2.0", "result": "/Users/joe/Downloads/thingy/lib/thingy.ex"} 22:07:23 INFO Handler-elixir src/languageclient.rs:308 Command to update signs: echo 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 46 ==> 47 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo"],"id":47} 22:07:23 INFO main src/vim.rs:332 <= {"id": 47, "jsonrpc": "2.0", "result": 0} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 47 ==> 48 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_clear_highlight","params":[0,2,1,-1],"id":48} 22:07:23 INFO main src/vim.rs:332 <= {"id": 48, "jsonrpc": "2.0", "result": null} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 48 ==> 49 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_add_highlight","params":[0,2,"WarningMsg",17,4,12],"id":49} 22:07:23 INFO main src/vim.rs:332 <= {"id": 49, "jsonrpc": "2.0", "result": 2} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 49 ==> 50 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"nvim_buf_add_highlight","params":[0,2,"WarningMsg",17,4,12],"id":50} 22:07:23 INFO main src/vim.rs:332 <= {"id": 50, "jsonrpc": "2.0", "result": 2} 22:07:23 DEBUG Handler-elixir src/vim.rs:269 state.id: 50 ==> 51 22:07:23 INFO Handler-elixir src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:ExecuteAutocmd","params":["LanguageClientDiagnosticsChanged"],"id":51} 22:07:23 INFO main src/vim.rs:332 <= {"id": 51, "jsonrpc": "2.0", "result": 0} 22:07:23 INFO Handler-elixir src/languageclient.rs:1689 End textDocument/publishDiagnostics 22:07:23 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Writing manifest...","type":3}} 22:07:23 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:07:25 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"[ElixirLS Dialyzer] Done writing manifest.","type":3}} 22:07:25 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage

22:09:07 INFO main src/vim.rs:332 <= {"id": 1, "jsonrpc": "2.0", "method": "textDocument/documentSymbol", "params": {"handle": true, "languageId": "elixir", "buftype": "", "text": ["defmodule Thingy do", " @moduledoc \"\"\"", " Documentation for Thingy.", " \"\"\"", "", " # Enum.reduce([1, 2, 3])", " @doc \"\"\"", " Hello world.", "", " ## Examples", "", " iex> Thingy.hello", " :world", "", " \"\"\"", " def hello do", " :world", " Enum.foo", " end", "end", ""], "filename": "/Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:09:07 INFO Handler-main src/languageclient.rs:1491 Begin textDocument/didChange 22:09:07 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename] = [String(""), String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex")] 22:09:07 INFO Handler-main src/languageclient.rs:46 gather_args: [Text] = [Array([String("defmodule Thingy do"), String(" @moduledoc \"\"\""), String(" Documentation for Thingy."), String(" \"\"\""), String(""), String(" # Enum.reduce([1, 2, 3])"), String(" @doc \"\"\""), String(" Hello world."), String(""), String(" ## Examples"), String(""), String(" iex> Thingy.hello"), String(" :world"), String(""), String(" \"\"\""), String(" def hello do"), String(" :world"), String(" Enum.foo"), String(" end"), String("end"), String("")])] 22:09:07 INFO Handler-main src/languageclient.rs:1515 Texts equal. Skipping didChange. 22:09:07 INFO Handler-main src/languageclient.rs:861 Begin textDocument/documentSymbol 22:09:07 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename, Handle] = [String(""), String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex"), Bool(true)] 22:09:07 DEBUG Handler-main src/vim.rs:269 state.id: 51 ==> 52 22:09:07 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"}},"id":52} 22:09:07 INFO RPC-elixir src/vim.rs:332 <= {"id":52,"jsonrpc":"2.0","result":[{"containerName":null,"kind":2,"location":{"range":{"end":{"character":10,"line":0},"start":{"character":10,"line":0}},"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"},"name":"Thingy"},{"containerName":"Thingy","kind":12,"location":{"range":{"end":{"character":6,"line":15},"start":{"character":6,"line":15}},"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"},"name":"hello"}]} 22:09:07 DEBUG Handler-main src/vim.rs:269 state.id: 52 ==> 53 22:09:07 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"s:FZF","params":[["1:11:\tThingy","16:7:\thello"],"s:LanguageClient_FZFSinkLocation"],"id":53} 22:09:07 INFO main src/vim.rs:332 <= {"id": 53, "jsonrpc": "2.0", "result": 0} 22:09:07 INFO Handler-main src/languageclient.rs:929 End textDocument/documentSymbol 22:09:07 INFO Handler-main src/vim.rs:104 => {"jsonrpc":"2.0","result":[{"containerName":null,"kind":2,"location":{"range":{"end":{"character":10,"line":0},"start":{"character":10,"line":0}},"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"},"name":"Thingy"},{"containerName":"Thingy","kind":12,"location":{"range":{"end":{"character":6,"line":15},"start":{"character":6,"line":15}},"uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex"},"name":"hello"}],"id":1}

22:09:24 INFO main src/vim.rs:332 <= {"id": 2, "jsonrpc": "2.0", "method": "workspace/symbol", "params": {"query": "", "handle": true, "languageId": "elixir", "buftype": "", "text": ["defmodule Thingy do", " @moduledoc \"\"\"", " Documentation for Thingy.", " \"\"\"", "", " # Enum.reduce([1, 2, 3])", " @doc \"\"\"", " Hello world.", "", " ## Examples", "", " iex> Thingy.hello", " :world", "", " \"\"\"", " def hello do", " :world", " Enum.foo", " end", "end", ""], "filename": "/Users/joe/Downloads/thingy/lib/thingy.ex"}} 22:09:24 INFO Handler-main src/languageclient.rs:1491 Begin textDocument/didChange 22:09:24 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename] = [String(""), String("elixir"), String("/Users/joe/Downloads/thingy/lib/thingy.ex")] 22:09:24 INFO Handler-main src/languageclient.rs:46 gather_args: [Text] = [Array([String("defmodule Thingy do"), String(" @moduledoc \"\"\""), String(" Documentation for Thingy."), String(" \"\"\""), String(""), String(" # Enum.reduce([1, 2, 3])"), String(" @doc \"\"\""), String(" Hello world."), String(""), String(" ## Examples"), String(""), String(" iex> Thingy.hello"), String(" :world"), String(""), String(" \"\"\""), String(" def hello do"), String(" :world"), String(" Enum.foo"), String(" end"), String("end"), String("")])] 22:09:24 INFO Handler-main src/languageclient.rs:1515 Texts equal. Skipping didChange. 22:09:24 INFO Handler-main src/languageclient.rs:1345 Begin workspace/symbol 22:09:24 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Handle] = [String(""), String("elixir"), Bool(true)] 22:09:24 INFO Handler-main src/languageclient.rs:46 gather_args: [("query", "")] = [String("")] 22:09:24 DEBUG Handler-main src/vim.rs:269 state.id: 53 ==> 54 22:09:24 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"workspace/symbol","params":{"query":""},"id":54} 22:09:24 INFO RPC-elixir src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/logMessage","params":{"message":"Unmatched request: %{\n \"id\" => 54,\n \"jsonrpc\" => \"2.0\",\n \"method\" => \"workspace/symbol\",\n \"params\" => %{\"query\" => \"\"}\n}\n","type":4}} 22:09:24 INFO RPC-elixir src/vim.rs:332 <= {"error":{"code":-32600,"message":"Invalid Request"},"id":54,"jsonrpc":"2.0"} 22:09:24 INFO Handler-elixir src/languageclient.rs:1694 Begin window/logMessage 22:09:24 ERROR Handler-main src/vim.rs:47 Error handling message: Invalid Request Message: {"id": 2, "jsonrpc": "2.0", "method": "workspace/symbol", "params": {"query": "", "handle": true, "languageId": "elixir", "buftype": "", "text": ["defmodule Thingy do", " @moduledoc \"\"\"", " Documentation for Thingy.", " \"\"\"", "", " # Enum.reduce([1, 2, 3])", " @doc \"\"\"", " Hello world.", "", " ## Examples", "", " iex> Thingy.hello", " :world", "", " \"\"\"", " def hello do", " :world", " Enum.foo", " end", "end", ""], "filename": "/Users/joe/Downloads/thingy/lib/thingy.ex"}} Error: ErrorMessage { msg: "Invalid Request" } 22:09:24 INFO Handler-main src/vim.rs:104 => {"jsonrpc":"2.0","error":{"code":-32603,"message":"Invalid Request"},"id":2}

10:54:09 INFO main src/vim.rs:332 <= {"method": "exit", "jsonrpc": "2.0", "params": {"languageId": "elixir", "buftype": ""}} 10:54:09 INFO Handler-main src/languageclient.rs:1742 Begin exit 10:54:09 INFO Handler-main src/languageclient.rs:46 gather_args: [LanguageId] = [String("elixir")] 10:54:09 INFO Handler-main src/vim.rs:156 => {"jsonrpc":"2.0","method":"exit","params":null} 10:54:09 DEBUG Handler-main src/vim.rs:269 state.child_ids.elixir: 24277 ==> null 10:54:09 DEBUG Handler-main src/vim.rs:269 state.text_documents./Users/joe/Downloads/thingy/lib/thingy.ex: {"languageId":"elixir","text":"defmodule Thingy do\n @moduledoc \"\"\"\n Documentation for Thingy.\n \"\"\"\n\n # Enum.reduce([1, 2, 3])\n @doc \"\"\"\n Hello world.\n\n ## Examples\n\n iex> Thingy.hello\n :world\n\n \"\"\"\n def hello do\n :world\n Enum.foo\n end\nend\n","uri":"file:///Users/joe/Downloads/thingy/lib/thingy.ex","version":0} ==> null 10:54:09 DEBUG Handler-main src/vim.rs:269 state.roots.elixir: "/Users/joe/Downloads/thingy" ==> null 10:54:09 DEBUG Handler-main src/vim.rs:269 state.signs./Users/joe/Downloads/thingy/lib/thingy.ex: [{"id":75069,"line":18,"severity":2,"text":" Enum.foo"},{"id":75069,"line":18,"severity":2,"text":" Enum.foo"}] ==> null 10:54:09 DEBUG Handler-main src/vim.rs:269 state.diagnostics./Users/joe/Downloads/thingy/lib/thingy.ex: [{"code":null,"message":"function Enum.foo/0 is undefined or private","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"Xref"},{"code":null,"message":"Call to missing or unexported function 'Elixir.Enum':foo/0","range":{"end":{"character":12,"line":17},"start":{"character":4,"line":17}},"severity":2,"source":"ElixirLS Dialyzer"}] ==> null 10:54:09 DEBUG Handler-main src/vim.rs:269 state.id: 54 ==> 55 10:54:09 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'sign unplace 75069 file=/Users/joe/Downloads/thingy/lib/thingy.ex' | execute 'sign unplace 75069 file=/Users/joe/Downloads/thingy/lib/thingy.ex'"],"id":55} 10:54:09 INFO main src/vim.rs:332 <= {"id": 55, "jsonrpc": "2.0", "result": 0}

**Rust client log**

####### LanguageClient 0.1.73 bfa74f1254805b463dbd1cbe0f24fa4eee0ec866 ####### 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 3 ==> 4 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[!!get(g:, 'LanguageClient_autoStart', 1), get(g:, 'LanguageClient_serverCommands', {}), get(g:, 'LanguageClient_selectionUI', v:null), get(g:, 'LanguageClient_trace', v:null), get(g:, 'LanguageClient_settingsPath', '.vim/settings.json'), !!get(g:, 'LanguageClient_loadSettings', 1), get(g:, 'LanguageClient_rootMarkers', v:null), get(g:, 'LanguageClient_changeThrottle', v:null), !!get(g:, 'LanguageClient_diagnosticsEnable', 1), get(g:, 'LanguageClient_diagnosticsList', v:null), get(g:, 'LanguageClient_diagnosticsDisplay', {}), get(g:, 'LanguageClient_windowLogMessageLevel', 'Warning'), has('nvim')]"],"id":4} 11:07:19 INFO main src/vim.rs:332 <= {"id": 4, "jsonrpc": "2.0", "result": [1, {"rust": ["rustup", "run", "stable", "rls"]}, null, null, ".vim/settings.json", 1, null, null, 1, null, {}, "Warning", 1]} 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 4 ==> 5 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["get(g:, 'loaded_fzf')"],"id":5} 11:07:19 INFO main src/vim.rs:332 <= {"id": 5, "jsonrpc": "2.0", "result": 0} 11:07:19 DEBUG Handler-main src/vim.rs:269 state.serverCommands.rust: null ==> ["rustup","run","stable","rls"] 11:07:19 DEBUG Handler-main src/vim.rs:269 state.trace: null ==> "off" 11:07:19 DEBUG Handler-main src/vim.rs:269 state.loadSettings: false ==> true 11:07:19 DEBUG Handler-main src/vim.rs:269 state.is_nvim: false ==> true 11:07:19 DEBUG Handler-main src/vim.rs:269 state.child_ids.rust: null ==> 46147 11:07:19 INFO Handler-main src/languageclient.rs:2377 End languageClient/startServer 11:07:19 INFO Handler-main src/languageclient.rs:171 Define signs 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 5 ==> 6 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echo | execute 'sign define LanguageClientWarning text=⚠ texthl=ALEWarningSign' | execute 'sign define LanguageClientError text=✖ texthl=ALEErrorSign' | execute 'sign define LanguageClientInformation text=ℹ texthl=ALEInfoSign' | execute 'sign define LanguageClientHint text=➤ texthl=ALEInfoSign'"],"id":6} 11:07:19 INFO main src/vim.rs:332 <= {"id": 6, "jsonrpc": "2.0", "result": 0} 11:07:19 INFO Handler-main src/languageclient.rs:185 Define signs 11:07:19 INFO Handler-main src/languageclient.rs:574 Begin initialize 11:07:19 INFO Handler-main src/languageclient.rs:46 gather_args: [LanguageId, Filename] = [String("rust"), String("/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs")] 11:07:19 INFO Handler-main src/languageclient.rs:29 Some arguments are not available. Requesting from vim. Keys: ["rootPath", "hasSnippetSupport"]. Exps: ["v:null", "s:hasSnippetSupport()"] 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 6 ==> 7 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[v:null, s:hasSnippetSupport()]"],"id":7} 11:07:19 INFO main src/vim.rs:332 <= {"id": 7, "jsonrpc": "2.0", "result": [null, 0]} 11:07:19 INFO Handler-main src/languageclient.rs:46 gather_args: [("rootPath", "v:null"), ("hasSnippetSupport", "s:hasSnippetSupport()")] = [Null, Number(0)] 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 7 ==> 8 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["echomsg 'LanguageClient project root: /Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs'"],"id":8} 11:07:19 INFO main src/vim.rs:332 <= {"id": 8, "jsonrpc": "2.0", "result": 0} 11:07:19 INFO Handler-main src/languageclient.rs:594 Project root: /Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs 11:07:19 DEBUG Handler-main src/vim.rs:269 state.roots.rust: null ==> "/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs" 11:07:19 DEBUG Handler-main src/languageclient.rs:611 Project settings: {"cfg_test":true,"clippy_preferences":"on"} 11:07:19 DEBUG Handler-main src/languageclient.rs:613 Project settings.initializationOptions: null 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 8 ==> 9 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"completion":{"completionItem":{"commitCharactersSupport":null,"documentationFormat":null,"snippetSupport":false},"dynamicRegistration":null}}},"initializationOptions":null,"processId":46146,"rootPath":"/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs","rootUri":"file:///Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs","trace":"off"},"id":9} 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","id":9,"result":{"capabilities":{"textDocumentSync":2,"hoverProvider":true,"completionProvider":{"resolveProvider":true,"triggerCharacters":[".",":"]},"definitionProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"workspaceSymbolProvider":true,"codeActionProvider":true,"documentFormattingProvider":true,"documentRangeFormattingProvider":false,"renameProvider":true,"executeCommandProvider":{"commands":["rls.applySuggestion","rls.deglobImports"]}}}} 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/progress","params":{"id":"progress_1","title":"Building"}} 11:07:19 DEBUG Handler-main src/vim.rs:269 state.capabilities.rust: null ==> {"capabilities":{"codeActionProvider":true,"completionProvider":{"resolveProvider":true,"triggerCharacters":[".",":"]},"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentRangeFormattingProvider":false,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["rls.applySuggestion","rls.deglobImports"]},"hoverProvider":true,"referencesProvider":true,"renameProvider":true,"textDocumentSync":2,"workspaceSymbolProvider":true}} 11:07:19 INFO Handler-main src/languageclient.rs:652 End initialize 11:07:19 INFO Handler-main src/languageclient.rs:410 Begin register NCM source 11:07:19 INFO Handler-rust src/languageclient.rs:2217 Begin window/progress 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 9 ==> 10 11:07:19 DEBUG Handler-rust src/vim.rs:269 state.id: 10 ==> 11 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["exists('g:cm_matcher')"],"id":10} 11:07:19 INFO Handler-rust src/vim.rs:135 => {"jsonrpc":"2.0","method":"execute","params":["let g:LanguageClient_serverStatus=1 | let g:LanguageClient_serverStatusMessage='LS: Building'"],"id":11} 11:07:19 INFO main src/vim.rs:332 <= {"id": 10, "jsonrpc": "2.0", "result": 0} 11:07:19 INFO main src/vim.rs:332 <= {"id": 11, "jsonrpc": "2.0", "result": 0} 11:07:19 INFO Handler-main src/languageclient.rs:662 Begin initialized 11:07:19 INFO Handler-main src/languageclient.rs:46 gather_args: [LanguageId] = [String("rust")] 11:07:19 INFO Handler-main src/vim.rs:156 => {"jsonrpc":"2.0","method":"initialized","params":{}} 11:07:19 INFO Handler-rust src/languageclient.rs:2251 End window/progress 11:07:19 INFO Handler-main src/languageclient.rs:669 End initialized 11:07:19 INFO Handler-main src/languageclient.rs:1446 Begin textDocument/didOpen 11:07:19 INFO Handler-main src/languageclient.rs:29 Some arguments are not available. Requesting from vim. Keys: ["text"]. Exps: ["s:Text()"] 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"client/registerCapability","id":1,"params":{"registrations":[{"id":"rls-watch","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/Cargo{.toml,.lock}"},{"globPattern":"/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/target","kind":4}]}}]}} 11:07:19 DEBUG Handler-main src/vim.rs:269 state.id: 11 ==> 12 11:07:19 INFO Handler-main src/vim.rs:135 => {"jsonrpc":"2.0","method":"eval","params":["[s:Text()]"],"id":12} 11:07:19 INFO Handler-rust src/languageclient.rs:1712 Begin client/registerCapability 11:07:19 ERROR Handler-rust src/vim.rs:47 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"client/registerCapability","id":1,"params":{"registrations":[{"id":"rls-watch","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/Cargo{.toml,.lock}"},{"globPattern":"/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/target","kind":4}]}}]}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:19 INFO Handler-rust src/vim.rs:104 => {"jsonrpc":"2.0","error":{"code":-32603,"message":"key must be a string"},"id":1} 11:07:19 ERROR Handler-rust src/vim.rs:349 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"client/registerCapability","id":1,"params":{"registrations":[{"id":"rls-watch","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/Cargo{.toml,.lock}"},{"globPattern":"/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/target","kind":4}]}}]}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:19 INFO main src/vim.rs:332 <= {"id": 12, "jsonrpc": "2.0", "result": [["fn main() {", " let a = 1;", " println!(\"{}\", greet());", " // place holder for didChange test.", "}", "", "", "fn greet() -> i32 {", " 42", "}", "", "// place holder for didChange test.", "", "mod libs;", "use libs::yo;", "fn ref_in_main() -> i32 {", " yo() + 1", "}", ""]]} 11:07:19 ERROR Handler-main src/vim.rs:349 Error handling message: key must be a string Message: {"id": 12, "jsonrpc": "2.0", "result": [["fn main() {", " let a = 1;", " println!(\"{}\", greet());", " // place holder for didChange test.", "}", "", "", "fn greet() -> i32 {", " 42", "}", "", "// place holder for didChange test.", "", "mod libs;", "use libs::yo;", "fn ref_in_main() -> i32 {", " yo() + 1", "}", ""]]} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/progress","params":{"id":"progress_1","message":"sample","title":"Building"}} 11:07:19 INFO Handler-rust src/languageclient.rs:2217 Begin window/progress 11:07:19 ERROR Handler-rust src/vim.rs:349 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"window/progress","params":{"id":"progress_1","message":"sample","title":"Building"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/progress","params":{"done":true,"id":"progress_1","title":"Building"}} 11:07:19 INFO Handler-rust src/languageclient.rs:2217 Begin window/progress 11:07:19 ERROR Handler-rust src/vim.rs:349 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"window/progress","params":{"done":true,"id":"progress_1","title":"Building"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/progress","params":{"id":"progress_0","title":"Indexing"}} 11:07:19 INFO Handler-rust src/languageclient.rs:2217 Begin window/progress 11:07:19 ERROR Handler-rust src/vim.rs:349 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"window/progress","params":{"id":"progress_0","title":"Indexing"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"unused_variables","message":"unused variable: a\n\nnote: #[warn(unused_variables)] on by default\nhelp: consider using _a instead: _a","range":{"end":{"character":9,"line":1},"start":{"character":8,"line":1}},"severity":2,"source":"rustc"},{"code":"dead_code","message":"function is never used: ref_in_main","range":{"end":{"character":23,"line":15},"start":{"character":0,"line":15}},"severity":2,"source":"rustc"}],"uri":"file:///Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"}} 11:07:19 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"unused_variables","message":"unused variable: b\n\nhelp: consider using _b instead: _b","range":{"end":{"character":9,"line":3},"start":{"character":8,"line":3}},"severity":2,"source":"rustc"},{"code":"dead_code","message":"function is never used: yo\n\nnote: #[warn(dead_code)] on by default","range":{"end":{"character":18,"line":1},"start":{"character":0,"line":1}},"severity":2,"source":"rustc"}],"uri":"file:///Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/libs.rs"}} 11:07:19 INFO Handler-rust src/languageclient.rs:1628 Begin textDocument/publishDiagnostics 11:07:19 INFO Handler-rust src/languageclient.rs:1628 Begin textDocument/publishDiagnostics 11:07:19 ERROR Handler-rust src/vim.rs:349 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"unused_variables","message":"unused variable: a\n\nnote: #[warn(unused_variables)] on by default\nhelp: consider using _a instead: _a","range":{"end":{"character":9,"line":1},"start":{"character":8,"line":1}},"severity":2,"source":"rustc"},{"code":"dead_code","message":"function is never used: ref_in_main","range":{"end":{"character":23,"line":15},"start":{"character":0,"line":15}},"severity":2,"source":"rustc"}],"uri":"file:///Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:19 ERROR Handler-rust src/vim.rs:349 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"unused_variables","message":"unused variable: b\n\nhelp: consider using _b instead: _b","range":{"end":{"character":9,"line":3},"start":{"character":8,"line":3}},"severity":2,"source":"rustc"},{"code":"dead_code","message":"function is never used: yo\n\nnote: #[warn(dead_code)] on by default","range":{"end":{"character":18,"line":1},"start":{"character":0,"line":1}},"severity":2,"source":"rustc"}],"uri":"file:///Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/libs.rs"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:20 INFO RPC-rust src/vim.rs:332 <= {"jsonrpc":"2.0","method":"window/progress","params":{"done":true,"id":"progress_0","title":"Indexing"}} 11:07:20 INFO Handler-rust src/languageclient.rs:2217 Begin window/progress 11:07:20 ERROR Handler-rust src/vim.rs:349 Error handling message: key must be a string Message: {"jsonrpc":"2.0","method":"window/progress","params":{"done":true,"id":"progress_0","title":"Indexing"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 }

11:07:36 INFO main src/vim.rs:332 <= {"id": 1, "jsonrpc": "2.0", "method": "workspace/symbol", "params": {"query": "", "handle": true, "languageId": "rust", "buftype": "", "text": ["fn main() {", " let a = 1;", " println!(\"{}\", greet());", " // place holder for didChange test.", "}", "", "", "fn greet() -> i32 {", " 42", "}", "", "// place holder for didChange test.", "", "mod libs;", "use libs::yo;", "fn ref_in_main() -> i32 {", " yo() + 1", "}", ""], "filename": "/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"}} 11:07:36 INFO Handler-main src/languageclient.rs:1491 Begin textDocument/didChange 11:07:36 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename] = [String(""), String("rust"), String("/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs")] 11:07:36 INFO Handler-main src/languageclient.rs:1500 Not opened yet. Switching to didOpen. 11:07:36 INFO Handler-main src/languageclient.rs:1446 Begin textDocument/didOpen 11:07:36 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename, Text] = [String(""), String("rust"), String("/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"), Array([String("fn main() {"), String(" let a = 1;"), String(" println!(\"{}\", greet());"), String(" // place holder for didChange test."), String("}"), String(""), String(""), String("fn greet() -> i32 {"), String(" 42"), String("}"), String(""), String("// place holder for didChange test."), String(""), String("mod libs;"), String("use libs::yo;"), String("fn ref_in_main() -> i32 {"), String(" yo() + 1"), String("}"), String("")])] 11:07:36 ERROR Handler-main src/vim.rs:47 Error handling message: key must be a string Message: {"id": 1, "jsonrpc": "2.0", "method": "workspace/symbol", "params": {"query": "", "handle": true, "languageId": "rust", "buftype": "", "text": ["fn main() {", " let a = 1;", " println!(\"{}\", greet());", " // place holder for didChange test.", "}", "", "", "fn greet() -> i32 {", " 42", "}", "", "// place holder for didChange test.", "", "mod libs;", "use libs::yo;", "fn ref_in_main() -> i32 {", " yo() + 1", "}", ""], "filename": "/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:36 INFO Handler-main src/vim.rs:104 => {"jsonrpc":"2.0","error":{"code":-32603,"message":"key must be a string"},"id":1}

11:07:47 INFO main src/vim.rs:332 <= {"id": 2, "jsonrpc": "2.0", "method": "textDocument/documentSymbol", "params": {"handle": true, "languageId": "rust", "buftype": "", "text": ["fn main() {", " let a = 1;", " println!(\"{}\", greet());", " // place holder for didChange test.", "}", "", "", "fn greet() -> i32 {", " 42", "}", "", "// place holder for didChange test.", "", "mod libs;", "use libs::yo;", "fn ref_in_main() -> i32 {", " yo() + 1", "}", ""], "filename": "/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"}} 11:07:47 INFO Handler-main src/languageclient.rs:1491 Begin textDocument/didChange 11:07:47 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename] = [String(""), String("rust"), String("/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs")] 11:07:47 INFO Handler-main src/languageclient.rs:1500 Not opened yet. Switching to didOpen. 11:07:47 INFO Handler-main src/languageclient.rs:1446 Begin textDocument/didOpen 11:07:47 INFO Handler-main src/languageclient.rs:46 gather_args: [Buftype, LanguageId, Filename, Text] = [String(""), String("rust"), String("/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"), Array([String("fn main() {"), String(" let a = 1;"), String(" println!(\"{}\", greet());"), String(" // place holder for didChange test."), String("}"), String(""), String(""), String("fn greet() -> i32 {"), String(" 42"), String("}"), String(""), String("// place holder for didChange test."), String(""), String("mod libs;"), String("use libs::yo;"), String("fn ref_in_main() -> i32 {"), String(" yo() + 1"), String("}"), String("")])] 11:07:47 ERROR Handler-main src/vim.rs:47 Error handling message: key must be a string Message: {"id": 2, "jsonrpc": "2.0", "method": "textDocument/documentSymbol", "params": {"handle": true, "languageId": "rust", "buftype": "", "text": ["fn main() {", " let a = 1;", " println!(\"{}\", greet());", " // place holder for didChange test.", "}", "", "", "fn greet() -> i32 {", " 42", "}", "", "// place holder for didChange test.", "", "mod libs;", "use libs::yo;", "fn ref_in_main() -> i32 {", " yo() + 1", "}", ""], "filename": "/Users/joe/.vim/plugged/LanguageClient-neovim/tests/data/sample-rs/src/main.rs"}} Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:07:47 INFO Handler-main src/vim.rs:104 => {"jsonrpc":"2.0","error":{"code":-32603,"message":"key must be a string"},"id":2}

11:09:12 INFO main src/vim.rs:332 <= {"method": "exit", "jsonrpc": "2.0", "params": {"languageId": "rust", "buftype": ""}} 11:09:12 INFO Handler-main src/languageclient.rs:1742 Begin exit 11:09:12 INFO Handler-main src/languageclient.rs:46 gather_args: [LanguageId] = [String("rust")] 11:09:12 INFO Handler-main src/vim.rs:156 => {"jsonrpc":"2.0","method":"exit","params":null} 11:09:12 ERROR Handler-main src/languageclient.rs:1751 Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:09:12 ERROR Handler-main src/languageclient.rs:1755 Error: ErrorImpl { code: KeyMustBeAString, line: 0, column: 0 } 11:09:12 INFO Handler-main src/languageclient.rs:1757 End exit



## Current Behavior
When I run `:call LanguageClient_workspace_symbol()` in NeoVim with an Elixir project, I get an `Invalid Request` error. However, with Elixir `:call LanguageClient_textDocument_documentSymbol()` works fine.

When I used the sample `min-init.vim` and sample Rust project, I got a different error saying `key must be a string`. In addition, with rust `:call LanguageClient_textDocument_documentSymbol()` gave the same error, so neither worked.

## Expected Behavior
Running `:call LanguageClient_workspace_symbol()` should properly populate the appropriate buffer with project symbols info.
autozimu commented 6 years ago

For the case of "must be a string", I'm not sure where the problem come problem, but please try the newer release I just released. It should have been resolved.

For the elixir error though, I believe it is the language server returns the "Invalid Request". Please report at language server repo.

autozimu commented 6 years ago

Here is the language server implemented requests/notifications https://github.com/JakeBecker/elixir-ls/blob/ca60f47ad0559d0687f4fa6505dfbe8febe00a3d/apps/language_server/lib/language_server/protocol.ex

jswny commented 6 years ago

Ah yes, you are correct. It seems as though ElixirLS doesn't have that specific request implemented yet. There is an issue here for adding support for this particular request in ElixirLS: https://github.com/JakeBecker/elixir-ls/issues/18.

I also tried the latest version for the Rust sample project, and everything seems to work just fine now! Thanks so much for the support and the wonderful plugin!