unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
@ 2023-05-11  4:49 Misha Zharov
  2023-05-11  6:35 ` Felician Nemeth
  0 siblings, 1 reply; 9+ messages in thread
From: Misha Zharov @ 2023-05-11  4:49 UTC (permalink / raw)
  To: 63433

When I declare a module that does not exist in Rust,
`M-x eglot-code-actions` suggests that I create the file. However, when I
select this option I get the following traceback and the change is not
applied:

```
Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
  file-truename(nil)
  find-buffer-visiting(nil)
  cl-every(find-buffer-visiting (nil))
  cl-notevery(find-buffer-visiting (nil))
  eglot--apply-workspace-edit((:documentChanges [(:kind "create" :uri
"file:///home/misha/sweet/repos/tmp/thing.rs")]))
  eglot--read-execute-code-action(((:title "Create module at
`thing.rs`" :kind "quickfix" :edit (:documentChanges [(:kind "create"
:uri "file:///home/misha/sweet/repos/tmp/thing.rs")])) (:title "Create
module at `thing/mod.rs`" :kind "quickfix" :edit (:documentChanges
[(:kind "create" :uri
"file:///home/misha/sweet/repos/tmp/thing/mod.rs")])))
#<eglot-lsp-server eglot-lsp-server-156498df5f36> nil)
  eglot-code-actions(5 10 nil t)
  funcall-interactively(eglot-code-actions 5 10 nil t)
  command-execute(eglot-code-actions record)
  execute-extended-command(nil "eglot-code-actions" "eglot-code-actions")
  funcall-interactively(execute-extended-command nil
"eglot-code-actions" "eglot-code-actions")
  command-execute(execute-extended-command)
```

Reproduction (from `emacs -Q`):
Create a `Cargo.toml`:
```
[package]
name = "tmp"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at
https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

[[bin]]
name = "tmp"
path = "main.rs"
```

Create a `main.rs`:
```
mod thing;

fn main() {
   println!("Hello world");
}
```

Enable `rust-ts-mode` (the treesit grammar has to be installed I
assume). Flymake and ElDoc appear to be enabled as well. Enable eglot:
`M-x eglot`.

Eglot should prompt us to choose a language server. This reproduces with
rust-analyzer which is shipped with Rust 1.69 (can be obtained at
`https://www.rust-lang.org/tools/install`). RLS should not be used.

Now there should be a code action to fix the issue with the missing
module (by creating the file `thing.rs`). However, we see that the code
action is not applied successfully.

`M-x eglot-events-buffer`:
```
[internal] Wed May 10 21:26:58 2023:
(:message "Running language server: /home/misha/.cargo/bin/rust-analyzer")
[client-request] (id:1) Wed May 10 21:26:58 2023:
(:jsonrpc "2.0" :id 1 :method "initialize" :params
      (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
:rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
#s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
data
                                                                            ())
              :capabilities
              (:workspace
               (:applyEdit t :executeCommand
                   (:dynamicRegistration :json-false)
                   :workspaceEdit
                   (:documentChanges t)
                   :didChangeWatchedFiles
                   (:dynamicRegistration t)
                   :symbol
                   (:dynamicRegistration :json-false)
                   :configuration t :workspaceFolders t)
               :textDocument
               (:synchronization
            (:dynamicRegistration :json-false :willSave t
:willSaveWaitUntil t :didSave t)
            :completion
            (:dynamicRegistration :json-false :completionItem
                          (:snippetSupport :json-false
:deprecatedSupport t :resolveSupport
                                   (:properties
                                ["documentation" "details"
"additionalTextEdits"])
                                   :tagSupport
                                   (:valueSet
                                [1]))
                          :contextSupport t)
            :hover
            (:dynamicRegistration :json-false :contentFormat
                          ["plaintext"])
            :signatureHelp
            (:dynamicRegistration :json-false :signatureInformation
                          (:parameterInformation
                           (:labelOffsetSupport t)
                           :activeParameterSupport t))
            :references
            (:dynamicRegistration :json-false)
            :definition
            (:dynamicRegistration :json-false :linkSupport t)
            :declaration
            (:dynamicRegistration :json-false :linkSupport t)
            :implementation
            (:dynamicRegistration :json-false :linkSupport t)
            :typeDefinition
            (:dynamicRegistration :json-false :linkSupport t)
            :documentSymbol
            (:dynamicRegistration :json-false
:hierarchicalDocumentSymbolSupport t :symbolKind
                          (:valueSet
                           [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 26]))
            :documentHighlight
            (:dynamicRegistration :json-false)
            :codeAction
            (:dynamicRegistration :json-false :codeActionLiteralSupport
                          (:codeActionKind
                           (:valueSet
                        ["quickfix" "refactor" "refactor.extract"
"refactor.inline" "refactor.rewrite" "source"
"source.organizeImports"]))
                          :isPreferredSupport t)
            :formatting
            (:dynamicRegistration :json-false)
            :rangeFormatting
            (:dynamicRegistration :json-false)
            :rename
            (:dynamicRegistration :json-false)
            :inlayHint
            (:dynamicRegistration :json-false)
            :publishDiagnostics
            (:relatedInformation :json-false :codeDescriptionSupport
:json-false :tagSupport
                         (:valueSet
                          [1 2])))
               :window
               (:workDoneProgress t)
               :general
               (:positionEncodings
            ["utf-32" "utf-8" "utf-16"])
               :experimental #s(hash-table size 1 test eql rehash-size
1.5 rehash-threshold 0.8125 data
                           ()))
              :workspaceFolders
              [(:uri "file:///home/misha/sweet/repos/tmp" :name
"~/sweet/repos/tmp/")]))
[server-reply] (id:1) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 1 :result
      (:capabilities
       (:positionEncoding "utf-32" :textDocumentSync
                  (:openClose t :change 2 :save nil)
                  :selectionRangeProvider t :hoverProvider t :completionProvider
                  (:resolveProvider t :triggerCharacters
                        [":" "." "'" "("]
                        :completionItem
                        (:labelDetailsSupport :json-false))
                  :signatureHelpProvider
                  (:triggerCharacters
                   ["(" "," "<"])
                  :definitionProvider t :typeDefinitionProvider t
:implementationProvider t :referencesProvider t
:documentHighlightProvider t :documentSymbolProvider t
:workspaceSymbolProvider t :codeActionProvider
                  (:codeActionKinds
                   ["" "quickfix" "refactor" "refactor.extract"
"refactor.inline" "refactor.rewrite"]
                   :resolveProvider t)
                  :codeLensProvider
                  (:resolveProvider t)
                  :documentFormattingProvider t
:documentRangeFormattingProvider :json-false
:documentOnTypeFormattingProvider
                  (:firstTriggerCharacter "=" :moreTriggerCharacter
                              ["." ">" "{"])
                  :renameProvider
                  (:prepareProvider t)
                  :foldingRangeProvider t :declarationProvider t :workspace
                  (:workspaceFolders
                   (:supported t :changeNotifications t)
                   :fileOperations
                   (:willRename
                (:filters
                 [(:scheme "file" :pattern
                       (:glob "**/*.rs" :matches "file"))
                  (:scheme "file" :pattern
                       (:glob "**" :matches "folder"))])))
                  :callHierarchyProvider t :semanticTokensProvider
                  (:legend
                   (:tokenTypes
                ["comment" "decorator" "enumMember" "enum" "function"
"interface" "keyword" "macro" "method" "namespace" "number" "operator"
"parameter" "property" "string" "struct" "typeParameter" "variable"
"angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
"boolean" "brace" "bracket" "builtinAttribute" "builtinType"
"character" "colon" "comma" "comparison" "constParameter" "derive"
"deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
"label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
"selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
"union" "unresolvedReference"]
                :tokenModifiers
                ["documentation" "declaration" "static"
"defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
"controlFlow" "crateRoot" "injected" "intraDocLink" "library"
"mutable" "public" "reference" "trait" "unsafe"])
                   :range t :full
                   (:delta t))
                  :inlayHintProvider
                  (:resolveProvider t)
                  :experimental
                  (:externalDocs t :hoverRange t :joinLines t
:matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
t :runnables
                         (:kinds
                          ["cargo"])
                         :ssr t :workspaceSymbolScopeKindFiltering t))
       :serverInfo
       (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
[client-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
test eql rehash-size 1.5 rehash-threshold 0.8125 data
                                ()))
[client-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "textDocument/didOpen" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 0
:languageId "rust-ts" :text "mod thing;\n\nfn main() {\n
println!(\"Hello world\");\n}")))
[client-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
      (:settings #s(hash-table size 1 test eql rehash-size 1.5
rehash-threshold 0.8125 data
                   ())))
[client-request] (id:2) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 2 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 4 :character 1))))
[stderr] [ERROR rust_analyzer::config] failed to find any projects in
[AbsPathBuf("/home/misha/sweet/repos/tmp")]
[stderr] [ERROR rust_analyzer::lsp_utils] rust-analyzer failed to
discover workspace
[server-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "window/showMessage" :params
      (:type 1 :message "rust-analyzer failed to discover workspace"))
[stderr] [ERROR rust_analyzer::lsp_utils] rust-analyzer failed to
discover workspace
[server-request] (id:0) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 0 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Fetching"))
[client-reply] (id:0) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 0 :result nil)
[server-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "begin" :title "Fetching" :cancellable :json-false)))
[server-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "window/showMessage" :params
      (:type 1 :message "rust-analyzer failed to discover workspace"))
[server-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "end")))
[server-request] (id:1) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 1 :method "workspace/configuration" :params
      (:items
       [(:section "rust-analyzer")]))
[client-reply] (id:1) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 1 :result
      [nil])
[server-request] (id:2) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 2 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Indexing"))
[client-reply] (id:2) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 2 :result nil)
[server-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "begin" :title "Indexing" :cancellable :json-false
:percentage 0)))
[server-notification] Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "end")))
[server-reply] (id:2) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 2 :result
      [])
[client-request] (id:3) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 3 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 3 :character 24)))
[client-request] (id:4) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 4 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 3 :character 24)))
[client-request] (id:5) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 5 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 3 :character 24)))
[server-reply] (id:3) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 3 :result nil)
[server-reply] (id:4) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 4 :result nil)
[server-reply] (id:5) Wed May 10 21:27:00 2023:
(:jsonrpc "2.0" :id 5 :result nil)
[client-request] (id:6) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 6 :method "shutdown" :params nil)
[server-reply] (id:6) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 6 :result nil)
[client-notification] Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :method "exit" :params nil)
[internal] Wed May 10 21:29:29 2023:
(:message "Connection state changed" :change "killed\n")

----------b---y---e---b---y---e----------
[stderr]
[stderr]
[stderr] nil
[stderr] nil
[stderr] Process EGLOT (tmp/(rust-ts-mode rust-mode)) stderr finished
[client-request] (id:1) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 1 :method "initialize" :params
      (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
:rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
#s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
data
                                                                            ())
              :capabilities
              (:workspace
               (:applyEdit t :executeCommand
                   (:dynamicRegistration :json-false)
                   :workspaceEdit
                   (:documentChanges t)
                   :didChangeWatchedFiles
                   (:dynamicRegistration t)
                   :symbol
                   (:dynamicRegistration :json-false)
                   :configuration t :workspaceFolders t)
               :textDocument
               (:synchronization
            (:dynamicRegistration :json-false :willSave t
:willSaveWaitUntil t :didSave t)
            :completion
            (:dynamicRegistration :json-false :completionItem
                          (:snippetSupport :json-false
:deprecatedSupport t :resolveSupport
                                   (:properties
                                ["documentation" "details"
"additionalTextEdits"])
                                   :tagSupport
                                   (:valueSet
                                [1]))
                          :contextSupport t)
            :hover
            (:dynamicRegistration :json-false :contentFormat
                          ["plaintext"])
            :signatureHelp
            (:dynamicRegistration :json-false :signatureInformation
                          (:parameterInformation
                           (:labelOffsetSupport t)
                           :activeParameterSupport t))
            :references
            (:dynamicRegistration :json-false)
            :definition
            (:dynamicRegistration :json-false :linkSupport t)
            :declaration
            (:dynamicRegistration :json-false :linkSupport t)
            :implementation
            (:dynamicRegistration :json-false :linkSupport t)
            :typeDefinition
            (:dynamicRegistration :json-false :linkSupport t)
            :documentSymbol
            (:dynamicRegistration :json-false
:hierarchicalDocumentSymbolSupport t :symbolKind
                          (:valueSet
                           [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 26]))
            :documentHighlight
            (:dynamicRegistration :json-false)
            :codeAction
            (:dynamicRegistration :json-false :codeActionLiteralSupport
                          (:codeActionKind
                           (:valueSet
                        ["quickfix" "refactor" "refactor.extract"
"refactor.inline" "refactor.rewrite" "source"
"source.organizeImports"]))
                          :isPreferredSupport t)
            :formatting
            (:dynamicRegistration :json-false)
            :rangeFormatting
            (:dynamicRegistration :json-false)
            :rename
            (:dynamicRegistration :json-false)
            :inlayHint
            (:dynamicRegistration :json-false)
            :publishDiagnostics
            (:relatedInformation :json-false :codeDescriptionSupport
:json-false :tagSupport
                         (:valueSet
                          [1 2])))
               :window
               (:workDoneProgress t)
               :general
               (:positionEncodings
            ["utf-32" "utf-8" "utf-16"])
               :experimental #s(hash-table size 1 test eql rehash-size
1.5 rehash-threshold 0.8125 data
                           ()))
              :workspaceFolders
              [(:uri "file:///home/misha/sweet/repos/tmp" :name
"~/sweet/repos/tmp/")]))
[server-reply] (id:1) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 1 :result
      (:capabilities
       (:positionEncoding "utf-32" :textDocumentSync
                  (:openClose t :change 2 :save nil)
                  :selectionRangeProvider t :hoverProvider t :completionProvider
                  (:resolveProvider t :triggerCharacters
                        [":" "." "'" "("]
                        :completionItem
                        (:labelDetailsSupport :json-false))
                  :signatureHelpProvider
                  (:triggerCharacters
                   ["(" "," "<"])
                  :definitionProvider t :typeDefinitionProvider t
:implementationProvider t :referencesProvider t
:documentHighlightProvider t :documentSymbolProvider t
:workspaceSymbolProvider t :codeActionProvider
                  (:codeActionKinds
                   ["" "quickfix" "refactor" "refactor.extract"
"refactor.inline" "refactor.rewrite"]
                   :resolveProvider t)
                  :codeLensProvider
                  (:resolveProvider t)
                  :documentFormattingProvider t
:documentRangeFormattingProvider :json-false
:documentOnTypeFormattingProvider
                  (:firstTriggerCharacter "=" :moreTriggerCharacter
                              ["." ">" "{"])
                  :renameProvider
                  (:prepareProvider t)
                  :foldingRangeProvider t :declarationProvider t :workspace
                  (:workspaceFolders
                   (:supported t :changeNotifications t)
                   :fileOperations
                   (:willRename
                (:filters
                 [(:scheme "file" :pattern
                       (:glob "**/*.rs" :matches "file"))
                  (:scheme "file" :pattern
                       (:glob "**" :matches "folder"))])))
                  :callHierarchyProvider t :semanticTokensProvider
                  (:legend
                   (:tokenTypes
                ["comment" "decorator" "enumMember" "enum" "function"
"interface" "keyword" "macro" "method" "namespace" "number" "operator"
"parameter" "property" "string" "struct" "typeParameter" "variable"
"angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
"boolean" "brace" "bracket" "builtinAttribute" "builtinType"
"character" "colon" "comma" "comparison" "constParameter" "derive"
"deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
"label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
"selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
"union" "unresolvedReference"]
                :tokenModifiers
                ["documentation" "declaration" "static"
"defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
"controlFlow" "crateRoot" "injected" "intraDocLink" "library"
"mutable" "public" "reference" "trait" "unsafe"])
                   :range t :full
                   (:delta t))
                  :inlayHintProvider
                  (:resolveProvider t)
                  :experimental
                  (:externalDocs t :hoverRange t :joinLines t
:matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
t :runnables
                         (:kinds
                          ["cargo"])
                         :ssr t :workspaceSymbolScopeKindFiltering t))
       :serverInfo
       (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
[client-notification] Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
test eql rehash-size 1.5 rehash-threshold 0.8125 data
                                ()))
[client-notification] Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
      (:settings #s(hash-table size 1 test eql rehash-size 1.5
rehash-threshold 0.8125 data
                   ())))
[server-request] (id:0) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 0 :method "workspace/configuration" :params
      (:items
       [(:section "rust-analyzer")]))
[client-reply] (id:0) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 0 :result
      [nil])
[server-request] (id:1) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 1 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Fetching"))
[client-reply] (id:1) Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :id 1 :result nil)
[server-notification] Wed May 10 21:29:29 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "begin" :title "Fetching" :cancellable :json-false)))
[server-notification] Wed May 10 21:29:32 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "report" :cancellable :json-false :message "metadata")))
[server-request] (id:2) Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :id 2 :method "client/registerCapability" :params
      (:registrations
       [(:id "workspace/didChangeWatchedFiles" :method
"workspace/didChangeWatchedFiles" :registerOptions
         (:watchers
          [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
[client-reply] (id:2) Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :id 2 :result nil)
[server-notification] Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "end")))
[server-request] (id:3) Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :id 3 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Roots Scanned"))
[client-reply] (id:3) Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :id 3 :result nil)
[server-notification] Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "begin" :title "Roots Scanned" :cancellable
:json-false :message "0/2" :percentage 0)))
[server-notification] Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "report" :cancellable :json-false :message "1/2"
:percentage 50)))
[server-request] (id:4) Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :id 4 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Fetching"))
[client-reply] (id:4) Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :id 4 :result nil)
[server-notification] Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "begin" :title "Fetching" :cancellable :json-false)))
[server-notification] Wed May 10 21:29:35 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "report" :cancellable :json-false :message "metadata")))
[server-notification] Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "end")))
[server-request] (id:5) Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :id 5 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Loading"))
[client-reply] (id:5) Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :id 5 :result nil)
[server-notification] Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "begin" :title "Loading" :cancellable :json-false)))
[server-notification] Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "report" :cancellable :json-false :message "building
proc-macros: tmp")))
[server-notification] Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "report" :cancellable :json-false :message "building
proc-macros: tmp")))
[server-request] (id:6) Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :id 6 :method "client/registerCapability" :params
      (:registrations
       [(:id "workspace/didChangeWatchedFiles" :method
"workspace/didChangeWatchedFiles" :registerOptions
         (:watchers
          [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
[client-reply] (id:6) Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :id 6 :result nil)
[server-notification] Wed May 10 21:29:36 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "end")))
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "end" :message "2/2")))
[server-request] (id:7) Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :id 7 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Roots Scanned"))
[client-reply] (id:7) Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :id 7 :result nil)
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "begin" :title "Roots Scanned" :cancellable
:json-false :message "0/2" :percentage 0)))
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "report" :cancellable :json-false :message "1/2"
:percentage 50)))
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "end" :message "2/2")))
[server-request] (id:8) Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :id 8 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Fetching"))
[client-reply] (id:8) Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :id 8 :result nil)
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "begin" :title "Fetching" :cancellable :json-false)))
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "report" :cancellable :json-false :message "metadata")))
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "end")))
[server-request] (id:9) Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :id 9 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Indexing"))
[client-reply] (id:9) Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :id 9 :result nil)
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "begin" :title "Indexing" :cancellable :json-false
:percentage 0)))
[server-notification] Wed May 10 21:29:48 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "0/5 (test
+ 1 more)" :percentage 0)))
[server-request] (id:10) Wed May 10 21:29:49 2023:
(:jsonrpc "2.0" :id 10 :method "window/workDoneProgress/create" :params
      (:token "rust-analyzer/flycheck/0"))
[client-reply] (id:10) Wed May 10 21:29:49 2023:
(:jsonrpc "2.0" :id 10 :result nil)
[server-notification] Wed May 10 21:29:49 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "begin" :title "cargo check" :cancellable t)))
[server-notification] Wed May 10 21:29:49 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "1/5
(core)" :percentage 20)))
[server-notification] Wed May 10 21:29:49 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "E0583" :codeDescription
          (:href "https://doc.rust-lang.org/error-index.html#E0583")
          :source "rustc" :message "file not found for module
`thing`\nto create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"" :data
          (:rendered "error[E0583]: file not found for module
`thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
= help: to create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"\n\n"))]))
[server-notification] Wed May 10 21:29:52 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :percentage 40)))
[server-notification] Wed May 10 21:29:52 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "2/5
(alloc)" :percentage 40)))
[server-notification] Wed May 10 21:29:52 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :percentage 60)))
[server-notification] Wed May 10 21:29:52 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "3/5
(std)" :percentage 60)))
[server-notification] Wed May 10 21:29:53 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :percentage 80)))
[server-notification] Wed May 10 21:29:53 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "4/5
(proc_macro)" :percentage 80)))
[server-notification] Wed May 10 21:29:53 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :percentage 100)))
[server-notification] Wed May 10 21:29:53 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "end")))
[server-notification] Wed May 10 21:29:54 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "end")))
[client-notification] Wed May 10 21:30:01 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
:type 1)]))
[client-notification] Wed May 10 21:30:08 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 1)]))
[client-notification] Wed May 10 21:30:08 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
[client-notification] Wed May 10 21:30:08 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
[stderr]
[stderr]
[stderr] nil
[stderr] nil
[stderr] Process EGLOT (tmp/(rust-ts-mode rust-mode)) stderr finished
[internal] Wed May 10 21:30:16 2023:
(:message "Running language server: /home/misha/.cargo/bin/rust-analyzer")
[client-request] (id:1) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 1 :method "initialize" :params
      (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
:rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
#s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
data
                                                                            ())
              :capabilities
              (:workspace
               (:applyEdit t :executeCommand
                   (:dynamicRegistration :json-false)
                   :workspaceEdit
                   (:documentChanges t)
                   :didChangeWatchedFiles
                   (:dynamicRegistration t)
                   :symbol
                   (:dynamicRegistration :json-false)
                   :configuration t :workspaceFolders t)
               :textDocument
               (:synchronization
            (:dynamicRegistration :json-false :willSave t
:willSaveWaitUntil t :didSave t)
            :completion
            (:dynamicRegistration :json-false :completionItem
                          (:snippetSupport :json-false
:deprecatedSupport t :resolveSupport
                                   (:properties
                                ["documentation" "details"
"additionalTextEdits"])
                                   :tagSupport
                                   (:valueSet
                                [1]))
                          :contextSupport t)
            :hover
            (:dynamicRegistration :json-false :contentFormat
                          ["plaintext"])
            :signatureHelp
            (:dynamicRegistration :json-false :signatureInformation
                          (:parameterInformation
                           (:labelOffsetSupport t)
                           :activeParameterSupport t))
            :references
            (:dynamicRegistration :json-false)
            :definition
            (:dynamicRegistration :json-false :linkSupport t)
            :declaration
            (:dynamicRegistration :json-false :linkSupport t)
            :implementation
            (:dynamicRegistration :json-false :linkSupport t)
            :typeDefinition
            (:dynamicRegistration :json-false :linkSupport t)
            :documentSymbol
            (:dynamicRegistration :json-false
:hierarchicalDocumentSymbolSupport t :symbolKind
                          (:valueSet
                           [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 26]))
            :documentHighlight
            (:dynamicRegistration :json-false)
            :codeAction
            (:dynamicRegistration :json-false :codeActionLiteralSupport
                          (:codeActionKind
                           (:valueSet
                        ["quickfix" "refactor" "refactor.extract"
"refactor.inline" "refactor.rewrite" "source"
"source.organizeImports"]))
                          :isPreferredSupport t)
            :formatting
            (:dynamicRegistration :json-false)
            :rangeFormatting
            (:dynamicRegistration :json-false)
            :rename
            (:dynamicRegistration :json-false)
            :inlayHint
            (:dynamicRegistration :json-false)
            :publishDiagnostics
            (:relatedInformation :json-false :codeDescriptionSupport
:json-false :tagSupport
                         (:valueSet
                          [1 2])))
               :window
               (:workDoneProgress t)
               :general
               (:positionEncodings
            ["utf-32" "utf-8" "utf-16"])
               :experimental #s(hash-table size 1 test eql rehash-size
1.5 rehash-threshold 0.8125 data
                           ()))
              :workspaceFolders
              [(:uri "file:///home/misha/sweet/repos/tmp" :name
"~/sweet/repos/tmp/")]))
[server-reply] (id:1) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 1 :result
      (:capabilities
       (:positionEncoding "utf-32" :textDocumentSync
                  (:openClose t :change 2 :save nil)
                  :selectionRangeProvider t :hoverProvider t :completionProvider
                  (:resolveProvider t :triggerCharacters
                        [":" "." "'" "("]
                        :completionItem
                        (:labelDetailsSupport :json-false))
                  :signatureHelpProvider
                  (:triggerCharacters
                   ["(" "," "<"])
                  :definitionProvider t :typeDefinitionProvider t
:implementationProvider t :referencesProvider t
:documentHighlightProvider t :documentSymbolProvider t
:workspaceSymbolProvider t :codeActionProvider
                  (:codeActionKinds
                   ["" "quickfix" "refactor" "refactor.extract"
"refactor.inline" "refactor.rewrite"]
                   :resolveProvider t)
                  :codeLensProvider
                  (:resolveProvider t)
                  :documentFormattingProvider t
:documentRangeFormattingProvider :json-false
:documentOnTypeFormattingProvider
                  (:firstTriggerCharacter "=" :moreTriggerCharacter
                              ["." ">" "{"])
                  :renameProvider
                  (:prepareProvider t)
                  :foldingRangeProvider t :declarationProvider t :workspace
                  (:workspaceFolders
                   (:supported t :changeNotifications t)
                   :fileOperations
                   (:willRename
                (:filters
                 [(:scheme "file" :pattern
                       (:glob "**/*.rs" :matches "file"))
                  (:scheme "file" :pattern
                       (:glob "**" :matches "folder"))])))
                  :callHierarchyProvider t :semanticTokensProvider
                  (:legend
                   (:tokenTypes
                ["comment" "decorator" "enumMember" "enum" "function"
"interface" "keyword" "macro" "method" "namespace" "number" "operator"
"parameter" "property" "string" "struct" "typeParameter" "variable"
"angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
"boolean" "brace" "bracket" "builtinAttribute" "builtinType"
"character" "colon" "comma" "comparison" "constParameter" "derive"
"deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
"label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
"selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
"union" "unresolvedReference"]
                :tokenModifiers
                ["documentation" "declaration" "static"
"defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
"controlFlow" "crateRoot" "injected" "intraDocLink" "library"
"mutable" "public" "reference" "trait" "unsafe"])
                   :range t :full
                   (:delta t))
                  :inlayHintProvider
                  (:resolveProvider t)
                  :experimental
                  (:externalDocs t :hoverRange t :joinLines t
:matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
t :runnables
                         (:kinds
                          ["cargo"])
                         :ssr t :workspaceSymbolScopeKindFiltering t))
       :serverInfo
       (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
[client-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
test eql rehash-size 1.5 rehash-threshold 0.8125 data
                                ()))
[client-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "textDocument/didOpen" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 0
:languageId "rust-ts" :text "fn main() {\n   println!(\"Hello
world\");\n}\n")))
[client-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
      (:settings #s(hash-table size 1 test eql rehash-size 1.5
rehash-threshold 0.8125 data
                   ())))
[client-request] (id:2) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 2 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 3 :character 0))))
[server-request] (id:0) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 0 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Fetching"))
[client-reply] (id:0) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 0 :result nil)
[server-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "begin" :title "Fetching" :cancellable :json-false)))
[server-request] (id:1) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 1 :method "workspace/configuration" :params
      (:items
       [(:section "rust-analyzer")]))
[client-reply] (id:1) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 1 :result
      [nil])
[server-reply] (id:2) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 2 :result
      [])
[server-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "report" :cancellable :json-false :message "metadata")))
[server-request] (id:2) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 2 :method "client/registerCapability" :params
      (:registrations
       [(:id "workspace/didChangeWatchedFiles" :method
"workspace/didChangeWatchedFiles" :registerOptions
         (:watchers
          [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
[client-reply] (id:2) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 2 :result nil)
[server-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "end")))
[server-request] (id:3) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 3 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Roots Scanned"))
[client-reply] (id:3) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 3 :result nil)
[server-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "begin" :title "Roots Scanned" :cancellable
:json-false :message "0/2" :percentage 0)))
[server-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "report" :cancellable :json-false :message "1/2"
:percentage 50)))
[server-request] (id:4) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 4 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Fetching"))
[client-reply] (id:4) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 4 :result nil)
[server-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "begin" :title "Fetching" :cancellable :json-false)))
[client-request] (id:3) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 3 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 0)))
[client-request] (id:4) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 4 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 0)))
[client-request] (id:5) Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :id 5 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 0)))
[server-notification] Wed May 10 21:30:16 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "end" :message "2/2")))
[server-reply] (id:3) Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :id 3 :result nil)
[server-reply] (id:4) Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :id 4 :result nil)
[server-notification] Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "report" :cancellable :json-false :message "metadata")))
[server-notification] Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "end")))
[server-request] (id:5) Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :id 5 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Fetching"))
[client-reply] (id:5) Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :id 5 :result nil)
[server-notification] Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "begin" :title "Fetching" :cancellable :json-false)))
[server-notification] Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "report" :cancellable :json-false :message "metadata")))
[server-notification] Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Fetching" :value
          (:kind "end")))
[server-request] (id:6) Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :id 6 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Loading"))
[client-reply] (id:6) Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :id 6 :result nil)
[server-notification] Wed May 10 21:30:17 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "begin" :title "Loading" :cancellable :json-false)))
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "report" :cancellable :json-false :message "building
proc-macros: tmp")))
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "report" :cancellable :json-false :message "building
proc-macros: tmp")))
[server-request] (id:7) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 7 :method "client/registerCapability" :params
      (:registrations
       [(:id "workspace/didChangeWatchedFiles" :method
"workspace/didChangeWatchedFiles" :registerOptions
         (:watchers
          [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
           (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
[client-reply] (id:7) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 7 :result nil)
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Loading" :value
          (:kind "end")))
[server-request] (id:8) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 8 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Roots Scanned"))
[client-reply] (id:8) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 8 :result nil)
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "begin" :title "Roots Scanned" :cancellable
:json-false :message "0/2" :percentage 0)))
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "report" :cancellable :json-false :message "1/2"
:percentage 50)))
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Roots Scanned" :value
          (:kind "end" :message "2/2")))
[server-request] (id:9) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 9 :method "window/workDoneProgress/create" :params
      (:token "rustAnalyzer/Indexing"))
[client-reply] (id:9) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 9 :result nil)
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "begin" :title "Indexing" :cancellable :json-false
:percentage 0)))
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "0/5 (core
+ 1 more)" :percentage 0)))
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "1/5
(core)" :percentage 20)))
[server-request] (id:10) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 10 :method "window/workDoneProgress/create" :params
      (:token "rust-analyzer/flycheck/0"))
[client-reply] (id:10) Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :id 10 :result nil)
[server-notification] Wed May 10 21:30:18 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "begin" :title "cargo check" :cancellable t)))
[server-notification] Wed May 10 21:30:19 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "report" :cancellable t :message "tmp")))
[server-notification] Wed May 10 21:30:19 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "report" :cancellable t :message "tmp")))
[server-notification] Wed May 10 21:30:19 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "end")))
[server-notification] Wed May 10 21:30:20 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "2/5
(alloc)" :percentage 40)))
[server-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :percentage 60)))
[server-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "3/5
(std)" :percentage 60)))
[server-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :percentage 80)))
[server-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :message "4/5
(proc_macro)" :percentage 80)))
[client-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
:type 1)]))
[client-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
:type 1)]))
[server-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "report" :cancellable :json-false :percentage 100)))
[server-notification] Wed May 10 21:30:21 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rustAnalyzer/Indexing" :value
          (:kind "end")))
[server-reply] (id:5) Wed May 10 21:30:23 2023:
(:jsonrpc "2.0" :id 5 :result
      [])
[server-notification] Wed May 10 21:30:23 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        []
        :version 0))
[client-notification] Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 9)
       :contentChanges
       [(:range
         (:start
          (:line 0 :character 0)
          :end
          (:line 0 :character 0))
         :rangeLength 0 :text "\n")
        (:range
         (:start
          (:line 1 :character 0)
          :end
          (:line 1 :character 0))
         :rangeLength 0 :text "\n")
        (:range
         (:start
          (:line 0 :character 0)
          :end
          (:line 0 :character 0))
         :rangeLength 0 :text "m")
        (:range
         (:start
          (:line 0 :character 1)
          :end
          (:line 0 :character 1))
         :rangeLength 0 :text "d")
        (:range
         (:start
          (:line 0 :character 1)
          :end
          (:line 0 :character 2))
         :rangeLength 1 :text "")
        (:range
         (:start
          (:line 0 :character 1)
          :end
          (:line 0 :character 1))
         :rangeLength 0 :text "d")
        (:range
         (:start
          (:line 0 :character 2)
          :end
          (:line 0 :character 2))
         :rangeLength 0 :text " ")
        (:range
         (:start
          (:line 0 :character 2)
          :end
          (:line 0 :character 3))
         :rangeLength 1 :text "")
        (:range
         (:start
          (:line 0 :character 1)
          :end
          (:line 0 :character 2))
         :rangeLength 1 :text "")]))
[client-request] (id:6) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 6 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 1)))
[client-request] (id:7) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 7 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 1)))
[client-request] (id:8) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 8 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 1)))
[client-request] (id:9) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 9 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 5 :character 0))))
[server-reply] (id:6) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 6 :result nil)
[server-reply] (id:7) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 7 :result nil)
[server-reply] (id:8) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 8 :result nil)
[server-reply] (id:9) Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :id 9 :result
      [])
[server-notification] Wed May 10 21:30:24 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 0 :character 1)
           :end
           (:line 0 :character 1))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected BANG")
         (:range
          (:start
           (:line 0 :character 1)
           :end
           (:line 0 :character 1))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected
`{`, `[`, `(`")
         (:range
          (:start
           (:line 0 :character 1)
           :end
           (:line 0 :character 1))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected SEMICOLON")]
        :version 9))
[client-notification] Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 12)
       :contentChanges
       [(:range
         (:start
          (:line 0 :character 1)
          :end
          (:line 0 :character 1))
         :rangeLength 0 :text "o")
        (:range
         (:start
          (:line 0 :character 2)
          :end
          (:line 0 :character 2))
         :rangeLength 0 :text "d")
        (:range
         (:start
          (:line 0 :character 3)
          :end
          (:line 0 :character 3))
         :rangeLength 0 :text " ")]))
[client-request] (id:10) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 10 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 4)))
[client-request] (id:11) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 11 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 4)))
[client-request] (id:12) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 12 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 4)))
[client-request] (id:13) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 13 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 5 :character 0))))
[server-notification] Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 2 :character 0)
           :end
           (:line 2 :character 0))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected a name")
         (:range
          (:start
           (:line 2 :character 2)
           :end
           (:line 2 :character 2))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")
         (:range
          (:start
           (:line 2 :character 7)
           :end
           (:line 2 :character 7))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected BANG")
         (:range
          (:start
           (:line 2 :character 9)
           :end
           (:line 2 :character 9))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected SEMICOLON")
         (:range
          (:start
           (:line 2 :character 10)
           :end
           (:line 2 :character 10))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected an item")]
        :version 12))
[server-reply] (id:10) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 10 :result nil)
[server-reply] (id:11) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 11 :result nil)
[server-reply] (id:12) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 12 :result nil)
[server-reply] (id:13) Wed May 10 21:30:25 2023:
(:jsonrpc "2.0" :id 13 :result
      [])
[client-notification] Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 15)
       :contentChanges
       [(:range
         (:start
          (:line 0 :character 4)
          :end
          (:line 0 :character 4))
         :rangeLength 0 :text "t")
        (:range
         (:start
          (:line 0 :character 5)
          :end
          (:line 0 :character 5))
         :rangeLength 0 :text "m")
        (:range
         (:start
          (:line 0 :character 6)
          :end
          (:line 0 :character 6))
         :rangeLength 0 :text "p")]))
[client-request] (id:14) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 14 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 7)))
[client-request] (id:15) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 15 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 7)))
[client-request] (id:16) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 16 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 7)))
[client-request] (id:17) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 17 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 5 :character 0))))
[server-notification] Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 0 :character 7)
           :end
           (:line 0 :character 7))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")]
        :version 15))
[server-reply] (id:14) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 14 :result nil)
[server-reply] (id:17) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 17 :result
      [])
[server-reply] (id:15) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 15 :result
      (:contents
       (:kind "plaintext" :value "tmp\n\nmod tmp")
       :range
       (:start
        (:line 0 :character 4)
        :end
        (:line 0 :character 7))))
[server-reply] (id:16) Wed May 10 21:30:27 2023:
(:jsonrpc "2.0" :id 16 :result
      [(:range
        (:start
         (:line 0 :character 4)
         :end
         (:line 0 :character 7)))])
[internal] (id:18) Wed May 10 21:30:29 2023:
(:deferring :textDocument/signatureHelp :id 18 :params
        (:textDocument
         (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
         :position
         (:line 0 :character 8)))
[internal] (id:19) Wed May 10 21:30:29 2023:
(:deferring :textDocument/hover :id 19 :params
        (:textDocument
         (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
         :position
         (:line 0 :character 8)))
[internal] (id:20) Wed May 10 21:30:29 2023:
(:deferring :textDocument/documentHighlight :id 20 :params
        (:textDocument
         (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
         :position
         (:line 0 :character 8)))
[client-notification] Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 16)
       :contentChanges
       [(:range
         (:start
          (:line 0 :character 7)
          :end
          (:line 0 :character 7))
         :rangeLength 0 :text ";")]))
[internal] Wed May 10 21:30:29 2023:
(:maybe-run-deferred
 (20 19 18))
[client-request] (id:20) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 20 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 8)))
[client-request] (id:19) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 19 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 8)))
[client-request] (id:18) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 18 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 8)))
[client-request] (id:21) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 21 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 5 :character 0))))
[server-reply] (id:20) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 20 :result nil)
[server-reply] (id:19) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 19 :result nil)
[server-reply] (id:18) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 18 :result nil)
[server-notification] Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 8))
          :severity 1 :code "unresolved-module" :codeDescription
          (:href
"https://rust-analyzer.github.io/manual.html#unresolved-module")
          :source "rust-analyzer" :message "unresolved module, can't
find module file: tmp.rs, or tmp/mod.rs")]
        :version 16))
[server-reply] (id:21) Wed May 10 21:30:29 2023:
(:jsonrpc "2.0" :id 21 :result
      [])
[client-notification] Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 19)
       :contentChanges
       [(:range
         (:start
          (:line 0 :character 6)
          :end
          (:line 0 :character 7))
         :rangeLength 1 :text "")
        (:range
         (:start
          (:line 0 :character 5)
          :end
          (:line 0 :character 6))
         :rangeLength 1 :text "")
        (:range
         (:start
          (:line 0 :character 4)
          :end
          (:line 0 :character 5))
         :rangeLength 1 :text "")]))
[client-request] (id:22) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 22 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 4)))
[client-request] (id:23) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 23 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 4)))
[client-request] (id:24) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 24 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 4)))
[client-request] (id:25) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 25 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 5 :character 0))))
[server-notification] Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 0 :character 4)
           :end
           (:line 0 :character 4))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected a name")
         (:range
          (:start
           (:line 0 :character 5)
           :end
           (:line 0 :character 5))
          :severity 1 :code "syntax-error" :codeDescription
          (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
          :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")]
        :version 19))
[server-reply] (id:22) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 22 :result nil)
[server-reply] (id:23) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 23 :result nil)
[server-reply] (id:24) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 24 :result nil)
[server-reply] (id:25) Wed May 10 21:30:31 2023:
(:jsonrpc "2.0" :id 25 :result
      [])
[client-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "textDocument/didChange" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 24)
       :contentChanges
       [(:range
         (:start
          (:line 0 :character 4)
          :end
          (:line 0 :character 4))
         :rangeLength 0 :text "t")
        (:range
         (:start
          (:line 0 :character 5)
          :end
          (:line 0 :character 5))
         :rangeLength 0 :text "h")
        (:range
         (:start
          (:line 0 :character 6)
          :end
          (:line 0 :character 6))
         :rangeLength 0 :text "i")
        (:range
         (:start
          (:line 0 :character 7)
          :end
          (:line 0 :character 7))
         :rangeLength 0 :text "n")
        (:range
         (:start
          (:line 0 :character 8)
          :end
          (:line 0 :character 8))
         :rangeLength 0 :text "g")]))
[client-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "textDocument/didSave" :params
      (:text "mod thing;\n\nfn main() {\n   println!(\"Hello
world\");\n}\n" :textDocument
         (:uri "file:///home/misha/sweet/repos/tmp/main.rs")))
[server-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "unresolved-module" :codeDescription
          (:href
"https://rust-analyzer.github.io/manual.html#unresolved-module")
          :source "rust-analyzer" :message "unresolved module, can't
find module file: thing.rs, or thing/mod.rs")]
        :version 24))
[client-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
[client-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
[client-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
[client-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
      (:changes
       [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
[server-request] (id:11) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 11 :method "window/workDoneProgress/create" :params
      (:token "rust-analyzer/flycheck/0"))
[client-reply] (id:11) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 11 :result nil)
[server-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "begin" :title "cargo check" :cancellable t)))
[server-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
      (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
        [(:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "unresolved-module" :codeDescription
          (:href
"https://rust-analyzer.github.io/manual.html#unresolved-module")
          :source "rust-analyzer" :message "unresolved module, can't
find module file: thing.rs, or thing/mod.rs")
         (:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "E0583" :codeDescription
          (:href "https://doc.rust-lang.org/error-index.html#E0583")
          :source "rustc" :message "file not found for module
`thing`\nto create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"" :data
          (:rendered "error[E0583]: file not found for module
`thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
= help: to create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"\n\n"))]
        :version 24))
[server-notification] Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :method "$/progress" :params
      (:token "rust-analyzer/flycheck/0" :value
          (:kind "end")))
[client-request] (id:26) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 26 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 9)))
[client-request] (id:27) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 27 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 9)))
[client-request] (id:28) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 28 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 9)))
[client-request] (id:29) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 29 :method "textDocument/inlayHint" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 0)
        :end
        (:line 5 :character 0))))
[server-reply] (id:26) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 26 :result nil)
[server-reply] (id:27) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 27 :result
      (:contents
       (:kind "plaintext" :value "tmp\n\nmod thing")
       :range
       (:start
        (:line 0 :character 4)
        :end
        (:line 0 :character 9))))
[server-reply] (id:28) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 28 :result
      [(:range
        (:start
         (:line 0 :character 4)
         :end
         (:line 0 :character 9)))])
[server-reply] (id:29) Wed May 10 21:30:33 2023:
(:jsonrpc "2.0" :id 29 :result
      [])
[internal] (id:18) Wed May 10 21:30:39 2023:
(:timed-out :textDocument/signatureHelp :id 18 :params
        (:textDocument
         (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
         :position
         (:line 0 :character 8)))
[internal] (id:19) Wed May 10 21:30:39 2023:
(:timed-out :textDocument/hover :id 19 :params
        (:textDocument
         (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
         :position
         (:line 0 :character 8)))
[internal] (id:20) Wed May 10 21:30:39 2023:
(:timed-out :textDocument/documentHighlight :id 20 :params
        (:textDocument
         (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
         :position
         (:line 0 :character 8)))
[client-request] (id:30) Wed May 10 21:30:40 2023:
(:jsonrpc "2.0" :id 30 :method "textDocument/codeAction" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 4)
        :end
        (:line 0 :character 9))
       :context
       (:diagnostics
        [(:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "E0583" :codeDescription
          (:href "https://doc.rust-lang.org/error-index.html#E0583")
          :source "rustc" :message "file not found for module
`thing`\nto create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"" :data
          (:rendered "error[E0583]: file not found for module
`thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
= help: to create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"\n\n"))
         (:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "unresolved-module" :codeDescription
          (:href
"https://rust-analyzer.github.io/manual.html#unresolved-module")
          :source "rust-analyzer" :message "unresolved module, can't
find module file: thing.rs, or thing/mod.rs")])))
[server-reply] (id:30) Wed May 10 21:30:41 2023:
(:jsonrpc "2.0" :id 30 :result
      [(:title "Create module at `thing.rs`" :kind "quickfix" :edit
           (:documentChanges
            [(:kind "create" :uri
"file:///home/misha/sweet/repos/tmp/thing.rs")]))
       (:title "Create module at `thing/mod.rs`" :kind "quickfix" :edit
           (:documentChanges
            [(:kind "create" :uri
"file:///home/misha/sweet/repos/tmp/thing/mod.rs")]))])
[client-request] (id:31) Wed May 10 21:30:43 2023:
(:jsonrpc "2.0" :id 31 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 9)))
[client-request] (id:32) Wed May 10 21:30:43 2023:
(:jsonrpc "2.0" :id 32 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 9)))
[client-request] (id:33) Wed May 10 21:30:43 2023:
(:jsonrpc "2.0" :id 33 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 9)))
[server-reply] (id:31) Wed May 10 21:30:43 2023:
(:jsonrpc "2.0" :id 31 :result nil)
[server-reply] (id:32) Wed May 10 21:30:43 2023:
(:jsonrpc "2.0" :id 32 :result
      (:contents
       (:kind "plaintext" :value "tmp\n\nmod thing")
       :range
       (:start
        (:line 0 :character 4)
        :end
        (:line 0 :character 9))))
[server-reply] (id:33) Wed May 10 21:30:43 2023:
(:jsonrpc "2.0" :id 33 :result
      [(:range
        (:start
         (:line 0 :character 4)
         :end
         (:line 0 :character 9)))])
[client-request] (id:34) Wed May 10 21:31:45 2023:
(:jsonrpc "2.0" :id 34 :method "textDocument/codeAction" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :range
       (:start
        (:line 0 :character 4)
        :end
        (:line 0 :character 9))
       :context
       (:diagnostics
        [(:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "E0583" :codeDescription
          (:href "https://doc.rust-lang.org/error-index.html#E0583")
          :source "rustc" :message "file not found for module
`thing`\nto create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"" :data
          (:rendered "error[E0583]: file not found for module
`thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
= help: to create the module `thing`, create file \"thing.rs\" or
\"thing/mod.rs\"\n\n"))
         (:range
          (:start
           (:line 0 :character 0)
           :end
           (:line 0 :character 10))
          :severity 1 :code "unresolved-module" :codeDescription
          (:href
"https://rust-analyzer.github.io/manual.html#unresolved-module")
          :source "rust-analyzer" :message "unresolved module, can't
find module file: thing.rs, or thing/mod.rs")])))
[server-reply] (id:34) Wed May 10 21:31:45 2023:
(:jsonrpc "2.0" :id 34 :result
      [(:title "Create module at `thing.rs`" :kind "quickfix" :edit
           (:documentChanges
            [(:kind "create" :uri
"file:///home/misha/sweet/repos/tmp/thing.rs")]))
       (:title "Create module at `thing/mod.rs`" :kind "quickfix" :edit
           (:documentChanges
            [(:kind "create" :uri
"file:///home/misha/sweet/repos/tmp/thing/mod.rs")]))])
[client-request] (id:35) Wed May 10 21:38:05 2023:
(:jsonrpc "2.0" :id 35 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 10)))
[client-request] (id:36) Wed May 10 21:38:05 2023:
(:jsonrpc "2.0" :id 36 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 10)))
[client-request] (id:37) Wed May 10 21:38:05 2023:
(:jsonrpc "2.0" :id 37 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 0 :character 10)))
[server-reply] (id:35) Wed May 10 21:38:05 2023:
(:jsonrpc "2.0" :id 35 :result nil)
[server-reply] (id:36) Wed May 10 21:38:05 2023:
(:jsonrpc "2.0" :id 36 :result nil)
[server-reply] (id:37) Wed May 10 21:38:05 2023:
(:jsonrpc "2.0" :id 37 :result nil)
[client-request] (id:38) Wed May 10 21:38:08 2023:
(:jsonrpc "2.0" :id 38 :method "textDocument/signatureHelp" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 5 :character 0)))
[client-request] (id:39) Wed May 10 21:38:08 2023:
(:jsonrpc "2.0" :id 39 :method "textDocument/hover" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 5 :character 0)))
[client-request] (id:40) Wed May 10 21:38:08 2023:
(:jsonrpc "2.0" :id 40 :method "textDocument/documentHighlight" :params
      (:textDocument
       (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
       :position
       (:line 5 :character 0)))
[server-reply] (id:38) Wed May 10 21:38:08 2023:
(:jsonrpc "2.0" :id 38 :result nil)
[server-reply] (id:39) Wed May 10 21:38:08 2023:
(:jsonrpc "2.0" :id 39 :result nil)
[server-reply] (id:40) Wed May 10 21:38:08 2023:
(:jsonrpc "2.0" :id 40 :result nil)
```

There's nothing in `M-x eglot-stderr-buffer`


In GNU Emacs 29.0.90 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.33, cairo version 1.16.0) of 2023-05-10 built on misha-N552VX
Repository revision: 93005cd9dc2bab882e66ac7b81f593cd6c021e43
Repository branch: emacs-29
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Ubuntu 22.04.2 LTS

Configured using:
 'configure --with-json --with-cairo --with-xwidgets
 --prefix=/opt/emacs/ --with-x-toolkit=gtk3 --with-tree-sitter
 --with-native-compilation --with-modules'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11
XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB

Important settings:
  value of $LANG: en_CA.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Rust

Minor modes in effect:
  eglot-inlay-hints-mode: t
  eglot--managed-mode: t
  flymake-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr help-fns radix-tree cl-print cus-start cus-load
emacsbug message mailcap yank-media puny rfc822 mml mml-sec epa derived
epg rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils files-x find-dired grep
misearch multi-isearch vc-git diff-mode easy-mmode vc-dispatcher
conf-mode time-date eglot external-completion array filenotify jsonrpc
ert pp ewoc debug backtrace find-func xref flymake-proc flymake
thingatpt compile text-property-search comint ansi-osc ansi-color ring
pcase url-util url-parse auth-source eieio eieio-core password-cache
json map url-vars project byte-opt imenu rust-ts-mode c-ts-common
treesit dired-aux cl-loaddefs comp comp-cstr warnings icons subr-x rx
cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cl-lib dired
dired-loaddefs rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads xwidget-internal dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 156384 23572)
 (symbols 48 13274 0)
 (strings 32 39865 2264)
 (string-bytes 1 1247909)
 (vectors 16 27590)
 (vector-slots 8 541569 23397)
 (floats 8 51 48)
 (intervals 56 943 0)
 (buffers 984 23))





^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-05-11  4:49 bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails Misha Zharov
@ 2023-05-11  6:35 ` Felician Nemeth
  2023-05-11  7:09   ` Misha Zharov
  2023-09-07  9:59   ` Stefan Kangas
  0 siblings, 2 replies; 9+ messages in thread
From: Felician Nemeth @ 2023-05-11  6:35 UTC (permalink / raw)
  To: Misha Zharov; +Cc: 63433

In its initializationOptions, Eglot do not state that it supports any
resourceOperations.  So the server made a mistake when it sent a
"create" kind.

Sure, Eglot could handle better the server's mistake or support this
feature, but this is primarily a server bug in my opinion.

Background:
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEditClientCapabilities

Misha Zharov <mishazharov1@gmail.com> writes:

> When I declare a module that does not exist in Rust,
> `M-x eglot-code-actions` suggests that I create the file. However, when I
> select this option I get the following traceback and the change is not
> applied:
>
> ```
> Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
>   file-truename(nil)
>   find-buffer-visiting(nil)
>   cl-every(find-buffer-visiting (nil))
>   cl-notevery(find-buffer-visiting (nil))
>   eglot--apply-workspace-edit((:documentChanges [(:kind "create" :uri
> "file:///home/misha/sweet/repos/tmp/thing.rs")]))
>   eglot--read-execute-code-action(((:title "Create module at
> `thing.rs`" :kind "quickfix" :edit (:documentChanges [(:kind "create"
> :uri "file:///home/misha/sweet/repos/tmp/thing.rs")])) (:title "Create
> module at `thing/mod.rs`" :kind "quickfix" :edit (:documentChanges
> [(:kind "create" :uri
> "file:///home/misha/sweet/repos/tmp/thing/mod.rs")])))
> #<eglot-lsp-server eglot-lsp-server-156498df5f36> nil)
>   eglot-code-actions(5 10 nil t)
>   funcall-interactively(eglot-code-actions 5 10 nil t)
>   command-execute(eglot-code-actions record)
>   execute-extended-command(nil "eglot-code-actions" "eglot-code-actions")
>   funcall-interactively(execute-extended-command nil
> "eglot-code-actions" "eglot-code-actions")
>   command-execute(execute-extended-command)
> ```
>
> Reproduction (from `emacs -Q`):
> Create a `Cargo.toml`:
> ```
> [package]
> name = "tmp"
> version = "0.1.0"
> edition = "2021"
>
> # See more keys and their definitions at
> https://doc.rust-lang.org/cargo/reference/manifest.html
>
> [dependencies]
>
> [[bin]]
> name = "tmp"
> path = "main.rs"
> ```
>
> Create a `main.rs`:
> ```
> mod thing;
>
> fn main() {
>    println!("Hello world");
> }
> ```
>
> Enable `rust-ts-mode` (the treesit grammar has to be installed I
> assume). Flymake and ElDoc appear to be enabled as well. Enable eglot:
> `M-x eglot`.
>
> Eglot should prompt us to choose a language server. This reproduces with
> rust-analyzer which is shipped with Rust 1.69 (can be obtained at
> `https://www.rust-lang.org/tools/install`). RLS should not be used.
>
> Now there should be a code action to fix the issue with the missing
> module (by creating the file `thing.rs`). However, we see that the code
> action is not applied successfully.
>
> `M-x eglot-events-buffer`:
> ```
> [internal] Wed May 10 21:26:58 2023:
> (:message "Running language server: /home/misha/.cargo/bin/rust-analyzer")
> [client-request] (id:1) Wed May 10 21:26:58 2023:
> (:jsonrpc "2.0" :id 1 :method "initialize" :params
>       (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
> :rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
> #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
> data
>                                                                             ())
>               :capabilities
>               (:workspace
>                (:applyEdit t :executeCommand
>                    (:dynamicRegistration :json-false)
>                    :workspaceEdit
>                    (:documentChanges t)
>                    :didChangeWatchedFiles
>                    (:dynamicRegistration t)
>                    :symbol
>                    (:dynamicRegistration :json-false)
>                    :configuration t :workspaceFolders t)
>                :textDocument
>                (:synchronization
>             (:dynamicRegistration :json-false :willSave t
> :willSaveWaitUntil t :didSave t)
>             :completion
>             (:dynamicRegistration :json-false :completionItem
>                           (:snippetSupport :json-false
> :deprecatedSupport t :resolveSupport
>                                    (:properties
>                                 ["documentation" "details"
> "additionalTextEdits"])
>                                    :tagSupport
>                                    (:valueSet
>                                 [1]))
>                           :contextSupport t)
>             :hover
>             (:dynamicRegistration :json-false :contentFormat
>                           ["plaintext"])
>             :signatureHelp
>             (:dynamicRegistration :json-false :signatureInformation
>                           (:parameterInformation
>                            (:labelOffsetSupport t)
>                            :activeParameterSupport t))
>             :references
>             (:dynamicRegistration :json-false)
>             :definition
>             (:dynamicRegistration :json-false :linkSupport t)
>             :declaration
>             (:dynamicRegistration :json-false :linkSupport t)
>             :implementation
>             (:dynamicRegistration :json-false :linkSupport t)
>             :typeDefinition
>             (:dynamicRegistration :json-false :linkSupport t)
>             :documentSymbol
>             (:dynamicRegistration :json-false
> :hierarchicalDocumentSymbolSupport t :symbolKind
>                           (:valueSet
>                            [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
> 18 19 20 21 22 23 24 25 26]))
>             :documentHighlight
>             (:dynamicRegistration :json-false)
>             :codeAction
>             (:dynamicRegistration :json-false :codeActionLiteralSupport
>                           (:codeActionKind
>                            (:valueSet
>                         ["quickfix" "refactor" "refactor.extract"
> "refactor.inline" "refactor.rewrite" "source"
> "source.organizeImports"]))
>                           :isPreferredSupport t)
>             :formatting
>             (:dynamicRegistration :json-false)
>             :rangeFormatting
>             (:dynamicRegistration :json-false)
>             :rename
>             (:dynamicRegistration :json-false)
>             :inlayHint
>             (:dynamicRegistration :json-false)
>             :publishDiagnostics
>             (:relatedInformation :json-false :codeDescriptionSupport
> :json-false :tagSupport
>                          (:valueSet
>                           [1 2])))
>                :window
>                (:workDoneProgress t)
>                :general
>                (:positionEncodings
>             ["utf-32" "utf-8" "utf-16"])
>                :experimental #s(hash-table size 1 test eql rehash-size
> 1.5 rehash-threshold 0.8125 data
>                            ()))
>               :workspaceFolders
>               [(:uri "file:///home/misha/sweet/repos/tmp" :name
> "~/sweet/repos/tmp/")]))
> [server-reply] (id:1) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 1 :result
>       (:capabilities
>        (:positionEncoding "utf-32" :textDocumentSync
>                   (:openClose t :change 2 :save nil)
>                   :selectionRangeProvider t :hoverProvider t :completionProvider
>                   (:resolveProvider t :triggerCharacters
>                         [":" "." "'" "("]
>                         :completionItem
>                         (:labelDetailsSupport :json-false))
>                   :signatureHelpProvider
>                   (:triggerCharacters
>                    ["(" "," "<"])
>                   :definitionProvider t :typeDefinitionProvider t
> :implementationProvider t :referencesProvider t
> :documentHighlightProvider t :documentSymbolProvider t
> :workspaceSymbolProvider t :codeActionProvider
>                   (:codeActionKinds
>                    ["" "quickfix" "refactor" "refactor.extract"
> "refactor.inline" "refactor.rewrite"]
>                    :resolveProvider t)
>                   :codeLensProvider
>                   (:resolveProvider t)
>                   :documentFormattingProvider t
> :documentRangeFormattingProvider :json-false
> :documentOnTypeFormattingProvider
>                   (:firstTriggerCharacter "=" :moreTriggerCharacter
>                               ["." ">" "{"])
>                   :renameProvider
>                   (:prepareProvider t)
>                   :foldingRangeProvider t :declarationProvider t :workspace
>                   (:workspaceFolders
>                    (:supported t :changeNotifications t)
>                    :fileOperations
>                    (:willRename
>                 (:filters
>                  [(:scheme "file" :pattern
>                        (:glob "**/*.rs" :matches "file"))
>                   (:scheme "file" :pattern
>                        (:glob "**" :matches "folder"))])))
>                   :callHierarchyProvider t :semanticTokensProvider
>                   (:legend
>                    (:tokenTypes
>                 ["comment" "decorator" "enumMember" "enum" "function"
> "interface" "keyword" "macro" "method" "namespace" "number" "operator"
> "parameter" "property" "string" "struct" "typeParameter" "variable"
> "angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
> "boolean" "brace" "bracket" "builtinAttribute" "builtinType"
> "character" "colon" "comma" "comparison" "constParameter" "derive"
> "deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
> "label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
> "selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
> "union" "unresolvedReference"]
>                 :tokenModifiers
>                 ["documentation" "declaration" "static"
> "defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
> "controlFlow" "crateRoot" "injected" "intraDocLink" "library"
> "mutable" "public" "reference" "trait" "unsafe"])
>                    :range t :full
>                    (:delta t))
>                   :inlayHintProvider
>                   (:resolveProvider t)
>                   :experimental
>                   (:externalDocs t :hoverRange t :joinLines t
> :matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
> t :runnables
>                          (:kinds
>                           ["cargo"])
>                          :ssr t :workspaceSymbolScopeKindFiltering t))
>        :serverInfo
>        (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
> [client-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
> test eql rehash-size 1.5 rehash-threshold 0.8125 data
>                                 ()))
> [client-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "textDocument/didOpen" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 0
> :languageId "rust-ts" :text "mod thing;\n\nfn main() {\n
> println!(\"Hello world\");\n}")))
> [client-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
>       (:settings #s(hash-table size 1 test eql rehash-size 1.5
> rehash-threshold 0.8125 data
>                    ())))
> [client-request] (id:2) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 2 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 4 :character 1))))
> [stderr] [ERROR rust_analyzer::config] failed to find any projects in
> [AbsPathBuf("/home/misha/sweet/repos/tmp")]
> [stderr] [ERROR rust_analyzer::lsp_utils] rust-analyzer failed to
> discover workspace
> [server-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "window/showMessage" :params
>       (:type 1 :message "rust-analyzer failed to discover workspace"))
> [stderr] [ERROR rust_analyzer::lsp_utils] rust-analyzer failed to
> discover workspace
> [server-request] (id:0) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 0 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Fetching"))
> [client-reply] (id:0) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 0 :result nil)
> [server-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
> [server-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "window/showMessage" :params
>       (:type 1 :message "rust-analyzer failed to discover workspace"))
> [server-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "end")))
> [server-request] (id:1) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 1 :method "workspace/configuration" :params
>       (:items
>        [(:section "rust-analyzer")]))
> [client-reply] (id:1) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 1 :result
>       [nil])
> [server-request] (id:2) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 2 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Indexing"))
> [client-reply] (id:2) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 2 :result nil)
> [server-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "begin" :title "Indexing" :cancellable :json-false
> :percentage 0)))
> [server-notification] Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "end")))
> [server-reply] (id:2) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 2 :result
>       [])
> [client-request] (id:3) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 3 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 3 :character 24)))
> [client-request] (id:4) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 4 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 3 :character 24)))
> [client-request] (id:5) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 5 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 3 :character 24)))
> [server-reply] (id:3) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 3 :result nil)
> [server-reply] (id:4) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 4 :result nil)
> [server-reply] (id:5) Wed May 10 21:27:00 2023:
> (:jsonrpc "2.0" :id 5 :result nil)
> [client-request] (id:6) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 6 :method "shutdown" :params nil)
> [server-reply] (id:6) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 6 :result nil)
> [client-notification] Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :method "exit" :params nil)
> [internal] Wed May 10 21:29:29 2023:
> (:message "Connection state changed" :change "killed\n")
>
> ----------b---y---e---b---y---e----------
> [stderr]
> [stderr]
> [stderr] nil
> [stderr] nil
> [stderr] Process EGLOT (tmp/(rust-ts-mode rust-mode)) stderr finished
> [client-request] (id:1) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 1 :method "initialize" :params
>       (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
> :rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
> #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
> data
>                                                                             ())
>               :capabilities
>               (:workspace
>                (:applyEdit t :executeCommand
>                    (:dynamicRegistration :json-false)
>                    :workspaceEdit
>                    (:documentChanges t)
>                    :didChangeWatchedFiles
>                    (:dynamicRegistration t)
>                    :symbol
>                    (:dynamicRegistration :json-false)
>                    :configuration t :workspaceFolders t)
>                :textDocument
>                (:synchronization
>             (:dynamicRegistration :json-false :willSave t
> :willSaveWaitUntil t :didSave t)
>             :completion
>             (:dynamicRegistration :json-false :completionItem
>                           (:snippetSupport :json-false
> :deprecatedSupport t :resolveSupport
>                                    (:properties
>                                 ["documentation" "details"
> "additionalTextEdits"])
>                                    :tagSupport
>                                    (:valueSet
>                                 [1]))
>                           :contextSupport t)
>             :hover
>             (:dynamicRegistration :json-false :contentFormat
>                           ["plaintext"])
>             :signatureHelp
>             (:dynamicRegistration :json-false :signatureInformation
>                           (:parameterInformation
>                            (:labelOffsetSupport t)
>                            :activeParameterSupport t))
>             :references
>             (:dynamicRegistration :json-false)
>             :definition
>             (:dynamicRegistration :json-false :linkSupport t)
>             :declaration
>             (:dynamicRegistration :json-false :linkSupport t)
>             :implementation
>             (:dynamicRegistration :json-false :linkSupport t)
>             :typeDefinition
>             (:dynamicRegistration :json-false :linkSupport t)
>             :documentSymbol
>             (:dynamicRegistration :json-false
> :hierarchicalDocumentSymbolSupport t :symbolKind
>                           (:valueSet
>                            [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
> 18 19 20 21 22 23 24 25 26]))
>             :documentHighlight
>             (:dynamicRegistration :json-false)
>             :codeAction
>             (:dynamicRegistration :json-false :codeActionLiteralSupport
>                           (:codeActionKind
>                            (:valueSet
>                         ["quickfix" "refactor" "refactor.extract"
> "refactor.inline" "refactor.rewrite" "source"
> "source.organizeImports"]))
>                           :isPreferredSupport t)
>             :formatting
>             (:dynamicRegistration :json-false)
>             :rangeFormatting
>             (:dynamicRegistration :json-false)
>             :rename
>             (:dynamicRegistration :json-false)
>             :inlayHint
>             (:dynamicRegistration :json-false)
>             :publishDiagnostics
>             (:relatedInformation :json-false :codeDescriptionSupport
> :json-false :tagSupport
>                          (:valueSet
>                           [1 2])))
>                :window
>                (:workDoneProgress t)
>                :general
>                (:positionEncodings
>             ["utf-32" "utf-8" "utf-16"])
>                :experimental #s(hash-table size 1 test eql rehash-size
> 1.5 rehash-threshold 0.8125 data
>                            ()))
>               :workspaceFolders
>               [(:uri "file:///home/misha/sweet/repos/tmp" :name
> "~/sweet/repos/tmp/")]))
> [server-reply] (id:1) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 1 :result
>       (:capabilities
>        (:positionEncoding "utf-32" :textDocumentSync
>                   (:openClose t :change 2 :save nil)
>                   :selectionRangeProvider t :hoverProvider t :completionProvider
>                   (:resolveProvider t :triggerCharacters
>                         [":" "." "'" "("]
>                         :completionItem
>                         (:labelDetailsSupport :json-false))
>                   :signatureHelpProvider
>                   (:triggerCharacters
>                    ["(" "," "<"])
>                   :definitionProvider t :typeDefinitionProvider t
> :implementationProvider t :referencesProvider t
> :documentHighlightProvider t :documentSymbolProvider t
> :workspaceSymbolProvider t :codeActionProvider
>                   (:codeActionKinds
>                    ["" "quickfix" "refactor" "refactor.extract"
> "refactor.inline" "refactor.rewrite"]
>                    :resolveProvider t)
>                   :codeLensProvider
>                   (:resolveProvider t)
>                   :documentFormattingProvider t
> :documentRangeFormattingProvider :json-false
> :documentOnTypeFormattingProvider
>                   (:firstTriggerCharacter "=" :moreTriggerCharacter
>                               ["." ">" "{"])
>                   :renameProvider
>                   (:prepareProvider t)
>                   :foldingRangeProvider t :declarationProvider t :workspace
>                   (:workspaceFolders
>                    (:supported t :changeNotifications t)
>                    :fileOperations
>                    (:willRename
>                 (:filters
>                  [(:scheme "file" :pattern
>                        (:glob "**/*.rs" :matches "file"))
>                   (:scheme "file" :pattern
>                        (:glob "**" :matches "folder"))])))
>                   :callHierarchyProvider t :semanticTokensProvider
>                   (:legend
>                    (:tokenTypes
>                 ["comment" "decorator" "enumMember" "enum" "function"
> "interface" "keyword" "macro" "method" "namespace" "number" "operator"
> "parameter" "property" "string" "struct" "typeParameter" "variable"
> "angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
> "boolean" "brace" "bracket" "builtinAttribute" "builtinType"
> "character" "colon" "comma" "comparison" "constParameter" "derive"
> "deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
> "label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
> "selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
> "union" "unresolvedReference"]
>                 :tokenModifiers
>                 ["documentation" "declaration" "static"
> "defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
> "controlFlow" "crateRoot" "injected" "intraDocLink" "library"
> "mutable" "public" "reference" "trait" "unsafe"])
>                    :range t :full
>                    (:delta t))
>                   :inlayHintProvider
>                   (:resolveProvider t)
>                   :experimental
>                   (:externalDocs t :hoverRange t :joinLines t
> :matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
> t :runnables
>                          (:kinds
>                           ["cargo"])
>                          :ssr t :workspaceSymbolScopeKindFiltering t))
>        :serverInfo
>        (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
> [client-notification] Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
> test eql rehash-size 1.5 rehash-threshold 0.8125 data
>                                 ()))
> [client-notification] Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
>       (:settings #s(hash-table size 1 test eql rehash-size 1.5
> rehash-threshold 0.8125 data
>                    ())))
> [server-request] (id:0) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 0 :method "workspace/configuration" :params
>       (:items
>        [(:section "rust-analyzer")]))
> [client-reply] (id:0) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 0 :result
>       [nil])
> [server-request] (id:1) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 1 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Fetching"))
> [client-reply] (id:1) Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :id 1 :result nil)
> [server-notification] Wed May 10 21:29:29 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
> [server-notification] Wed May 10 21:29:32 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "report" :cancellable :json-false :message "metadata")))
> [server-request] (id:2) Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :id 2 :method "client/registerCapability" :params
>       (:registrations
>        [(:id "workspace/didChangeWatchedFiles" :method
> "workspace/didChangeWatchedFiles" :registerOptions
>          (:watchers
>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
> [client-reply] (id:2) Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :id 2 :result nil)
> [server-notification] Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "end")))
> [server-request] (id:3) Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :id 3 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Roots Scanned"))
> [client-reply] (id:3) Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :id 3 :result nil)
> [server-notification] Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "begin" :title "Roots Scanned" :cancellable
> :json-false :message "0/2" :percentage 0)))
> [server-notification] Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "report" :cancellable :json-false :message "1/2"
> :percentage 50)))
> [server-request] (id:4) Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :id 4 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Fetching"))
> [client-reply] (id:4) Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :id 4 :result nil)
> [server-notification] Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
> [server-notification] Wed May 10 21:29:35 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "report" :cancellable :json-false :message "metadata")))
> [server-notification] Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "end")))
> [server-request] (id:5) Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :id 5 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Loading"))
> [client-reply] (id:5) Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :id 5 :result nil)
> [server-notification] Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "begin" :title "Loading" :cancellable :json-false)))
> [server-notification] Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "report" :cancellable :json-false :message "building
> proc-macros: tmp")))
> [server-notification] Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "report" :cancellable :json-false :message "building
> proc-macros: tmp")))
> [server-request] (id:6) Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :id 6 :method "client/registerCapability" :params
>       (:registrations
>        [(:id "workspace/didChangeWatchedFiles" :method
> "workspace/didChangeWatchedFiles" :registerOptions
>          (:watchers
>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
> [client-reply] (id:6) Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :id 6 :result nil)
> [server-notification] Wed May 10 21:29:36 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "end")))
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "end" :message "2/2")))
> [server-request] (id:7) Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :id 7 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Roots Scanned"))
> [client-reply] (id:7) Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :id 7 :result nil)
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "begin" :title "Roots Scanned" :cancellable
> :json-false :message "0/2" :percentage 0)))
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "report" :cancellable :json-false :message "1/2"
> :percentage 50)))
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "end" :message "2/2")))
> [server-request] (id:8) Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :id 8 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Fetching"))
> [client-reply] (id:8) Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :id 8 :result nil)
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "report" :cancellable :json-false :message "metadata")))
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "end")))
> [server-request] (id:9) Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :id 9 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Indexing"))
> [client-reply] (id:9) Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :id 9 :result nil)
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "begin" :title "Indexing" :cancellable :json-false
> :percentage 0)))
> [server-notification] Wed May 10 21:29:48 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "0/5 (test
> + 1 more)" :percentage 0)))
> [server-request] (id:10) Wed May 10 21:29:49 2023:
> (:jsonrpc "2.0" :id 10 :method "window/workDoneProgress/create" :params
>       (:token "rust-analyzer/flycheck/0"))
> [client-reply] (id:10) Wed May 10 21:29:49 2023:
> (:jsonrpc "2.0" :id 10 :result nil)
> [server-notification] Wed May 10 21:29:49 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "begin" :title "cargo check" :cancellable t)))
> [server-notification] Wed May 10 21:29:49 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "1/5
> (core)" :percentage 20)))
> [server-notification] Wed May 10 21:29:49 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "E0583" :codeDescription
>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>           :source "rustc" :message "file not found for module
> `thing`\nto create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"" :data
>           (:rendered "error[E0583]: file not found for module
> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
> = help: to create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"\n\n"))]))
> [server-notification] Wed May 10 21:29:52 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :percentage 40)))
> [server-notification] Wed May 10 21:29:52 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "2/5
> (alloc)" :percentage 40)))
> [server-notification] Wed May 10 21:29:52 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :percentage 60)))
> [server-notification] Wed May 10 21:29:52 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "3/5
> (std)" :percentage 60)))
> [server-notification] Wed May 10 21:29:53 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :percentage 80)))
> [server-notification] Wed May 10 21:29:53 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "4/5
> (proc_macro)" :percentage 80)))
> [server-notification] Wed May 10 21:29:53 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :percentage 100)))
> [server-notification] Wed May 10 21:29:53 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "end")))
> [server-notification] Wed May 10 21:29:54 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "end")))
> [client-notification] Wed May 10 21:30:01 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
> :type 1)]))
> [client-notification] Wed May 10 21:30:08 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 1)]))
> [client-notification] Wed May 10 21:30:08 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
> [client-notification] Wed May 10 21:30:08 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
> [stderr]
> [stderr]
> [stderr] nil
> [stderr] nil
> [stderr] Process EGLOT (tmp/(rust-ts-mode rust-mode)) stderr finished
> [internal] Wed May 10 21:30:16 2023:
> (:message "Running language server: /home/misha/.cargo/bin/rust-analyzer")
> [client-request] (id:1) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 1 :method "initialize" :params
>       (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
> :rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
> #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
> data
>                                                                             ())
>               :capabilities
>               (:workspace
>                (:applyEdit t :executeCommand
>                    (:dynamicRegistration :json-false)
>                    :workspaceEdit
>                    (:documentChanges t)
>                    :didChangeWatchedFiles
>                    (:dynamicRegistration t)
>                    :symbol
>                    (:dynamicRegistration :json-false)
>                    :configuration t :workspaceFolders t)
>                :textDocument
>                (:synchronization
>             (:dynamicRegistration :json-false :willSave t
> :willSaveWaitUntil t :didSave t)
>             :completion
>             (:dynamicRegistration :json-false :completionItem
>                           (:snippetSupport :json-false
> :deprecatedSupport t :resolveSupport
>                                    (:properties
>                                 ["documentation" "details"
> "additionalTextEdits"])
>                                    :tagSupport
>                                    (:valueSet
>                                 [1]))
>                           :contextSupport t)
>             :hover
>             (:dynamicRegistration :json-false :contentFormat
>                           ["plaintext"])
>             :signatureHelp
>             (:dynamicRegistration :json-false :signatureInformation
>                           (:parameterInformation
>                            (:labelOffsetSupport t)
>                            :activeParameterSupport t))
>             :references
>             (:dynamicRegistration :json-false)
>             :definition
>             (:dynamicRegistration :json-false :linkSupport t)
>             :declaration
>             (:dynamicRegistration :json-false :linkSupport t)
>             :implementation
>             (:dynamicRegistration :json-false :linkSupport t)
>             :typeDefinition
>             (:dynamicRegistration :json-false :linkSupport t)
>             :documentSymbol
>             (:dynamicRegistration :json-false
> :hierarchicalDocumentSymbolSupport t :symbolKind
>                           (:valueSet
>                            [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
> 18 19 20 21 22 23 24 25 26]))
>             :documentHighlight
>             (:dynamicRegistration :json-false)
>             :codeAction
>             (:dynamicRegistration :json-false :codeActionLiteralSupport
>                           (:codeActionKind
>                            (:valueSet
>                         ["quickfix" "refactor" "refactor.extract"
> "refactor.inline" "refactor.rewrite" "source"
> "source.organizeImports"]))
>                           :isPreferredSupport t)
>             :formatting
>             (:dynamicRegistration :json-false)
>             :rangeFormatting
>             (:dynamicRegistration :json-false)
>             :rename
>             (:dynamicRegistration :json-false)
>             :inlayHint
>             (:dynamicRegistration :json-false)
>             :publishDiagnostics
>             (:relatedInformation :json-false :codeDescriptionSupport
> :json-false :tagSupport
>                          (:valueSet
>                           [1 2])))
>                :window
>                (:workDoneProgress t)
>                :general
>                (:positionEncodings
>             ["utf-32" "utf-8" "utf-16"])
>                :experimental #s(hash-table size 1 test eql rehash-size
> 1.5 rehash-threshold 0.8125 data
>                            ()))
>               :workspaceFolders
>               [(:uri "file:///home/misha/sweet/repos/tmp" :name
> "~/sweet/repos/tmp/")]))
> [server-reply] (id:1) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 1 :result
>       (:capabilities
>        (:positionEncoding "utf-32" :textDocumentSync
>                   (:openClose t :change 2 :save nil)
>                   :selectionRangeProvider t :hoverProvider t :completionProvider
>                   (:resolveProvider t :triggerCharacters
>                         [":" "." "'" "("]
>                         :completionItem
>                         (:labelDetailsSupport :json-false))
>                   :signatureHelpProvider
>                   (:triggerCharacters
>                    ["(" "," "<"])
>                   :definitionProvider t :typeDefinitionProvider t
> :implementationProvider t :referencesProvider t
> :documentHighlightProvider t :documentSymbolProvider t
> :workspaceSymbolProvider t :codeActionProvider
>                   (:codeActionKinds
>                    ["" "quickfix" "refactor" "refactor.extract"
> "refactor.inline" "refactor.rewrite"]
>                    :resolveProvider t)
>                   :codeLensProvider
>                   (:resolveProvider t)
>                   :documentFormattingProvider t
> :documentRangeFormattingProvider :json-false
> :documentOnTypeFormattingProvider
>                   (:firstTriggerCharacter "=" :moreTriggerCharacter
>                               ["." ">" "{"])
>                   :renameProvider
>                   (:prepareProvider t)
>                   :foldingRangeProvider t :declarationProvider t :workspace
>                   (:workspaceFolders
>                    (:supported t :changeNotifications t)
>                    :fileOperations
>                    (:willRename
>                 (:filters
>                  [(:scheme "file" :pattern
>                        (:glob "**/*.rs" :matches "file"))
>                   (:scheme "file" :pattern
>                        (:glob "**" :matches "folder"))])))
>                   :callHierarchyProvider t :semanticTokensProvider
>                   (:legend
>                    (:tokenTypes
>                 ["comment" "decorator" "enumMember" "enum" "function"
> "interface" "keyword" "macro" "method" "namespace" "number" "operator"
> "parameter" "property" "string" "struct" "typeParameter" "variable"
> "angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
> "boolean" "brace" "bracket" "builtinAttribute" "builtinType"
> "character" "colon" "comma" "comparison" "constParameter" "derive"
> "deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
> "label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
> "selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
> "union" "unresolvedReference"]
>                 :tokenModifiers
>                 ["documentation" "declaration" "static"
> "defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
> "controlFlow" "crateRoot" "injected" "intraDocLink" "library"
> "mutable" "public" "reference" "trait" "unsafe"])
>                    :range t :full
>                    (:delta t))
>                   :inlayHintProvider
>                   (:resolveProvider t)
>                   :experimental
>                   (:externalDocs t :hoverRange t :joinLines t
> :matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
> t :runnables
>                          (:kinds
>                           ["cargo"])
>                          :ssr t :workspaceSymbolScopeKindFiltering t))
>        :serverInfo
>        (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
> [client-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
> test eql rehash-size 1.5 rehash-threshold 0.8125 data
>                                 ()))
> [client-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "textDocument/didOpen" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 0
> :languageId "rust-ts" :text "fn main() {\n   println!(\"Hello
> world\");\n}\n")))
> [client-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
>       (:settings #s(hash-table size 1 test eql rehash-size 1.5
> rehash-threshold 0.8125 data
>                    ())))
> [client-request] (id:2) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 2 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 3 :character 0))))
> [server-request] (id:0) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 0 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Fetching"))
> [client-reply] (id:0) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 0 :result nil)
> [server-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
> [server-request] (id:1) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 1 :method "workspace/configuration" :params
>       (:items
>        [(:section "rust-analyzer")]))
> [client-reply] (id:1) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 1 :result
>       [nil])
> [server-reply] (id:2) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 2 :result
>       [])
> [server-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "report" :cancellable :json-false :message "metadata")))
> [server-request] (id:2) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 2 :method "client/registerCapability" :params
>       (:registrations
>        [(:id "workspace/didChangeWatchedFiles" :method
> "workspace/didChangeWatchedFiles" :registerOptions
>          (:watchers
>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
> [client-reply] (id:2) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 2 :result nil)
> [server-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "end")))
> [server-request] (id:3) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 3 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Roots Scanned"))
> [client-reply] (id:3) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 3 :result nil)
> [server-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "begin" :title "Roots Scanned" :cancellable
> :json-false :message "0/2" :percentage 0)))
> [server-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "report" :cancellable :json-false :message "1/2"
> :percentage 50)))
> [server-request] (id:4) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 4 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Fetching"))
> [client-reply] (id:4) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 4 :result nil)
> [server-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
> [client-request] (id:3) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 3 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 0)))
> [client-request] (id:4) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 4 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 0)))
> [client-request] (id:5) Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :id 5 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 0)))
> [server-notification] Wed May 10 21:30:16 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "end" :message "2/2")))
> [server-reply] (id:3) Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :id 3 :result nil)
> [server-reply] (id:4) Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :id 4 :result nil)
> [server-notification] Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "report" :cancellable :json-false :message "metadata")))
> [server-notification] Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "end")))
> [server-request] (id:5) Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :id 5 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Fetching"))
> [client-reply] (id:5) Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :id 5 :result nil)
> [server-notification] Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
> [server-notification] Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "report" :cancellable :json-false :message "metadata")))
> [server-notification] Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Fetching" :value
>           (:kind "end")))
> [server-request] (id:6) Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :id 6 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Loading"))
> [client-reply] (id:6) Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :id 6 :result nil)
> [server-notification] Wed May 10 21:30:17 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "begin" :title "Loading" :cancellable :json-false)))
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "report" :cancellable :json-false :message "building
> proc-macros: tmp")))
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "report" :cancellable :json-false :message "building
> proc-macros: tmp")))
> [server-request] (id:7) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 7 :method "client/registerCapability" :params
>       (:registrations
>        [(:id "workspace/didChangeWatchedFiles" :method
> "workspace/didChangeWatchedFiles" :registerOptions
>          (:watchers
>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
> [client-reply] (id:7) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 7 :result nil)
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Loading" :value
>           (:kind "end")))
> [server-request] (id:8) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 8 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Roots Scanned"))
> [client-reply] (id:8) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 8 :result nil)
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "begin" :title "Roots Scanned" :cancellable
> :json-false :message "0/2" :percentage 0)))
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "report" :cancellable :json-false :message "1/2"
> :percentage 50)))
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Roots Scanned" :value
>           (:kind "end" :message "2/2")))
> [server-request] (id:9) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 9 :method "window/workDoneProgress/create" :params
>       (:token "rustAnalyzer/Indexing"))
> [client-reply] (id:9) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 9 :result nil)
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "begin" :title "Indexing" :cancellable :json-false
> :percentage 0)))
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "0/5 (core
> + 1 more)" :percentage 0)))
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "1/5
> (core)" :percentage 20)))
> [server-request] (id:10) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 10 :method "window/workDoneProgress/create" :params
>       (:token "rust-analyzer/flycheck/0"))
> [client-reply] (id:10) Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :id 10 :result nil)
> [server-notification] Wed May 10 21:30:18 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "begin" :title "cargo check" :cancellable t)))
> [server-notification] Wed May 10 21:30:19 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "report" :cancellable t :message "tmp")))
> [server-notification] Wed May 10 21:30:19 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "report" :cancellable t :message "tmp")))
> [server-notification] Wed May 10 21:30:19 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "end")))
> [server-notification] Wed May 10 21:30:20 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "2/5
> (alloc)" :percentage 40)))
> [server-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :percentage 60)))
> [server-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "3/5
> (std)" :percentage 60)))
> [server-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :percentage 80)))
> [server-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :message "4/5
> (proc_macro)" :percentage 80)))
> [client-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
> :type 1)]))
> [client-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
> :type 1)]))
> [server-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "report" :cancellable :json-false :percentage 100)))
> [server-notification] Wed May 10 21:30:21 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rustAnalyzer/Indexing" :value
>           (:kind "end")))
> [server-reply] (id:5) Wed May 10 21:30:23 2023:
> (:jsonrpc "2.0" :id 5 :result
>       [])
> [server-notification] Wed May 10 21:30:23 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         []
>         :version 0))
> [client-notification] Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 9)
>        :contentChanges
>        [(:range
>          (:start
>           (:line 0 :character 0)
>           :end
>           (:line 0 :character 0))
>          :rangeLength 0 :text "\n")
>         (:range
>          (:start
>           (:line 1 :character 0)
>           :end
>           (:line 1 :character 0))
>          :rangeLength 0 :text "\n")
>         (:range
>          (:start
>           (:line 0 :character 0)
>           :end
>           (:line 0 :character 0))
>          :rangeLength 0 :text "m")
>         (:range
>          (:start
>           (:line 0 :character 1)
>           :end
>           (:line 0 :character 1))
>          :rangeLength 0 :text "d")
>         (:range
>          (:start
>           (:line 0 :character 1)
>           :end
>           (:line 0 :character 2))
>          :rangeLength 1 :text "")
>         (:range
>          (:start
>           (:line 0 :character 1)
>           :end
>           (:line 0 :character 1))
>          :rangeLength 0 :text "d")
>         (:range
>          (:start
>           (:line 0 :character 2)
>           :end
>           (:line 0 :character 2))
>          :rangeLength 0 :text " ")
>         (:range
>          (:start
>           (:line 0 :character 2)
>           :end
>           (:line 0 :character 3))
>          :rangeLength 1 :text "")
>         (:range
>          (:start
>           (:line 0 :character 1)
>           :end
>           (:line 0 :character 2))
>          :rangeLength 1 :text "")]))
> [client-request] (id:6) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 6 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 1)))
> [client-request] (id:7) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 7 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 1)))
> [client-request] (id:8) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 8 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 1)))
> [client-request] (id:9) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 9 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 5 :character 0))))
> [server-reply] (id:6) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 6 :result nil)
> [server-reply] (id:7) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 7 :result nil)
> [server-reply] (id:8) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 8 :result nil)
> [server-reply] (id:9) Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :id 9 :result
>       [])
> [server-notification] Wed May 10 21:30:24 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 1)
>            :end
>            (:line 0 :character 1))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected BANG")
>          (:range
>           (:start
>            (:line 0 :character 1)
>            :end
>            (:line 0 :character 1))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected
> `{`, `[`, `(`")
>          (:range
>           (:start
>            (:line 0 :character 1)
>            :end
>            (:line 0 :character 1))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected SEMICOLON")]
>         :version 9))
> [client-notification] Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 12)
>        :contentChanges
>        [(:range
>          (:start
>           (:line 0 :character 1)
>           :end
>           (:line 0 :character 1))
>          :rangeLength 0 :text "o")
>         (:range
>          (:start
>           (:line 0 :character 2)
>           :end
>           (:line 0 :character 2))
>          :rangeLength 0 :text "d")
>         (:range
>          (:start
>           (:line 0 :character 3)
>           :end
>           (:line 0 :character 3))
>          :rangeLength 0 :text " ")]))
> [client-request] (id:10) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 10 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 4)))
> [client-request] (id:11) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 11 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 4)))
> [client-request] (id:12) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 12 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 4)))
> [client-request] (id:13) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 13 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 5 :character 0))))
> [server-notification] Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 2 :character 0)
>            :end
>            (:line 2 :character 0))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected a name")
>          (:range
>           (:start
>            (:line 2 :character 2)
>            :end
>            (:line 2 :character 2))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")
>          (:range
>           (:start
>            (:line 2 :character 7)
>            :end
>            (:line 2 :character 7))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected BANG")
>          (:range
>           (:start
>            (:line 2 :character 9)
>            :end
>            (:line 2 :character 9))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected SEMICOLON")
>          (:range
>           (:start
>            (:line 2 :character 10)
>            :end
>            (:line 2 :character 10))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected an item")]
>         :version 12))
> [server-reply] (id:10) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 10 :result nil)
> [server-reply] (id:11) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 11 :result nil)
> [server-reply] (id:12) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 12 :result nil)
> [server-reply] (id:13) Wed May 10 21:30:25 2023:
> (:jsonrpc "2.0" :id 13 :result
>       [])
> [client-notification] Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 15)
>        :contentChanges
>        [(:range
>          (:start
>           (:line 0 :character 4)
>           :end
>           (:line 0 :character 4))
>          :rangeLength 0 :text "t")
>         (:range
>          (:start
>           (:line 0 :character 5)
>           :end
>           (:line 0 :character 5))
>          :rangeLength 0 :text "m")
>         (:range
>          (:start
>           (:line 0 :character 6)
>           :end
>           (:line 0 :character 6))
>          :rangeLength 0 :text "p")]))
> [client-request] (id:14) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 14 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 7)))
> [client-request] (id:15) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 15 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 7)))
> [client-request] (id:16) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 16 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 7)))
> [client-request] (id:17) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 17 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 5 :character 0))))
> [server-notification] Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 7)
>            :end
>            (:line 0 :character 7))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")]
>         :version 15))
> [server-reply] (id:14) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 14 :result nil)
> [server-reply] (id:17) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 17 :result
>       [])
> [server-reply] (id:15) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 15 :result
>       (:contents
>        (:kind "plaintext" :value "tmp\n\nmod tmp")
>        :range
>        (:start
>         (:line 0 :character 4)
>         :end
>         (:line 0 :character 7))))
> [server-reply] (id:16) Wed May 10 21:30:27 2023:
> (:jsonrpc "2.0" :id 16 :result
>       [(:range
>         (:start
>          (:line 0 :character 4)
>          :end
>          (:line 0 :character 7)))])
> [internal] (id:18) Wed May 10 21:30:29 2023:
> (:deferring :textDocument/signatureHelp :id 18 :params
>         (:textDocument
>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>          :position
>          (:line 0 :character 8)))
> [internal] (id:19) Wed May 10 21:30:29 2023:
> (:deferring :textDocument/hover :id 19 :params
>         (:textDocument
>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>          :position
>          (:line 0 :character 8)))
> [internal] (id:20) Wed May 10 21:30:29 2023:
> (:deferring :textDocument/documentHighlight :id 20 :params
>         (:textDocument
>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>          :position
>          (:line 0 :character 8)))
> [client-notification] Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 16)
>        :contentChanges
>        [(:range
>          (:start
>           (:line 0 :character 7)
>           :end
>           (:line 0 :character 7))
>          :rangeLength 0 :text ";")]))
> [internal] Wed May 10 21:30:29 2023:
> (:maybe-run-deferred
>  (20 19 18))
> [client-request] (id:20) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 20 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 8)))
> [client-request] (id:19) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 19 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 8)))
> [client-request] (id:18) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 18 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 8)))
> [client-request] (id:21) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 21 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 5 :character 0))))
> [server-reply] (id:20) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 20 :result nil)
> [server-reply] (id:19) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 19 :result nil)
> [server-reply] (id:18) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 18 :result nil)
> [server-notification] Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 8))
>           :severity 1 :code "unresolved-module" :codeDescription
>           (:href
> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>           :source "rust-analyzer" :message "unresolved module, can't
> find module file: tmp.rs, or tmp/mod.rs")]
>         :version 16))
> [server-reply] (id:21) Wed May 10 21:30:29 2023:
> (:jsonrpc "2.0" :id 21 :result
>       [])
> [client-notification] Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 19)
>        :contentChanges
>        [(:range
>          (:start
>           (:line 0 :character 6)
>           :end
>           (:line 0 :character 7))
>          :rangeLength 1 :text "")
>         (:range
>          (:start
>           (:line 0 :character 5)
>           :end
>           (:line 0 :character 6))
>          :rangeLength 1 :text "")
>         (:range
>          (:start
>           (:line 0 :character 4)
>           :end
>           (:line 0 :character 5))
>          :rangeLength 1 :text "")]))
> [client-request] (id:22) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 22 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 4)))
> [client-request] (id:23) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 23 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 4)))
> [client-request] (id:24) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 24 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 4)))
> [client-request] (id:25) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 25 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 5 :character 0))))
> [server-notification] Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 4)
>            :end
>            (:line 0 :character 4))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected a name")
>          (:range
>           (:start
>            (:line 0 :character 5)
>            :end
>            (:line 0 :character 5))
>           :severity 1 :code "syntax-error" :codeDescription
>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>           :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")]
>         :version 19))
> [server-reply] (id:22) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 22 :result nil)
> [server-reply] (id:23) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 23 :result nil)
> [server-reply] (id:24) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 24 :result nil)
> [server-reply] (id:25) Wed May 10 21:30:31 2023:
> (:jsonrpc "2.0" :id 25 :result
>       [])
> [client-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 24)
>        :contentChanges
>        [(:range
>          (:start
>           (:line 0 :character 4)
>           :end
>           (:line 0 :character 4))
>          :rangeLength 0 :text "t")
>         (:range
>          (:start
>           (:line 0 :character 5)
>           :end
>           (:line 0 :character 5))
>          :rangeLength 0 :text "h")
>         (:range
>          (:start
>           (:line 0 :character 6)
>           :end
>           (:line 0 :character 6))
>          :rangeLength 0 :text "i")
>         (:range
>          (:start
>           (:line 0 :character 7)
>           :end
>           (:line 0 :character 7))
>          :rangeLength 0 :text "n")
>         (:range
>          (:start
>           (:line 0 :character 8)
>           :end
>           (:line 0 :character 8))
>          :rangeLength 0 :text "g")]))
> [client-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "textDocument/didSave" :params
>       (:text "mod thing;\n\nfn main() {\n   println!(\"Hello
> world\");\n}\n" :textDocument
>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")))
> [server-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "unresolved-module" :codeDescription
>           (:href
> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>           :source "rust-analyzer" :message "unresolved module, can't
> find module file: thing.rs, or thing/mod.rs")]
>         :version 24))
> [client-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
> [client-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
> [client-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
> [client-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>       (:changes
>        [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
> [server-request] (id:11) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 11 :method "window/workDoneProgress/create" :params
>       (:token "rust-analyzer/flycheck/0"))
> [client-reply] (id:11) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 11 :result nil)
> [server-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "begin" :title "cargo check" :cancellable t)))
> [server-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "unresolved-module" :codeDescription
>           (:href
> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>           :source "rust-analyzer" :message "unresolved module, can't
> find module file: thing.rs, or thing/mod.rs")
>          (:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "E0583" :codeDescription
>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>           :source "rustc" :message "file not found for module
> `thing`\nto create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"" :data
>           (:rendered "error[E0583]: file not found for module
> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
> = help: to create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"\n\n"))]
>         :version 24))
> [server-notification] Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :method "$/progress" :params
>       (:token "rust-analyzer/flycheck/0" :value
>           (:kind "end")))
> [client-request] (id:26) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 26 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 9)))
> [client-request] (id:27) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 27 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 9)))
> [client-request] (id:28) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 28 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 9)))
> [client-request] (id:29) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 29 :method "textDocument/inlayHint" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 0)
>         :end
>         (:line 5 :character 0))))
> [server-reply] (id:26) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 26 :result nil)
> [server-reply] (id:27) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 27 :result
>       (:contents
>        (:kind "plaintext" :value "tmp\n\nmod thing")
>        :range
>        (:start
>         (:line 0 :character 4)
>         :end
>         (:line 0 :character 9))))
> [server-reply] (id:28) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 28 :result
>       [(:range
>         (:start
>          (:line 0 :character 4)
>          :end
>          (:line 0 :character 9)))])
> [server-reply] (id:29) Wed May 10 21:30:33 2023:
> (:jsonrpc "2.0" :id 29 :result
>       [])
> [internal] (id:18) Wed May 10 21:30:39 2023:
> (:timed-out :textDocument/signatureHelp :id 18 :params
>         (:textDocument
>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>          :position
>          (:line 0 :character 8)))
> [internal] (id:19) Wed May 10 21:30:39 2023:
> (:timed-out :textDocument/hover :id 19 :params
>         (:textDocument
>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>          :position
>          (:line 0 :character 8)))
> [internal] (id:20) Wed May 10 21:30:39 2023:
> (:timed-out :textDocument/documentHighlight :id 20 :params
>         (:textDocument
>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>          :position
>          (:line 0 :character 8)))
> [client-request] (id:30) Wed May 10 21:30:40 2023:
> (:jsonrpc "2.0" :id 30 :method "textDocument/codeAction" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 4)
>         :end
>         (:line 0 :character 9))
>        :context
>        (:diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "E0583" :codeDescription
>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>           :source "rustc" :message "file not found for module
> `thing`\nto create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"" :data
>           (:rendered "error[E0583]: file not found for module
> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
> = help: to create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"\n\n"))
>          (:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "unresolved-module" :codeDescription
>           (:href
> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>           :source "rust-analyzer" :message "unresolved module, can't
> find module file: thing.rs, or thing/mod.rs")])))
> [server-reply] (id:30) Wed May 10 21:30:41 2023:
> (:jsonrpc "2.0" :id 30 :result
>       [(:title "Create module at `thing.rs`" :kind "quickfix" :edit
>            (:documentChanges
>             [(:kind "create" :uri
> "file:///home/misha/sweet/repos/tmp/thing.rs")]))
>        (:title "Create module at `thing/mod.rs`" :kind "quickfix" :edit
>            (:documentChanges
>             [(:kind "create" :uri
> "file:///home/misha/sweet/repos/tmp/thing/mod.rs")]))])
> [client-request] (id:31) Wed May 10 21:30:43 2023:
> (:jsonrpc "2.0" :id 31 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 9)))
> [client-request] (id:32) Wed May 10 21:30:43 2023:
> (:jsonrpc "2.0" :id 32 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 9)))
> [client-request] (id:33) Wed May 10 21:30:43 2023:
> (:jsonrpc "2.0" :id 33 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 9)))
> [server-reply] (id:31) Wed May 10 21:30:43 2023:
> (:jsonrpc "2.0" :id 31 :result nil)
> [server-reply] (id:32) Wed May 10 21:30:43 2023:
> (:jsonrpc "2.0" :id 32 :result
>       (:contents
>        (:kind "plaintext" :value "tmp\n\nmod thing")
>        :range
>        (:start
>         (:line 0 :character 4)
>         :end
>         (:line 0 :character 9))))
> [server-reply] (id:33) Wed May 10 21:30:43 2023:
> (:jsonrpc "2.0" :id 33 :result
>       [(:range
>         (:start
>          (:line 0 :character 4)
>          :end
>          (:line 0 :character 9)))])
> [client-request] (id:34) Wed May 10 21:31:45 2023:
> (:jsonrpc "2.0" :id 34 :method "textDocument/codeAction" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :range
>        (:start
>         (:line 0 :character 4)
>         :end
>         (:line 0 :character 9))
>        :context
>        (:diagnostics
>         [(:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "E0583" :codeDescription
>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>           :source "rustc" :message "file not found for module
> `thing`\nto create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"" :data
>           (:rendered "error[E0583]: file not found for module
> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
> = help: to create the module `thing`, create file \"thing.rs\" or
> \"thing/mod.rs\"\n\n"))
>          (:range
>           (:start
>            (:line 0 :character 0)
>            :end
>            (:line 0 :character 10))
>           :severity 1 :code "unresolved-module" :codeDescription
>           (:href
> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>           :source "rust-analyzer" :message "unresolved module, can't
> find module file: thing.rs, or thing/mod.rs")])))
> [server-reply] (id:34) Wed May 10 21:31:45 2023:
> (:jsonrpc "2.0" :id 34 :result
>       [(:title "Create module at `thing.rs`" :kind "quickfix" :edit
>            (:documentChanges
>             [(:kind "create" :uri
> "file:///home/misha/sweet/repos/tmp/thing.rs")]))
>        (:title "Create module at `thing/mod.rs`" :kind "quickfix" :edit
>            (:documentChanges
>             [(:kind "create" :uri
> "file:///home/misha/sweet/repos/tmp/thing/mod.rs")]))])
> [client-request] (id:35) Wed May 10 21:38:05 2023:
> (:jsonrpc "2.0" :id 35 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 10)))
> [client-request] (id:36) Wed May 10 21:38:05 2023:
> (:jsonrpc "2.0" :id 36 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 10)))
> [client-request] (id:37) Wed May 10 21:38:05 2023:
> (:jsonrpc "2.0" :id 37 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 0 :character 10)))
> [server-reply] (id:35) Wed May 10 21:38:05 2023:
> (:jsonrpc "2.0" :id 35 :result nil)
> [server-reply] (id:36) Wed May 10 21:38:05 2023:
> (:jsonrpc "2.0" :id 36 :result nil)
> [server-reply] (id:37) Wed May 10 21:38:05 2023:
> (:jsonrpc "2.0" :id 37 :result nil)
> [client-request] (id:38) Wed May 10 21:38:08 2023:
> (:jsonrpc "2.0" :id 38 :method "textDocument/signatureHelp" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 5 :character 0)))
> [client-request] (id:39) Wed May 10 21:38:08 2023:
> (:jsonrpc "2.0" :id 39 :method "textDocument/hover" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 5 :character 0)))
> [client-request] (id:40) Wed May 10 21:38:08 2023:
> (:jsonrpc "2.0" :id 40 :method "textDocument/documentHighlight" :params
>       (:textDocument
>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>        :position
>        (:line 5 :character 0)))
> [server-reply] (id:38) Wed May 10 21:38:08 2023:
> (:jsonrpc "2.0" :id 38 :result nil)
> [server-reply] (id:39) Wed May 10 21:38:08 2023:
> (:jsonrpc "2.0" :id 39 :result nil)
> [server-reply] (id:40) Wed May 10 21:38:08 2023:
> (:jsonrpc "2.0" :id 40 :result nil)
> ```
>
> There's nothing in `M-x eglot-stderr-buffer`
>
>
> In GNU Emacs 29.0.90 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>  3.24.33, cairo version 1.16.0) of 2023-05-10 built on misha-N552VX
> Repository revision: 93005cd9dc2bab882e66ac7b81f593cd6c021e43
> Repository branch: emacs-29
> Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
> System Description: Ubuntu 22.04.2 LTS
>
> Configured using:
>  'configure --with-json --with-cairo --with-xwidgets
>  --prefix=/opt/emacs/ --with-x-toolkit=gtk3 --with-tree-sitter
>  --with-native-compilation --with-modules'
>
> Configured features:
> CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
> LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
> SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11
> XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>
> Important settings:
>   value of $LANG: en_CA.UTF-8
>   value of $XMODIFIERS: @im=ibus
>   locale-coding-system: utf-8-unix
>
> Major mode: Rust
>
> Minor modes in effect:
>   eglot-inlay-hints-mode: t
>   eglot--managed-mode: t
>   flymake-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   tool-bar-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>
> Load-path shadows:
> None found.
>
> Features:
> (shadow sort mail-extr help-fns radix-tree cl-print cus-start cus-load
> emacsbug message mailcap yank-media puny rfc822 mml mml-sec epa derived
> epg rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode
> mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
> rfc2045 ietf-drums mm-util mail-prsvr mail-utils files-x find-dired grep
> misearch multi-isearch vc-git diff-mode easy-mmode vc-dispatcher
> conf-mode time-date eglot external-completion array filenotify jsonrpc
> ert pp ewoc debug backtrace find-func xref flymake-proc flymake
> thingatpt compile text-property-search comint ansi-osc ansi-color ring
> pcase url-util url-parse auth-source eieio eieio-core password-cache
> json map url-vars project byte-opt imenu rust-ts-mode c-ts-common
> treesit dired-aux cl-loaddefs comp comp-cstr warnings icons subr-x rx
> cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cl-lib dired
> dired-loaddefs rmc iso-transl tooltip cconv eldoc paren electric
> uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
> term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
> regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
> prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
> timer select scroll-bar mouse jit-lock font-lock syntax font-core
> term/tty-colors frame minibuffer nadvice seq simple cl-generic
> indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
> tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
> romanian slovak czech european ethiopic indian cyrillic chinese
> composite emoji-zwj charscript charprop case-table epa-hook
> jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
> theme-loaddefs faces cus-face macroexp files window text-properties
> overlay sha1 md5 base64 format env code-pages mule custom widget keymap
> hashtable-print-readable backquote threads xwidget-internal dbusbind
> inotify dynamic-setting system-font-setting font-render-setting cairo
> move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
> native-compile emacs)
>
> Memory information:
> ((conses 16 156384 23572)
>  (symbols 48 13274 0)
>  (strings 32 39865 2264)
>  (string-bytes 1 1247909)
>  (vectors 16 27590)
>  (vector-slots 8 541569 23397)
>  (floats 8 51 48)
>  (intervals 56 943 0)
>  (buffers 984 23))





^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-05-11  6:35 ` Felician Nemeth
@ 2023-05-11  7:09   ` Misha Zharov
  2023-05-12 21:50     ` Richard Stallman
  2023-09-07  9:59   ` Stefan Kangas
  1 sibling, 1 reply; 9+ messages in thread
From: Misha Zharov @ 2023-05-11  7:09 UTC (permalink / raw)
  To: Felician Nemeth; +Cc: 63433

Thanks for taking a look. It looks like rust-analyzer has an issue
for it: https://github.com/rust-lang/rust-analyzer/issues/144

Although this is a bug in rust-analyzer, it would also be nice to
implement resourceOperations in Eglot so that users are able to
apply the suggested fixes. I would take a stab at it, but I am
still a lisp novice





^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-05-11  7:09   ` Misha Zharov
@ 2023-05-12 21:50     ` Richard Stallman
  2023-05-12 22:35       ` Gregory Heytings
  0 siblings, 1 reply; 9+ messages in thread
From: Richard Stallman @ 2023-05-12 21:50 UTC (permalink / raw)
  To: Misha Zharov; +Cc: felician.nemeth, 63433

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

Could someone please tell me the basic info about rust-analyzer?
What job does it do, who wrote it, and what license does it carry?

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)







^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-05-12 21:50     ` Richard Stallman
@ 2023-05-12 22:35       ` Gregory Heytings
  2023-05-15 22:13         ` Richard Stallman
  0 siblings, 1 reply; 9+ messages in thread
From: Gregory Heytings @ 2023-05-12 22:35 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Misha Zharov, felician.nemeth, 63433


>
> Could someone please tell me the basic info about rust-analyzer?
> What job does it do,
>

See https://rust-analyzer.github.io:

rust-analyzer is an implementation of Language Server Protocol for the 
Rust programming language. It provides features like completion and goto 
definition for many code editors, including VS Code, Emacs and Vim.

>
> who wrote it
>

Contributors to the Rust project.

>
> and what license does it carry?
>

Like most Rust-related code, it is dual-licensed: Apache 2.0 and MIT.






^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-05-12 22:35       ` Gregory Heytings
@ 2023-05-15 22:13         ` Richard Stallman
  0 siblings, 0 replies; 9+ messages in thread
From: Richard Stallman @ 2023-05-15 22:13 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: mishazharov1, felician.nemeth, 63433

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

Thanks for the info.  You've told me all I needed to know.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)







^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-05-11  6:35 ` Felician Nemeth
  2023-05-11  7:09   ` Misha Zharov
@ 2023-09-07  9:59   ` Stefan Kangas
  2023-09-07 10:39     ` João Távora
  1 sibling, 1 reply; 9+ messages in thread
From: Stefan Kangas @ 2023-09-07  9:59 UTC (permalink / raw)
  To: Felician Nemeth; +Cc: Misha Zharov, João Távora, 63433

Felician Nemeth <felician.nemeth@gmail.com> writes:

> In its initializationOptions, Eglot do not state that it supports any
> resourceOperations.  So the server made a mistake when it sent a
> "create" kind.
>
> Sure, Eglot could handle better the server's mistake or support this
> feature, but this is primarily a server bug in my opinion.
>
> Background:
> https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEditClientCapabilities

João, any comments here?

> Misha Zharov <mishazharov1@gmail.com> writes:
>
>> When I declare a module that does not exist in Rust,
>> `M-x eglot-code-actions` suggests that I create the file. However, when I
>> select this option I get the following traceback and the change is not
>> applied:
>>
>> ```
>> Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
>>   file-truename(nil)
>>   find-buffer-visiting(nil)
>>   cl-every(find-buffer-visiting (nil))
>>   cl-notevery(find-buffer-visiting (nil))
>>   eglot--apply-workspace-edit((:documentChanges [(:kind "create" :uri
>> "file:///home/misha/sweet/repos/tmp/thing.rs")]))
>>   eglot--read-execute-code-action(((:title "Create module at
>> `thing.rs`" :kind "quickfix" :edit (:documentChanges [(:kind "create"
>> :uri "file:///home/misha/sweet/repos/tmp/thing.rs")])) (:title "Create
>> module at `thing/mod.rs`" :kind "quickfix" :edit (:documentChanges
>> [(:kind "create" :uri
>> "file:///home/misha/sweet/repos/tmp/thing/mod.rs")])))
>> #<eglot-lsp-server eglot-lsp-server-156498df5f36> nil)
>>   eglot-code-actions(5 10 nil t)
>>   funcall-interactively(eglot-code-actions 5 10 nil t)
>>   command-execute(eglot-code-actions record)
>>   execute-extended-command(nil "eglot-code-actions" "eglot-code-actions")
>>   funcall-interactively(execute-extended-command nil
>> "eglot-code-actions" "eglot-code-actions")
>>   command-execute(execute-extended-command)
>> ```
>>
>> Reproduction (from `emacs -Q`):
>> Create a `Cargo.toml`:
>> ```
>> [package]
>> name = "tmp"
>> version = "0.1.0"
>> edition = "2021"
>>
>> # See more keys and their definitions at
>> https://doc.rust-lang.org/cargo/reference/manifest.html
>>
>> [dependencies]
>>
>> [[bin]]
>> name = "tmp"
>> path = "main.rs"
>> ```
>>
>> Create a `main.rs`:
>> ```
>> mod thing;
>>
>> fn main() {
>>    println!("Hello world");
>> }
>> ```
>>
>> Enable `rust-ts-mode` (the treesit grammar has to be installed I
>> assume). Flymake and ElDoc appear to be enabled as well. Enable eglot:
>> `M-x eglot`.
>>
>> Eglot should prompt us to choose a language server. This reproduces with
>> rust-analyzer which is shipped with Rust 1.69 (can be obtained at
>> `https://www.rust-lang.org/tools/install`). RLS should not be used.
>>
>> Now there should be a code action to fix the issue with the missing
>> module (by creating the file `thing.rs`). However, we see that the code
>> action is not applied successfully.
>>
>> `M-x eglot-events-buffer`:
>> ```
>> [internal] Wed May 10 21:26:58 2023:
>> (:message "Running language server: /home/misha/.cargo/bin/rust-analyzer")
>> [client-request] (id:1) Wed May 10 21:26:58 2023:
>> (:jsonrpc "2.0" :id 1 :method "initialize" :params
>>       (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
>> :rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
>> #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
>> data
>>                                                                             ())
>>               :capabilities
>>               (:workspace
>>                (:applyEdit t :executeCommand
>>                    (:dynamicRegistration :json-false)
>>                    :workspaceEdit
>>                    (:documentChanges t)
>>                    :didChangeWatchedFiles
>>                    (:dynamicRegistration t)
>>                    :symbol
>>                    (:dynamicRegistration :json-false)
>>                    :configuration t :workspaceFolders t)
>>                :textDocument
>>                (:synchronization
>>             (:dynamicRegistration :json-false :willSave t
>> :willSaveWaitUntil t :didSave t)
>>             :completion
>>             (:dynamicRegistration :json-false :completionItem
>>                           (:snippetSupport :json-false
>> :deprecatedSupport t :resolveSupport
>>                                    (:properties
>>                                 ["documentation" "details"
>> "additionalTextEdits"])
>>                                    :tagSupport
>>                                    (:valueSet
>>                                 [1]))
>>                           :contextSupport t)
>>             :hover
>>             (:dynamicRegistration :json-false :contentFormat
>>                           ["plaintext"])
>>             :signatureHelp
>>             (:dynamicRegistration :json-false :signatureInformation
>>                           (:parameterInformation
>>                            (:labelOffsetSupport t)
>>                            :activeParameterSupport t))
>>             :references
>>             (:dynamicRegistration :json-false)
>>             :definition
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :declaration
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :implementation
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :typeDefinition
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :documentSymbol
>>             (:dynamicRegistration :json-false
>> :hierarchicalDocumentSymbolSupport t :symbolKind
>>                           (:valueSet
>>                            [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
>> 18 19 20 21 22 23 24 25 26]))
>>             :documentHighlight
>>             (:dynamicRegistration :json-false)
>>             :codeAction
>>             (:dynamicRegistration :json-false :codeActionLiteralSupport
>>                           (:codeActionKind
>>                            (:valueSet
>>                         ["quickfix" "refactor" "refactor.extract"
>> "refactor.inline" "refactor.rewrite" "source"
>> "source.organizeImports"]))
>>                           :isPreferredSupport t)
>>             :formatting
>>             (:dynamicRegistration :json-false)
>>             :rangeFormatting
>>             (:dynamicRegistration :json-false)
>>             :rename
>>             (:dynamicRegistration :json-false)
>>             :inlayHint
>>             (:dynamicRegistration :json-false)
>>             :publishDiagnostics
>>             (:relatedInformation :json-false :codeDescriptionSupport
>> :json-false :tagSupport
>>                          (:valueSet
>>                           [1 2])))
>>                :window
>>                (:workDoneProgress t)
>>                :general
>>                (:positionEncodings
>>             ["utf-32" "utf-8" "utf-16"])
>>                :experimental #s(hash-table size 1 test eql rehash-size
>> 1.5 rehash-threshold 0.8125 data
>>                            ()))
>>               :workspaceFolders
>>               [(:uri "file:///home/misha/sweet/repos/tmp" :name
>> "~/sweet/repos/tmp/")]))
>> [server-reply] (id:1) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 1 :result
>>       (:capabilities
>>        (:positionEncoding "utf-32" :textDocumentSync
>>                   (:openClose t :change 2 :save nil)
>>                   :selectionRangeProvider t :hoverProvider t :completionProvider
>>                   (:resolveProvider t :triggerCharacters
>>                         [":" "." "'" "("]
>>                         :completionItem
>>                         (:labelDetailsSupport :json-false))
>>                   :signatureHelpProvider
>>                   (:triggerCharacters
>>                    ["(" "," "<"])
>>                   :definitionProvider t :typeDefinitionProvider t
>> :implementationProvider t :referencesProvider t
>> :documentHighlightProvider t :documentSymbolProvider t
>> :workspaceSymbolProvider t :codeActionProvider
>>                   (:codeActionKinds
>>                    ["" "quickfix" "refactor" "refactor.extract"
>> "refactor.inline" "refactor.rewrite"]
>>                    :resolveProvider t)
>>                   :codeLensProvider
>>                   (:resolveProvider t)
>>                   :documentFormattingProvider t
>> :documentRangeFormattingProvider :json-false
>> :documentOnTypeFormattingProvider
>>                   (:firstTriggerCharacter "=" :moreTriggerCharacter
>>                               ["." ">" "{"])
>>                   :renameProvider
>>                   (:prepareProvider t)
>>                   :foldingRangeProvider t :declarationProvider t :workspace
>>                   (:workspaceFolders
>>                    (:supported t :changeNotifications t)
>>                    :fileOperations
>>                    (:willRename
>>                 (:filters
>>                  [(:scheme "file" :pattern
>>                        (:glob "**/*.rs" :matches "file"))
>>                   (:scheme "file" :pattern
>>                        (:glob "**" :matches "folder"))])))
>>                   :callHierarchyProvider t :semanticTokensProvider
>>                   (:legend
>>                    (:tokenTypes
>>                 ["comment" "decorator" "enumMember" "enum" "function"
>> "interface" "keyword" "macro" "method" "namespace" "number" "operator"
>> "parameter" "property" "string" "struct" "typeParameter" "variable"
>> "angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
>> "boolean" "brace" "bracket" "builtinAttribute" "builtinType"
>> "character" "colon" "comma" "comparison" "constParameter" "derive"
>> "deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
>> "label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
>> "selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
>> "union" "unresolvedReference"]
>>                 :tokenModifiers
>>                 ["documentation" "declaration" "static"
>> "defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
>> "controlFlow" "crateRoot" "injected" "intraDocLink" "library"
>> "mutable" "public" "reference" "trait" "unsafe"])
>>                    :range t :full
>>                    (:delta t))
>>                   :inlayHintProvider
>>                   (:resolveProvider t)
>>                   :experimental
>>                   (:externalDocs t :hoverRange t :joinLines t
>> :matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
>> t :runnables
>>                          (:kinds
>>                           ["cargo"])
>>                          :ssr t :workspaceSymbolScopeKindFiltering t))
>>        :serverInfo
>>        (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
>> [client-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
>> test eql rehash-size 1.5 rehash-threshold 0.8125 data
>>                                 ()))
>> [client-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "textDocument/didOpen" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 0
>> :languageId "rust-ts" :text "mod thing;\n\nfn main() {\n
>> println!(\"Hello world\");\n}")))
>> [client-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
>>       (:settings #s(hash-table size 1 test eql rehash-size 1.5
>> rehash-threshold 0.8125 data
>>                    ())))
>> [client-request] (id:2) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 2 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 4 :character 1))))
>> [stderr] [ERROR rust_analyzer::config] failed to find any projects in
>> [AbsPathBuf("/home/misha/sweet/repos/tmp")]
>> [stderr] [ERROR rust_analyzer::lsp_utils] rust-analyzer failed to
>> discover workspace
>> [server-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "window/showMessage" :params
>>       (:type 1 :message "rust-analyzer failed to discover workspace"))
>> [stderr] [ERROR rust_analyzer::lsp_utils] rust-analyzer failed to
>> discover workspace
>> [server-request] (id:0) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 0 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Fetching"))
>> [client-reply] (id:0) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 0 :result nil)
>> [server-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
>> [server-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "window/showMessage" :params
>>       (:type 1 :message "rust-analyzer failed to discover workspace"))
>> [server-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "end")))
>> [server-request] (id:1) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 1 :method "workspace/configuration" :params
>>       (:items
>>        [(:section "rust-analyzer")]))
>> [client-reply] (id:1) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 1 :result
>>       [nil])
>> [server-request] (id:2) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 2 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Indexing"))
>> [client-reply] (id:2) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 2 :result nil)
>> [server-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "begin" :title "Indexing" :cancellable :json-false
>> :percentage 0)))
>> [server-notification] Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "end")))
>> [server-reply] (id:2) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 2 :result
>>       [])
>> [client-request] (id:3) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 3 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 3 :character 24)))
>> [client-request] (id:4) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 4 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 3 :character 24)))
>> [client-request] (id:5) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 5 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 3 :character 24)))
>> [server-reply] (id:3) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 3 :result nil)
>> [server-reply] (id:4) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 4 :result nil)
>> [server-reply] (id:5) Wed May 10 21:27:00 2023:
>> (:jsonrpc "2.0" :id 5 :result nil)
>> [client-request] (id:6) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 6 :method "shutdown" :params nil)
>> [server-reply] (id:6) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 6 :result nil)
>> [client-notification] Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :method "exit" :params nil)
>> [internal] Wed May 10 21:29:29 2023:
>> (:message "Connection state changed" :change "killed\n")
>>
>> ----------b---y---e---b---y---e----------
>> [stderr]
>> [stderr]
>> [stderr] nil
>> [stderr] nil
>> [stderr] Process EGLOT (tmp/(rust-ts-mode rust-mode)) stderr finished
>> [client-request] (id:1) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 1 :method "initialize" :params
>>       (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
>> :rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
>> #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
>> data
>>                                                                             ())
>>               :capabilities
>>               (:workspace
>>                (:applyEdit t :executeCommand
>>                    (:dynamicRegistration :json-false)
>>                    :workspaceEdit
>>                    (:documentChanges t)
>>                    :didChangeWatchedFiles
>>                    (:dynamicRegistration t)
>>                    :symbol
>>                    (:dynamicRegistration :json-false)
>>                    :configuration t :workspaceFolders t)
>>                :textDocument
>>                (:synchronization
>>             (:dynamicRegistration :json-false :willSave t
>> :willSaveWaitUntil t :didSave t)
>>             :completion
>>             (:dynamicRegistration :json-false :completionItem
>>                           (:snippetSupport :json-false
>> :deprecatedSupport t :resolveSupport
>>                                    (:properties
>>                                 ["documentation" "details"
>> "additionalTextEdits"])
>>                                    :tagSupport
>>                                    (:valueSet
>>                                 [1]))
>>                           :contextSupport t)
>>             :hover
>>             (:dynamicRegistration :json-false :contentFormat
>>                           ["plaintext"])
>>             :signatureHelp
>>             (:dynamicRegistration :json-false :signatureInformation
>>                           (:parameterInformation
>>                            (:labelOffsetSupport t)
>>                            :activeParameterSupport t))
>>             :references
>>             (:dynamicRegistration :json-false)
>>             :definition
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :declaration
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :implementation
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :typeDefinition
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :documentSymbol
>>             (:dynamicRegistration :json-false
>> :hierarchicalDocumentSymbolSupport t :symbolKind
>>                           (:valueSet
>>                            [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
>> 18 19 20 21 22 23 24 25 26]))
>>             :documentHighlight
>>             (:dynamicRegistration :json-false)
>>             :codeAction
>>             (:dynamicRegistration :json-false :codeActionLiteralSupport
>>                           (:codeActionKind
>>                            (:valueSet
>>                         ["quickfix" "refactor" "refactor.extract"
>> "refactor.inline" "refactor.rewrite" "source"
>> "source.organizeImports"]))
>>                           :isPreferredSupport t)
>>             :formatting
>>             (:dynamicRegistration :json-false)
>>             :rangeFormatting
>>             (:dynamicRegistration :json-false)
>>             :rename
>>             (:dynamicRegistration :json-false)
>>             :inlayHint
>>             (:dynamicRegistration :json-false)
>>             :publishDiagnostics
>>             (:relatedInformation :json-false :codeDescriptionSupport
>> :json-false :tagSupport
>>                          (:valueSet
>>                           [1 2])))
>>                :window
>>                (:workDoneProgress t)
>>                :general
>>                (:positionEncodings
>>             ["utf-32" "utf-8" "utf-16"])
>>                :experimental #s(hash-table size 1 test eql rehash-size
>> 1.5 rehash-threshold 0.8125 data
>>                            ()))
>>               :workspaceFolders
>>               [(:uri "file:///home/misha/sweet/repos/tmp" :name
>> "~/sweet/repos/tmp/")]))
>> [server-reply] (id:1) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 1 :result
>>       (:capabilities
>>        (:positionEncoding "utf-32" :textDocumentSync
>>                   (:openClose t :change 2 :save nil)
>>                   :selectionRangeProvider t :hoverProvider t :completionProvider
>>                   (:resolveProvider t :triggerCharacters
>>                         [":" "." "'" "("]
>>                         :completionItem
>>                         (:labelDetailsSupport :json-false))
>>                   :signatureHelpProvider
>>                   (:triggerCharacters
>>                    ["(" "," "<"])
>>                   :definitionProvider t :typeDefinitionProvider t
>> :implementationProvider t :referencesProvider t
>> :documentHighlightProvider t :documentSymbolProvider t
>> :workspaceSymbolProvider t :codeActionProvider
>>                   (:codeActionKinds
>>                    ["" "quickfix" "refactor" "refactor.extract"
>> "refactor.inline" "refactor.rewrite"]
>>                    :resolveProvider t)
>>                   :codeLensProvider
>>                   (:resolveProvider t)
>>                   :documentFormattingProvider t
>> :documentRangeFormattingProvider :json-false
>> :documentOnTypeFormattingProvider
>>                   (:firstTriggerCharacter "=" :moreTriggerCharacter
>>                               ["." ">" "{"])
>>                   :renameProvider
>>                   (:prepareProvider t)
>>                   :foldingRangeProvider t :declarationProvider t :workspace
>>                   (:workspaceFolders
>>                    (:supported t :changeNotifications t)
>>                    :fileOperations
>>                    (:willRename
>>                 (:filters
>>                  [(:scheme "file" :pattern
>>                        (:glob "**/*.rs" :matches "file"))
>>                   (:scheme "file" :pattern
>>                        (:glob "**" :matches "folder"))])))
>>                   :callHierarchyProvider t :semanticTokensProvider
>>                   (:legend
>>                    (:tokenTypes
>>                 ["comment" "decorator" "enumMember" "enum" "function"
>> "interface" "keyword" "macro" "method" "namespace" "number" "operator"
>> "parameter" "property" "string" "struct" "typeParameter" "variable"
>> "angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
>> "boolean" "brace" "bracket" "builtinAttribute" "builtinType"
>> "character" "colon" "comma" "comparison" "constParameter" "derive"
>> "deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
>> "label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
>> "selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
>> "union" "unresolvedReference"]
>>                 :tokenModifiers
>>                 ["documentation" "declaration" "static"
>> "defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
>> "controlFlow" "crateRoot" "injected" "intraDocLink" "library"
>> "mutable" "public" "reference" "trait" "unsafe"])
>>                    :range t :full
>>                    (:delta t))
>>                   :inlayHintProvider
>>                   (:resolveProvider t)
>>                   :experimental
>>                   (:externalDocs t :hoverRange t :joinLines t
>> :matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
>> t :runnables
>>                          (:kinds
>>                           ["cargo"])
>>                          :ssr t :workspaceSymbolScopeKindFiltering t))
>>        :serverInfo
>>        (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
>> [client-notification] Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
>> test eql rehash-size 1.5 rehash-threshold 0.8125 data
>>                                 ()))
>> [client-notification] Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
>>       (:settings #s(hash-table size 1 test eql rehash-size 1.5
>> rehash-threshold 0.8125 data
>>                    ())))
>> [server-request] (id:0) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 0 :method "workspace/configuration" :params
>>       (:items
>>        [(:section "rust-analyzer")]))
>> [client-reply] (id:0) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 0 :result
>>       [nil])
>> [server-request] (id:1) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 1 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Fetching"))
>> [client-reply] (id:1) Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :id 1 :result nil)
>> [server-notification] Wed May 10 21:29:29 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
>> [server-notification] Wed May 10 21:29:32 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "report" :cancellable :json-false :message "metadata")))
>> [server-request] (id:2) Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :id 2 :method "client/registerCapability" :params
>>       (:registrations
>>        [(:id "workspace/didChangeWatchedFiles" :method
>> "workspace/didChangeWatchedFiles" :registerOptions
>>          (:watchers
>>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
>> [client-reply] (id:2) Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :id 2 :result nil)
>> [server-notification] Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "end")))
>> [server-request] (id:3) Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :id 3 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Roots Scanned"))
>> [client-reply] (id:3) Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :id 3 :result nil)
>> [server-notification] Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "begin" :title "Roots Scanned" :cancellable
>> :json-false :message "0/2" :percentage 0)))
>> [server-notification] Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "report" :cancellable :json-false :message "1/2"
>> :percentage 50)))
>> [server-request] (id:4) Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :id 4 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Fetching"))
>> [client-reply] (id:4) Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :id 4 :result nil)
>> [server-notification] Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
>> [server-notification] Wed May 10 21:29:35 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "report" :cancellable :json-false :message "metadata")))
>> [server-notification] Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "end")))
>> [server-request] (id:5) Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :id 5 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Loading"))
>> [client-reply] (id:5) Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :id 5 :result nil)
>> [server-notification] Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "begin" :title "Loading" :cancellable :json-false)))
>> [server-notification] Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "report" :cancellable :json-false :message "building
>> proc-macros: tmp")))
>> [server-notification] Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "report" :cancellable :json-false :message "building
>> proc-macros: tmp")))
>> [server-request] (id:6) Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :id 6 :method "client/registerCapability" :params
>>       (:registrations
>>        [(:id "workspace/didChangeWatchedFiles" :method
>> "workspace/didChangeWatchedFiles" :registerOptions
>>          (:watchers
>>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
>> [client-reply] (id:6) Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :id 6 :result nil)
>> [server-notification] Wed May 10 21:29:36 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "end")))
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "end" :message "2/2")))
>> [server-request] (id:7) Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :id 7 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Roots Scanned"))
>> [client-reply] (id:7) Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :id 7 :result nil)
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "begin" :title "Roots Scanned" :cancellable
>> :json-false :message "0/2" :percentage 0)))
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "report" :cancellable :json-false :message "1/2"
>> :percentage 50)))
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "end" :message "2/2")))
>> [server-request] (id:8) Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :id 8 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Fetching"))
>> [client-reply] (id:8) Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :id 8 :result nil)
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "report" :cancellable :json-false :message "metadata")))
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "end")))
>> [server-request] (id:9) Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :id 9 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Indexing"))
>> [client-reply] (id:9) Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :id 9 :result nil)
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "begin" :title "Indexing" :cancellable :json-false
>> :percentage 0)))
>> [server-notification] Wed May 10 21:29:48 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "0/5 (test
>> + 1 more)" :percentage 0)))
>> [server-request] (id:10) Wed May 10 21:29:49 2023:
>> (:jsonrpc "2.0" :id 10 :method "window/workDoneProgress/create" :params
>>       (:token "rust-analyzer/flycheck/0"))
>> [client-reply] (id:10) Wed May 10 21:29:49 2023:
>> (:jsonrpc "2.0" :id 10 :result nil)
>> [server-notification] Wed May 10 21:29:49 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "begin" :title "cargo check" :cancellable t)))
>> [server-notification] Wed May 10 21:29:49 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "1/5
>> (core)" :percentage 20)))
>> [server-notification] Wed May 10 21:29:49 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "E0583" :codeDescription
>>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>>           :source "rustc" :message "file not found for module
>> `thing`\nto create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"" :data
>>           (:rendered "error[E0583]: file not found for module
>> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
>> = help: to create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"\n\n"))]))
>> [server-notification] Wed May 10 21:29:52 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :percentage 40)))
>> [server-notification] Wed May 10 21:29:52 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "2/5
>> (alloc)" :percentage 40)))
>> [server-notification] Wed May 10 21:29:52 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :percentage 60)))
>> [server-notification] Wed May 10 21:29:52 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "3/5
>> (std)" :percentage 60)))
>> [server-notification] Wed May 10 21:29:53 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :percentage 80)))
>> [server-notification] Wed May 10 21:29:53 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "4/5
>> (proc_macro)" :percentage 80)))
>> [server-notification] Wed May 10 21:29:53 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :percentage 100)))
>> [server-notification] Wed May 10 21:29:53 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "end")))
>> [server-notification] Wed May 10 21:29:54 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "end")))
>> [client-notification] Wed May 10 21:30:01 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
>> :type 1)]))
>> [client-notification] Wed May 10 21:30:08 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 1)]))
>> [client-notification] Wed May 10 21:30:08 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
>> [client-notification] Wed May 10 21:30:08 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
>> [stderr]
>> [stderr]
>> [stderr] nil
>> [stderr] nil
>> [stderr] Process EGLOT (tmp/(rust-ts-mode rust-mode)) stderr finished
>> [internal] Wed May 10 21:30:16 2023:
>> (:message "Running language server: /home/misha/.cargo/bin/rust-analyzer")
>> [client-request] (id:1) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 1 :method "initialize" :params
>>       (:processId 14861 :rootPath "/home/misha/sweet/repos/tmp/"
>> :rootUri "file:///home/misha/sweet/repos/tmp" :initializationOptions
>> #s(hash-table size 1 test eql rehash-size 1.5 rehash-threshold 0.8125
>> data
>>                                                                             ())
>>               :capabilities
>>               (:workspace
>>                (:applyEdit t :executeCommand
>>                    (:dynamicRegistration :json-false)
>>                    :workspaceEdit
>>                    (:documentChanges t)
>>                    :didChangeWatchedFiles
>>                    (:dynamicRegistration t)
>>                    :symbol
>>                    (:dynamicRegistration :json-false)
>>                    :configuration t :workspaceFolders t)
>>                :textDocument
>>                (:synchronization
>>             (:dynamicRegistration :json-false :willSave t
>> :willSaveWaitUntil t :didSave t)
>>             :completion
>>             (:dynamicRegistration :json-false :completionItem
>>                           (:snippetSupport :json-false
>> :deprecatedSupport t :resolveSupport
>>                                    (:properties
>>                                 ["documentation" "details"
>> "additionalTextEdits"])
>>                                    :tagSupport
>>                                    (:valueSet
>>                                 [1]))
>>                           :contextSupport t)
>>             :hover
>>             (:dynamicRegistration :json-false :contentFormat
>>                           ["plaintext"])
>>             :signatureHelp
>>             (:dynamicRegistration :json-false :signatureInformation
>>                           (:parameterInformation
>>                            (:labelOffsetSupport t)
>>                            :activeParameterSupport t))
>>             :references
>>             (:dynamicRegistration :json-false)
>>             :definition
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :declaration
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :implementation
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :typeDefinition
>>             (:dynamicRegistration :json-false :linkSupport t)
>>             :documentSymbol
>>             (:dynamicRegistration :json-false
>> :hierarchicalDocumentSymbolSupport t :symbolKind
>>                           (:valueSet
>>                            [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
>> 18 19 20 21 22 23 24 25 26]))
>>             :documentHighlight
>>             (:dynamicRegistration :json-false)
>>             :codeAction
>>             (:dynamicRegistration :json-false :codeActionLiteralSupport
>>                           (:codeActionKind
>>                            (:valueSet
>>                         ["quickfix" "refactor" "refactor.extract"
>> "refactor.inline" "refactor.rewrite" "source"
>> "source.organizeImports"]))
>>                           :isPreferredSupport t)
>>             :formatting
>>             (:dynamicRegistration :json-false)
>>             :rangeFormatting
>>             (:dynamicRegistration :json-false)
>>             :rename
>>             (:dynamicRegistration :json-false)
>>             :inlayHint
>>             (:dynamicRegistration :json-false)
>>             :publishDiagnostics
>>             (:relatedInformation :json-false :codeDescriptionSupport
>> :json-false :tagSupport
>>                          (:valueSet
>>                           [1 2])))
>>                :window
>>                (:workDoneProgress t)
>>                :general
>>                (:positionEncodings
>>             ["utf-32" "utf-8" "utf-16"])
>>                :experimental #s(hash-table size 1 test eql rehash-size
>> 1.5 rehash-threshold 0.8125 data
>>                            ()))
>>               :workspaceFolders
>>               [(:uri "file:///home/misha/sweet/repos/tmp" :name
>> "~/sweet/repos/tmp/")]))
>> [server-reply] (id:1) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 1 :result
>>       (:capabilities
>>        (:positionEncoding "utf-32" :textDocumentSync
>>                   (:openClose t :change 2 :save nil)
>>                   :selectionRangeProvider t :hoverProvider t :completionProvider
>>                   (:resolveProvider t :triggerCharacters
>>                         [":" "." "'" "("]
>>                         :completionItem
>>                         (:labelDetailsSupport :json-false))
>>                   :signatureHelpProvider
>>                   (:triggerCharacters
>>                    ["(" "," "<"])
>>                   :definitionProvider t :typeDefinitionProvider t
>> :implementationProvider t :referencesProvider t
>> :documentHighlightProvider t :documentSymbolProvider t
>> :workspaceSymbolProvider t :codeActionProvider
>>                   (:codeActionKinds
>>                    ["" "quickfix" "refactor" "refactor.extract"
>> "refactor.inline" "refactor.rewrite"]
>>                    :resolveProvider t)
>>                   :codeLensProvider
>>                   (:resolveProvider t)
>>                   :documentFormattingProvider t
>> :documentRangeFormattingProvider :json-false
>> :documentOnTypeFormattingProvider
>>                   (:firstTriggerCharacter "=" :moreTriggerCharacter
>>                               ["." ">" "{"])
>>                   :renameProvider
>>                   (:prepareProvider t)
>>                   :foldingRangeProvider t :declarationProvider t :workspace
>>                   (:workspaceFolders
>>                    (:supported t :changeNotifications t)
>>                    :fileOperations
>>                    (:willRename
>>                 (:filters
>>                  [(:scheme "file" :pattern
>>                        (:glob "**/*.rs" :matches "file"))
>>                   (:scheme "file" :pattern
>>                        (:glob "**" :matches "folder"))])))
>>                   :callHierarchyProvider t :semanticTokensProvider
>>                   (:legend
>>                    (:tokenTypes
>>                 ["comment" "decorator" "enumMember" "enum" "function"
>> "interface" "keyword" "macro" "method" "namespace" "number" "operator"
>> "parameter" "property" "string" "struct" "typeParameter" "variable"
>> "angle" "arithmetic" "attribute" "attributeBracket" "bitwise"
>> "boolean" "brace" "bracket" "builtinAttribute" "builtinType"
>> "character" "colon" "comma" "comparison" "constParameter" "derive"
>> "deriveHelper" "dot" "escapeSequence" "formatSpecifier" "generic"
>> "label" "lifetime" "logical" "macroBang" "parenthesis" "punctuation"
>> "selfKeyword" "selfTypeKeyword" "semicolon" "typeAlias" "toolModule"
>> "union" "unresolvedReference"]
>>                 :tokenModifiers
>>                 ["documentation" "declaration" "static"
>> "defaultLibrary" "async" "attribute" "callable" "constant" "consuming"
>> "controlFlow" "crateRoot" "injected" "intraDocLink" "library"
>> "mutable" "public" "reference" "trait" "unsafe"])
>>                    :range t :full
>>                    (:delta t))
>>                   :inlayHintProvider
>>                   (:resolveProvider t)
>>                   :experimental
>>                   (:externalDocs t :hoverRange t :joinLines t
>> :matchingBrace t :moveItem t :onEnter t :openCargoToml t :parentModule
>> t :runnables
>>                          (:kinds
>>                           ["cargo"])
>>                          :ssr t :workspaceSymbolScopeKindFiltering t))
>>        :serverInfo
>>        (:name "rust-analyzer" :version "1.69.0 (84c898d 2023-04-16)")))
>> [client-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "initialized" :params #s(hash-table size 1
>> test eql rehash-size 1.5 rehash-threshold 0.8125 data
>>                                 ()))
>> [client-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "textDocument/didOpen" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 0
>> :languageId "rust-ts" :text "fn main() {\n   println!(\"Hello
>> world\");\n}\n")))
>> [client-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeConfiguration" :params
>>       (:settings #s(hash-table size 1 test eql rehash-size 1.5
>> rehash-threshold 0.8125 data
>>                    ())))
>> [client-request] (id:2) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 2 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 3 :character 0))))
>> [server-request] (id:0) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 0 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Fetching"))
>> [client-reply] (id:0) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 0 :result nil)
>> [server-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
>> [server-request] (id:1) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 1 :method "workspace/configuration" :params
>>       (:items
>>        [(:section "rust-analyzer")]))
>> [client-reply] (id:1) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 1 :result
>>       [nil])
>> [server-reply] (id:2) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 2 :result
>>       [])
>> [server-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "report" :cancellable :json-false :message "metadata")))
>> [server-request] (id:2) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 2 :method "client/registerCapability" :params
>>       (:registrations
>>        [(:id "workspace/didChangeWatchedFiles" :method
>> "workspace/didChangeWatchedFiles" :registerOptions
>>          (:watchers
>>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
>> [client-reply] (id:2) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 2 :result nil)
>> [server-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "end")))
>> [server-request] (id:3) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 3 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Roots Scanned"))
>> [client-reply] (id:3) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 3 :result nil)
>> [server-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "begin" :title "Roots Scanned" :cancellable
>> :json-false :message "0/2" :percentage 0)))
>> [server-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "report" :cancellable :json-false :message "1/2"
>> :percentage 50)))
>> [server-request] (id:4) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 4 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Fetching"))
>> [client-reply] (id:4) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 4 :result nil)
>> [server-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
>> [client-request] (id:3) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 3 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 0)))
>> [client-request] (id:4) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 4 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 0)))
>> [client-request] (id:5) Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :id 5 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 0)))
>> [server-notification] Wed May 10 21:30:16 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "end" :message "2/2")))
>> [server-reply] (id:3) Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :id 3 :result nil)
>> [server-reply] (id:4) Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :id 4 :result nil)
>> [server-notification] Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "report" :cancellable :json-false :message "metadata")))
>> [server-notification] Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "end")))
>> [server-request] (id:5) Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :id 5 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Fetching"))
>> [client-reply] (id:5) Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :id 5 :result nil)
>> [server-notification] Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "begin" :title "Fetching" :cancellable :json-false)))
>> [server-notification] Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "report" :cancellable :json-false :message "metadata")))
>> [server-notification] Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Fetching" :value
>>           (:kind "end")))
>> [server-request] (id:6) Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :id 6 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Loading"))
>> [client-reply] (id:6) Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :id 6 :result nil)
>> [server-notification] Wed May 10 21:30:17 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "begin" :title "Loading" :cancellable :json-false)))
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "report" :cancellable :json-false :message "building
>> proc-macros: tmp")))
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "report" :cancellable :json-false :message "building
>> proc-macros: tmp")))
>> [server-request] (id:7) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 7 :method "client/registerCapability" :params
>>       (:registrations
>>        [(:id "workspace/didChangeWatchedFiles" :method
>> "workspace/didChangeWatchedFiles" :registerOptions
>>          (:watchers
>>           [(:globPattern "/home/misha/sweet/repos/tmp/**/*.rs")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.toml")
>>            (:globPattern "/home/misha/sweet/repos/tmp/**/Cargo.lock")]))]))
>> [client-reply] (id:7) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 7 :result nil)
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Loading" :value
>>           (:kind "end")))
>> [server-request] (id:8) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 8 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Roots Scanned"))
>> [client-reply] (id:8) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 8 :result nil)
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "begin" :title "Roots Scanned" :cancellable
>> :json-false :message "0/2" :percentage 0)))
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "report" :cancellable :json-false :message "1/2"
>> :percentage 50)))
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Roots Scanned" :value
>>           (:kind "end" :message "2/2")))
>> [server-request] (id:9) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 9 :method "window/workDoneProgress/create" :params
>>       (:token "rustAnalyzer/Indexing"))
>> [client-reply] (id:9) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 9 :result nil)
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "begin" :title "Indexing" :cancellable :json-false
>> :percentage 0)))
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "0/5 (core
>> + 1 more)" :percentage 0)))
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "1/5
>> (core)" :percentage 20)))
>> [server-request] (id:10) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 10 :method "window/workDoneProgress/create" :params
>>       (:token "rust-analyzer/flycheck/0"))
>> [client-reply] (id:10) Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :id 10 :result nil)
>> [server-notification] Wed May 10 21:30:18 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "begin" :title "cargo check" :cancellable t)))
>> [server-notification] Wed May 10 21:30:19 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "report" :cancellable t :message "tmp")))
>> [server-notification] Wed May 10 21:30:19 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "report" :cancellable t :message "tmp")))
>> [server-notification] Wed May 10 21:30:19 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "end")))
>> [server-notification] Wed May 10 21:30:20 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "2/5
>> (alloc)" :percentage 40)))
>> [server-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :percentage 60)))
>> [server-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "3/5
>> (std)" :percentage 60)))
>> [server-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :percentage 80)))
>> [server-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :message "4/5
>> (proc_macro)" :percentage 80)))
>> [client-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
>> :type 1)]))
>> [client-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/misha@misha-N552VX.14861%3A1683769648"
>> :type 1)]))
>> [server-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "report" :cancellable :json-false :percentage 100)))
>> [server-notification] Wed May 10 21:30:21 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rustAnalyzer/Indexing" :value
>>           (:kind "end")))
>> [server-reply] (id:5) Wed May 10 21:30:23 2023:
>> (:jsonrpc "2.0" :id 5 :result
>>       [])
>> [server-notification] Wed May 10 21:30:23 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         []
>>         :version 0))
>> [client-notification] Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 9)
>>        :contentChanges
>>        [(:range
>>          (:start
>>           (:line 0 :character 0)
>>           :end
>>           (:line 0 :character 0))
>>          :rangeLength 0 :text "\n")
>>         (:range
>>          (:start
>>           (:line 1 :character 0)
>>           :end
>>           (:line 1 :character 0))
>>          :rangeLength 0 :text "\n")
>>         (:range
>>          (:start
>>           (:line 0 :character 0)
>>           :end
>>           (:line 0 :character 0))
>>          :rangeLength 0 :text "m")
>>         (:range
>>          (:start
>>           (:line 0 :character 1)
>>           :end
>>           (:line 0 :character 1))
>>          :rangeLength 0 :text "d")
>>         (:range
>>          (:start
>>           (:line 0 :character 1)
>>           :end
>>           (:line 0 :character 2))
>>          :rangeLength 1 :text "")
>>         (:range
>>          (:start
>>           (:line 0 :character 1)
>>           :end
>>           (:line 0 :character 1))
>>          :rangeLength 0 :text "d")
>>         (:range
>>          (:start
>>           (:line 0 :character 2)
>>           :end
>>           (:line 0 :character 2))
>>          :rangeLength 0 :text " ")
>>         (:range
>>          (:start
>>           (:line 0 :character 2)
>>           :end
>>           (:line 0 :character 3))
>>          :rangeLength 1 :text "")
>>         (:range
>>          (:start
>>           (:line 0 :character 1)
>>           :end
>>           (:line 0 :character 2))
>>          :rangeLength 1 :text "")]))
>> [client-request] (id:6) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 6 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 1)))
>> [client-request] (id:7) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 7 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 1)))
>> [client-request] (id:8) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 8 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 1)))
>> [client-request] (id:9) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 9 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 5 :character 0))))
>> [server-reply] (id:6) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 6 :result nil)
>> [server-reply] (id:7) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 7 :result nil)
>> [server-reply] (id:8) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 8 :result nil)
>> [server-reply] (id:9) Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :id 9 :result
>>       [])
>> [server-notification] Wed May 10 21:30:24 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 1)
>>            :end
>>            (:line 0 :character 1))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected BANG")
>>          (:range
>>           (:start
>>            (:line 0 :character 1)
>>            :end
>>            (:line 0 :character 1))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected
>> `{`, `[`, `(`")
>>          (:range
>>           (:start
>>            (:line 0 :character 1)
>>            :end
>>            (:line 0 :character 1))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected SEMICOLON")]
>>         :version 9))
>> [client-notification] Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 12)
>>        :contentChanges
>>        [(:range
>>          (:start
>>           (:line 0 :character 1)
>>           :end
>>           (:line 0 :character 1))
>>          :rangeLength 0 :text "o")
>>         (:range
>>          (:start
>>           (:line 0 :character 2)
>>           :end
>>           (:line 0 :character 2))
>>          :rangeLength 0 :text "d")
>>         (:range
>>          (:start
>>           (:line 0 :character 3)
>>           :end
>>           (:line 0 :character 3))
>>          :rangeLength 0 :text " ")]))
>> [client-request] (id:10) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 10 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 4)))
>> [client-request] (id:11) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 11 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 4)))
>> [client-request] (id:12) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 12 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 4)))
>> [client-request] (id:13) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 13 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 5 :character 0))))
>> [server-notification] Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 2 :character 0)
>>            :end
>>            (:line 2 :character 0))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected a name")
>>          (:range
>>           (:start
>>            (:line 2 :character 2)
>>            :end
>>            (:line 2 :character 2))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")
>>          (:range
>>           (:start
>>            (:line 2 :character 7)
>>            :end
>>            (:line 2 :character 7))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected BANG")
>>          (:range
>>           (:start
>>            (:line 2 :character 9)
>>            :end
>>            (:line 2 :character 9))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected SEMICOLON")
>>          (:range
>>           (:start
>>            (:line 2 :character 10)
>>            :end
>>            (:line 2 :character 10))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected an item")]
>>         :version 12))
>> [server-reply] (id:10) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 10 :result nil)
>> [server-reply] (id:11) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 11 :result nil)
>> [server-reply] (id:12) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 12 :result nil)
>> [server-reply] (id:13) Wed May 10 21:30:25 2023:
>> (:jsonrpc "2.0" :id 13 :result
>>       [])
>> [client-notification] Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 15)
>>        :contentChanges
>>        [(:range
>>          (:start
>>           (:line 0 :character 4)
>>           :end
>>           (:line 0 :character 4))
>>          :rangeLength 0 :text "t")
>>         (:range
>>          (:start
>>           (:line 0 :character 5)
>>           :end
>>           (:line 0 :character 5))
>>          :rangeLength 0 :text "m")
>>         (:range
>>          (:start
>>           (:line 0 :character 6)
>>           :end
>>           (:line 0 :character 6))
>>          :rangeLength 0 :text "p")]))
>> [client-request] (id:14) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 14 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 7)))
>> [client-request] (id:15) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 15 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 7)))
>> [client-request] (id:16) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 16 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 7)))
>> [client-request] (id:17) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 17 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 5 :character 0))))
>> [server-notification] Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 7)
>>            :end
>>            (:line 0 :character 7))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")]
>>         :version 15))
>> [server-reply] (id:14) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 14 :result nil)
>> [server-reply] (id:17) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 17 :result
>>       [])
>> [server-reply] (id:15) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 15 :result
>>       (:contents
>>        (:kind "plaintext" :value "tmp\n\nmod tmp")
>>        :range
>>        (:start
>>         (:line 0 :character 4)
>>         :end
>>         (:line 0 :character 7))))
>> [server-reply] (id:16) Wed May 10 21:30:27 2023:
>> (:jsonrpc "2.0" :id 16 :result
>>       [(:range
>>         (:start
>>          (:line 0 :character 4)
>>          :end
>>          (:line 0 :character 7)))])
>> [internal] (id:18) Wed May 10 21:30:29 2023:
>> (:deferring :textDocument/signatureHelp :id 18 :params
>>         (:textDocument
>>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>          :position
>>          (:line 0 :character 8)))
>> [internal] (id:19) Wed May 10 21:30:29 2023:
>> (:deferring :textDocument/hover :id 19 :params
>>         (:textDocument
>>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>          :position
>>          (:line 0 :character 8)))
>> [internal] (id:20) Wed May 10 21:30:29 2023:
>> (:deferring :textDocument/documentHighlight :id 20 :params
>>         (:textDocument
>>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>          :position
>>          (:line 0 :character 8)))
>> [client-notification] Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 16)
>>        :contentChanges
>>        [(:range
>>          (:start
>>           (:line 0 :character 7)
>>           :end
>>           (:line 0 :character 7))
>>          :rangeLength 0 :text ";")]))
>> [internal] Wed May 10 21:30:29 2023:
>> (:maybe-run-deferred
>>  (20 19 18))
>> [client-request] (id:20) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 20 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 8)))
>> [client-request] (id:19) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 19 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 8)))
>> [client-request] (id:18) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 18 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 8)))
>> [client-request] (id:21) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 21 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 5 :character 0))))
>> [server-reply] (id:20) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 20 :result nil)
>> [server-reply] (id:19) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 19 :result nil)
>> [server-reply] (id:18) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 18 :result nil)
>> [server-notification] Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 8))
>>           :severity 1 :code "unresolved-module" :codeDescription
>>           (:href
>> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>>           :source "rust-analyzer" :message "unresolved module, can't
>> find module file: tmp.rs, or tmp/mod.rs")]
>>         :version 16))
>> [server-reply] (id:21) Wed May 10 21:30:29 2023:
>> (:jsonrpc "2.0" :id 21 :result
>>       [])
>> [client-notification] Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 19)
>>        :contentChanges
>>        [(:range
>>          (:start
>>           (:line 0 :character 6)
>>           :end
>>           (:line 0 :character 7))
>>          :rangeLength 1 :text "")
>>         (:range
>>          (:start
>>           (:line 0 :character 5)
>>           :end
>>           (:line 0 :character 6))
>>          :rangeLength 1 :text "")
>>         (:range
>>          (:start
>>           (:line 0 :character 4)
>>           :end
>>           (:line 0 :character 5))
>>          :rangeLength 1 :text "")]))
>> [client-request] (id:22) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 22 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 4)))
>> [client-request] (id:23) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 23 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 4)))
>> [client-request] (id:24) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 24 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 4)))
>> [client-request] (id:25) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 25 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 5 :character 0))))
>> [server-notification] Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 4)
>>            :end
>>            (:line 0 :character 4))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected a name")
>>          (:range
>>           (:start
>>            (:line 0 :character 5)
>>            :end
>>            (:line 0 :character 5))
>>           :severity 1 :code "syntax-error" :codeDescription
>>           (:href "https://rust-analyzer.github.io/manual.html#syntax-error")
>>           :source "rust-analyzer" :message "Syntax Error: expected `;` or `{`")]
>>         :version 19))
>> [server-reply] (id:22) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 22 :result nil)
>> [server-reply] (id:23) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 23 :result nil)
>> [server-reply] (id:24) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 24 :result nil)
>> [server-reply] (id:25) Wed May 10 21:30:31 2023:
>> (:jsonrpc "2.0" :id 25 :result
>>       [])
>> [client-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "textDocument/didChange" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :version 24)
>>        :contentChanges
>>        [(:range
>>          (:start
>>           (:line 0 :character 4)
>>           :end
>>           (:line 0 :character 4))
>>          :rangeLength 0 :text "t")
>>         (:range
>>          (:start
>>           (:line 0 :character 5)
>>           :end
>>           (:line 0 :character 5))
>>          :rangeLength 0 :text "h")
>>         (:range
>>          (:start
>>           (:line 0 :character 6)
>>           :end
>>           (:line 0 :character 6))
>>          :rangeLength 0 :text "i")
>>         (:range
>>          (:start
>>           (:line 0 :character 7)
>>           :end
>>           (:line 0 :character 7))
>>          :rangeLength 0 :text "n")
>>         (:range
>>          (:start
>>           (:line 0 :character 8)
>>           :end
>>           (:line 0 :character 8))
>>          :rangeLength 0 :text "g")]))
>> [client-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "textDocument/didSave" :params
>>       (:text "mod thing;\n\nfn main() {\n   println!(\"Hello
>> world\");\n}\n" :textDocument
>>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")))
>> [server-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "unresolved-module" :codeDescription
>>           (:href
>> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>>           :source "rust-analyzer" :message "unresolved module, can't
>> find module file: thing.rs, or thing/mod.rs")]
>>         :version 24))
>> [client-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
>> [client-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/main.rs" :type 2)]))
>> [client-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
>> [client-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "workspace/didChangeWatchedFiles" :params
>>       (:changes
>>        [(:uri "file:///home/misha/sweet/repos/tmp/.%23main.rs" :type 3)]))
>> [server-request] (id:11) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 11 :method "window/workDoneProgress/create" :params
>>       (:token "rust-analyzer/flycheck/0"))
>> [client-reply] (id:11) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 11 :result nil)
>> [server-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "begin" :title "cargo check" :cancellable t)))
>> [server-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "textDocument/publishDiagnostics" :params
>>       (:uri "file:///home/misha/sweet/repos/tmp/main.rs" :diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "unresolved-module" :codeDescription
>>           (:href
>> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>>           :source "rust-analyzer" :message "unresolved module, can't
>> find module file: thing.rs, or thing/mod.rs")
>>          (:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "E0583" :codeDescription
>>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>>           :source "rustc" :message "file not found for module
>> `thing`\nto create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"" :data
>>           (:rendered "error[E0583]: file not found for module
>> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
>> = help: to create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"\n\n"))]
>>         :version 24))
>> [server-notification] Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :method "$/progress" :params
>>       (:token "rust-analyzer/flycheck/0" :value
>>           (:kind "end")))
>> [client-request] (id:26) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 26 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 9)))
>> [client-request] (id:27) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 27 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 9)))
>> [client-request] (id:28) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 28 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 9)))
>> [client-request] (id:29) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 29 :method "textDocument/inlayHint" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 0)
>>         :end
>>         (:line 5 :character 0))))
>> [server-reply] (id:26) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 26 :result nil)
>> [server-reply] (id:27) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 27 :result
>>       (:contents
>>        (:kind "plaintext" :value "tmp\n\nmod thing")
>>        :range
>>        (:start
>>         (:line 0 :character 4)
>>         :end
>>         (:line 0 :character 9))))
>> [server-reply] (id:28) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 28 :result
>>       [(:range
>>         (:start
>>          (:line 0 :character 4)
>>          :end
>>          (:line 0 :character 9)))])
>> [server-reply] (id:29) Wed May 10 21:30:33 2023:
>> (:jsonrpc "2.0" :id 29 :result
>>       [])
>> [internal] (id:18) Wed May 10 21:30:39 2023:
>> (:timed-out :textDocument/signatureHelp :id 18 :params
>>         (:textDocument
>>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>          :position
>>          (:line 0 :character 8)))
>> [internal] (id:19) Wed May 10 21:30:39 2023:
>> (:timed-out :textDocument/hover :id 19 :params
>>         (:textDocument
>>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>          :position
>>          (:line 0 :character 8)))
>> [internal] (id:20) Wed May 10 21:30:39 2023:
>> (:timed-out :textDocument/documentHighlight :id 20 :params
>>         (:textDocument
>>          (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>          :position
>>          (:line 0 :character 8)))
>> [client-request] (id:30) Wed May 10 21:30:40 2023:
>> (:jsonrpc "2.0" :id 30 :method "textDocument/codeAction" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 4)
>>         :end
>>         (:line 0 :character 9))
>>        :context
>>        (:diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "E0583" :codeDescription
>>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>>           :source "rustc" :message "file not found for module
>> `thing`\nto create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"" :data
>>           (:rendered "error[E0583]: file not found for module
>> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
>> = help: to create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"\n\n"))
>>          (:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "unresolved-module" :codeDescription
>>           (:href
>> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>>           :source "rust-analyzer" :message "unresolved module, can't
>> find module file: thing.rs, or thing/mod.rs")])))
>> [server-reply] (id:30) Wed May 10 21:30:41 2023:
>> (:jsonrpc "2.0" :id 30 :result
>>       [(:title "Create module at `thing.rs`" :kind "quickfix" :edit
>>            (:documentChanges
>>             [(:kind "create" :uri
>> "file:///home/misha/sweet/repos/tmp/thing.rs")]))
>>        (:title "Create module at `thing/mod.rs`" :kind "quickfix" :edit
>>            (:documentChanges
>>             [(:kind "create" :uri
>> "file:///home/misha/sweet/repos/tmp/thing/mod.rs")]))])
>> [client-request] (id:31) Wed May 10 21:30:43 2023:
>> (:jsonrpc "2.0" :id 31 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 9)))
>> [client-request] (id:32) Wed May 10 21:30:43 2023:
>> (:jsonrpc "2.0" :id 32 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 9)))
>> [client-request] (id:33) Wed May 10 21:30:43 2023:
>> (:jsonrpc "2.0" :id 33 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 9)))
>> [server-reply] (id:31) Wed May 10 21:30:43 2023:
>> (:jsonrpc "2.0" :id 31 :result nil)
>> [server-reply] (id:32) Wed May 10 21:30:43 2023:
>> (:jsonrpc "2.0" :id 32 :result
>>       (:contents
>>        (:kind "plaintext" :value "tmp\n\nmod thing")
>>        :range
>>        (:start
>>         (:line 0 :character 4)
>>         :end
>>         (:line 0 :character 9))))
>> [server-reply] (id:33) Wed May 10 21:30:43 2023:
>> (:jsonrpc "2.0" :id 33 :result
>>       [(:range
>>         (:start
>>          (:line 0 :character 4)
>>          :end
>>          (:line 0 :character 9)))])
>> [client-request] (id:34) Wed May 10 21:31:45 2023:
>> (:jsonrpc "2.0" :id 34 :method "textDocument/codeAction" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :range
>>        (:start
>>         (:line 0 :character 4)
>>         :end
>>         (:line 0 :character 9))
>>        :context
>>        (:diagnostics
>>         [(:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "E0583" :codeDescription
>>           (:href "https://doc.rust-lang.org/error-index.html#E0583")
>>           :source "rustc" :message "file not found for module
>> `thing`\nto create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"" :data
>>           (:rendered "error[E0583]: file not found for module
>> `thing`\n --> main.rs:1:1\n  |\n1 | mod thing;\n  | ^^^^^^^^^^\n  |\n
>> = help: to create the module `thing`, create file \"thing.rs\" or
>> \"thing/mod.rs\"\n\n"))
>>          (:range
>>           (:start
>>            (:line 0 :character 0)
>>            :end
>>            (:line 0 :character 10))
>>           :severity 1 :code "unresolved-module" :codeDescription
>>           (:href
>> "https://rust-analyzer.github.io/manual.html#unresolved-module")
>>           :source "rust-analyzer" :message "unresolved module, can't
>> find module file: thing.rs, or thing/mod.rs")])))
>> [server-reply] (id:34) Wed May 10 21:31:45 2023:
>> (:jsonrpc "2.0" :id 34 :result
>>       [(:title "Create module at `thing.rs`" :kind "quickfix" :edit
>>            (:documentChanges
>>             [(:kind "create" :uri
>> "file:///home/misha/sweet/repos/tmp/thing.rs")]))
>>        (:title "Create module at `thing/mod.rs`" :kind "quickfix" :edit
>>            (:documentChanges
>>             [(:kind "create" :uri
>> "file:///home/misha/sweet/repos/tmp/thing/mod.rs")]))])
>> [client-request] (id:35) Wed May 10 21:38:05 2023:
>> (:jsonrpc "2.0" :id 35 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 10)))
>> [client-request] (id:36) Wed May 10 21:38:05 2023:
>> (:jsonrpc "2.0" :id 36 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 10)))
>> [client-request] (id:37) Wed May 10 21:38:05 2023:
>> (:jsonrpc "2.0" :id 37 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 0 :character 10)))
>> [server-reply] (id:35) Wed May 10 21:38:05 2023:
>> (:jsonrpc "2.0" :id 35 :result nil)
>> [server-reply] (id:36) Wed May 10 21:38:05 2023:
>> (:jsonrpc "2.0" :id 36 :result nil)
>> [server-reply] (id:37) Wed May 10 21:38:05 2023:
>> (:jsonrpc "2.0" :id 37 :result nil)
>> [client-request] (id:38) Wed May 10 21:38:08 2023:
>> (:jsonrpc "2.0" :id 38 :method "textDocument/signatureHelp" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 5 :character 0)))
>> [client-request] (id:39) Wed May 10 21:38:08 2023:
>> (:jsonrpc "2.0" :id 39 :method "textDocument/hover" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 5 :character 0)))
>> [client-request] (id:40) Wed May 10 21:38:08 2023:
>> (:jsonrpc "2.0" :id 40 :method "textDocument/documentHighlight" :params
>>       (:textDocument
>>        (:uri "file:///home/misha/sweet/repos/tmp/main.rs")
>>        :position
>>        (:line 5 :character 0)))
>> [server-reply] (id:38) Wed May 10 21:38:08 2023:
>> (:jsonrpc "2.0" :id 38 :result nil)
>> [server-reply] (id:39) Wed May 10 21:38:08 2023:
>> (:jsonrpc "2.0" :id 39 :result nil)
>> [server-reply] (id:40) Wed May 10 21:38:08 2023:
>> (:jsonrpc "2.0" :id 40 :result nil)
>> ```
>>
>> There's nothing in `M-x eglot-stderr-buffer`
>>
>>
>> In GNU Emacs 29.0.90 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>>  3.24.33, cairo version 1.16.0) of 2023-05-10 built on misha-N552VX
>> Repository revision: 93005cd9dc2bab882e66ac7b81f593cd6c021e43
>> Repository branch: emacs-29
>> Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
>> System Description: Ubuntu 22.04.2 LTS
>>
>> Configured using:
>>  'configure --with-json --with-cairo --with-xwidgets
>>  --prefix=/opt/emacs/ --with-x-toolkit=gtk3 --with-tree-sitter
>>  --with-native-compilation --with-modules'
>>
>> Configured features:
>> CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
>> LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
>> SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11
>> XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>>
>> Important settings:
>>   value of $LANG: en_CA.UTF-8
>>   value of $XMODIFIERS: @im=ibus
>>   locale-coding-system: utf-8-unix
>>
>> Major mode: Rust
>>
>> Minor modes in effect:
>>   eglot-inlay-hints-mode: t
>>   eglot--managed-mode: t
>>   flymake-mode: t
>>   tooltip-mode: t
>>   global-eldoc-mode: t
>>   eldoc-mode: t
>>   show-paren-mode: t
>>   electric-indent-mode: t
>>   mouse-wheel-mode: t
>>   tool-bar-mode: t
>>   menu-bar-mode: t
>>   file-name-shadow-mode: t
>>   global-font-lock-mode: t
>>   font-lock-mode: t
>>   blink-cursor-mode: t
>>   line-number-mode: t
>>   transient-mark-mode: t
>>   auto-composition-mode: t
>>   auto-encryption-mode: t
>>   auto-compression-mode: t
>>
>> Load-path shadows:
>> None found.
>>
>> Features:
>> (shadow sort mail-extr help-fns radix-tree cl-print cus-start cus-load
>> emacsbug message mailcap yank-media puny rfc822 mml mml-sec epa derived
>> epg rfc6068 epg-config gnus-util mm-decode mm-bodies mm-encode
>> mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
>> rfc2045 ietf-drums mm-util mail-prsvr mail-utils files-x find-dired grep
>> misearch multi-isearch vc-git diff-mode easy-mmode vc-dispatcher
>> conf-mode time-date eglot external-completion array filenotify jsonrpc
>> ert pp ewoc debug backtrace find-func xref flymake-proc flymake
>> thingatpt compile text-property-search comint ansi-osc ansi-color ring
>> pcase url-util url-parse auth-source eieio eieio-core password-cache
>> json map url-vars project byte-opt imenu rust-ts-mode c-ts-common
>> treesit dired-aux cl-loaddefs comp comp-cstr warnings icons subr-x rx
>> cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cl-lib dired
>> dired-loaddefs rmc iso-transl tooltip cconv eldoc paren electric
>> uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
>> term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
>> regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
>> prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
>> timer select scroll-bar mouse jit-lock font-lock syntax font-core
>> term/tty-colors frame minibuffer nadvice seq simple cl-generic
>> indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
>> tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
>> romanian slovak czech european ethiopic indian cyrillic chinese
>> composite emoji-zwj charscript charprop case-table epa-hook
>> jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
>> theme-loaddefs faces cus-face macroexp files window text-properties
>> overlay sha1 md5 base64 format env code-pages mule custom widget keymap
>> hashtable-print-readable backquote threads xwidget-internal dbusbind
>> inotify dynamic-setting system-font-setting font-render-setting cairo
>> move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
>> native-compile emacs)
>>
>> Memory information:
>> ((conses 16 156384 23572)
>>  (symbols 48 13274 0)
>>  (strings 32 39865 2264)
>>  (string-bytes 1 1247909)
>>  (vectors 16 27590)
>>  (vector-slots 8 541569 23397)
>>  (floats 8 51 48)
>>  (intervals 56 943 0)
>>  (buffers 984 23))





^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-09-07  9:59   ` Stefan Kangas
@ 2023-09-07 10:39     ` João Távora
  2023-09-07 10:52       ` Felician Nemeth
  0 siblings, 1 reply; 9+ messages in thread
From: João Távora @ 2023-09-07 10:39 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Misha Zharov, Felician Nemeth, 63433

On Thu, Sep 7, 2023 at 10:59 AM Stefan Kangas <stefankangas@gmail.com> wrote:
>
> Felician Nemeth <felician.nemeth@gmail.com> writes:
>
> > In its initializationOptions, Eglot do not state that it supports any
> > resourceOperations.  So the server made a mistake when it sent a
> > "create" kind.
> >
> > Sure, Eglot could handle better the server's mistake or support this
> > feature, but this is primarily a server bug in my opinion.
> >
> > Background:
> > https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEditClientCapabilities
>
> João, any comments here?

Thanks for pinging.

But no, no further comments, I think Felicián's description is
very accurate.

But I would like to see Eglot support this of course.

João





^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails
  2023-09-07 10:39     ` João Távora
@ 2023-09-07 10:52       ` Felician Nemeth
  0 siblings, 0 replies; 9+ messages in thread
From: Felician Nemeth @ 2023-09-07 10:52 UTC (permalink / raw)
  To: João Távora; +Cc: Misha Zharov, Stefan Kangas, 63433

>> > In its initializationOptions, Eglot do not state that it supports any
>> > resourceOperations.  So the server made a mistake when it sent a
>> > "create" kind.

In the meantime, rust-analyzer gained a fix for this issue.  However, it
still offers these code-actions and if the user selects one, then the
server now sends an error like "Client does not support create
capability".  I think this is suboptimal, but understandable.

https://github.com/rust-lang/rust-analyzer/pull/15101





^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-09-07 10:52 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-11  4:49 bug#63433: Eglot "eglot--apply-workspace-edit > documentChanges > create" fails Misha Zharov
2023-05-11  6:35 ` Felician Nemeth
2023-05-11  7:09   ` Misha Zharov
2023-05-12 21:50     ` Richard Stallman
2023-05-12 22:35       ` Gregory Heytings
2023-05-15 22:13         ` Richard Stallman
2023-09-07  9:59   ` Stefan Kangas
2023-09-07 10:39     ` João Távora
2023-09-07 10:52       ` Felician Nemeth

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).