想问一下有没有在windows 10 下使用lsp的小伙伴?我的感觉有问题, 打开一个cpp文件,M-x lsp-mode 感觉是正常的,但M-x lsp报错
Debugger entered--Lisp error: (wrong-number-of-arguments #<subr json-serialize> 5)
json-serialize((:jsonrpc "2.0" :method "initialize" :params (:processId nil :rootPath "d:/code/VC++/vsproject/helloworld" :clientInfo (:name "emacs" :version "GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)\n of 2018-06-20") :rootUri "file:///d%3A/code/VC%2B%2B/vsproject/helloworld" :capabilities ((workspace (workspaceEdit (documentChanges . t) (resourceOperations . ["create" "rename" "delete"])) (applyEdit . t) (symbol (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]))) (executeCommand (dynamicRegistration . :json-false)) (didChangeWatchedFiles (dynamicRegistration . t)) (workspaceFolders . t) (configuration . t)) (textDocument (declaration (linkSupport . t)) (definition (linkSupport . t)) (implementation (linkSupport . t)) (typeDefinition (linkSupport . t)) (synchronization (willSave . t) (didSave . t) (willSaveWaitUntil . t)) (documentSymbol (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])) (hierarchicalDocumentSymbolSupport . t)) (formatting (dynamicRegistration . t)) (rangeFormatting (dynamicRegistration . t)) (rename (dynamicRegistration . t) (prepareSupport . t)) (codeAction (dynamicRegistration . t) (isPreferredSupport . t) (codeActionLiteralSupport (codeActionKind (valueSet . ["" "quickfix" "refactor" "refactor.extract" "refactor.inline" "refactor.rewrite" "source" "source.organizeImports"])))) (completion (completionItem (snippetSupport . t) (documentationFormat . ["markdown"]) (resolveAdditionalTextEditsSupport . t)) (contextSupport . t)) (signatureHelp (signatureInformation (parameterInformation (labelOffsetSupport . t)))) (documentLink (dynamicRegistration . t) (tooltipSupport . t)) (hover (contentFormat . ["markdown" "plaintext"])) (foldingRange (dynamicRegistration . t)) (callHierarchy (dynamicRegistration . :json-false)) (publishDiagnostics (relatedInformation . t) (tagSupport (valueSet . [1 2])) (versionSupport . t))) (window (workDoneProgress . t))) :initializationOptions nil :workDoneToken "1") :id 1) :null-object nil :false-object :json-false)
lsp--make-message((:jsonrpc "2.0" :method "initialize" :params (:processId nil :rootPath "d:/code/VC++/vsproject/helloworld" :clientInfo (:name "emacs" :version "GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)\n of 2018-06-20") :rootUri "file:///d%3A/code/VC%2B%2B/vsproject/helloworld" :capabilities ((workspace (workspaceEdit (documentChanges . t) (resourceOperations . ["create" "rename" "delete"])) (applyEdit . t) (symbol (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]))) (executeCommand (dynamicRegistration . :json-false)) (didChangeWatchedFiles (dynamicRegistration . t)) (workspaceFolders . t) (configuration . t)) (textDocument (declaration (linkSupport . t)) (definition (linkSupport . t)) (implementation (linkSupport . t)) (typeDefinition (linkSupport . t)) (synchronization (willSave . t) (didSave . t) (willSaveWaitUntil . t)) (documentSymbol (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])) (hierarchicalDocumentSymbolSupport . t)) (formatting (dynamicRegistration . t)) (rangeFormatting (dynamicRegistration . t)) (rename (dynamicRegistration . t) (prepareSupport . t)) (codeAction (dynamicRegistration . t) (isPreferredSupport . t) (codeActionLiteralSupport (codeActionKind (valueSet . ["" "quickfix" "refactor" "refactor.extract" "refactor.inline" "refactor.rewrite" "source" "source.organizeImports"])))) (completion (completionItem (snippetSupport . t) (documentationFormat . ["markdown"]) (resolveAdditionalTextEditsSupport . t)) (contextSupport . t)) (signatureHelp (signatureInformation (parameterInformation (labelOffsetSupport . t)))) (documentLink (dynamicRegistration . t) (tooltipSupport . t)) (hover (contentFormat . ["markdown" "plaintext"])) (foldingRange (dynamicRegistration . t)) (callHierarchy (dynamicRegistration . :json-false)) (publishDiagnostics (relatedInformation . t) (tagSupport (valueSet . [1 2])) (versionSupport . t))) (window (workDoneProgress . t))) :initializationOptions nil :workDoneToken "1") :id 1))
#f(compiled-function (workspace) #<bytecode 0x6a91b5>)(#s(lsp--workspace :ewoc nil :server-capabilities nil :registered-server-capabilities nil :root "d:/code/VC++/vsproject/helloworld" :client #s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil) :host-root nil :proc #<process clangd> :cmd-proc #<process clangd> :buffers (#<buffer main.cpp>) :semantic-highlighting-faces nil :semantic-highlighting-modifier-faces nil :extra-client-capabilities nil :status starting :metadata #<hash-table equal 0/65 0x6aa8ed> :watches #<hash-table equal 0/65 0x6aabc5> :workspace-folders nil :last-id 0 :status-string nil :shutdown-action nil :diagnostics #<hash-table equal 0/65 0x6aac69> :work-done-tokens #<hash-table equal 0/65 0x6aa865>))
mapc(#f(compiled-function (workspace) #<bytecode 0x6a91b5>) (#s(lsp--workspace :ewoc nil :server-capabilities nil :registered-server-capabilities nil :root "d:/code/VC++/vsproject/helloworld" :client #s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil) :host-root nil :proc #<process clangd> :cmd-proc #<process clangd> :buffers (#<buffer main.cpp>) :semantic-highlighting-faces nil :semantic-highlighting-modifier-faces nil :extra-client-capabilities nil :status starting :metadata #<hash-table equal 0/65 0x6aa8ed> :watches #<hash-table equal 0/65 0x6aabc5> :workspace-folders nil :last-id 0 :status-string nil :shutdown-action nil :diagnostics #<hash-table equal 0/65 0x6aac69> :work-done-tokens #<hash-table equal 0/65 0x6aa865>)))
seq-do(#f(compiled-function (workspace) #<bytecode 0x6a91b5>) (#s(lsp--workspace :ewoc nil :server-capabilities nil :registered-server-capabilities nil :root "d:/code/VC++/vsproject/helloworld" :client #s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil) :host-root nil :proc #<process clangd> :cmd-proc #<process clangd> :buffers (#<buffer main.cpp>) :semantic-highlighting-faces nil :semantic-highlighting-modifier-faces nil :extra-client-capabilities nil :status starting :metadata #<hash-table equal 0/65 0x6aa8ed> :watches #<hash-table equal 0/65 0x6aabc5> :workspace-folders nil :last-id 0 :status-string nil :shutdown-action nil :diagnostics #<hash-table equal 0/65 0x6aac69> :work-done-tokens #<hash-table equal 0/65 0x6aa865>)))
lsp--send-request-async((:jsonrpc "2.0" :method "initialize" :params (:processId nil :rootPath "d:/code/VC++/vsproject/helloworld" :clientInfo (:name "emacs" :version "GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)\n of 2018-06-20") :rootUri "file:///d%3A/code/VC%2B%2B/vsproject/helloworld" :capabilities ((workspace (workspaceEdit (documentChanges . t) (resourceOperations . ["create" "rename" "delete"])) (applyEdit . t) (symbol (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]))) (executeCommand (dynamicRegistration . :json-false)) (didChangeWatchedFiles (dynamicRegistration . t)) (workspaceFolders . t) (configuration . t)) (textDocument (declaration (linkSupport . t)) (definition (linkSupport . t)) (implementation (linkSupport . t)) (typeDefinition (linkSupport . t)) (synchronization (willSave . t) (didSave . t) (willSaveWaitUntil . t)) (documentSymbol (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])) (hierarchicalDocumentSymbolSupport . t)) (formatting (dynamicRegistration . t)) (rangeFormatting (dynamicRegistration . t)) (rename (dynamicRegistration . t) (prepareSupport . t)) (codeAction (dynamicRegistration . t) (isPreferredSupport . t) (codeActionLiteralSupport (codeActionKind (valueSet . ["" "quickfix" "refactor" "refactor.extract" "refactor.inline" "refactor.rewrite" "source" "source.organizeImports"])))) (completion (completionItem (snippetSupport . t) (documentationFormat . ["markdown"]) (resolveAdditionalTextEditsSupport . t)) (contextSupport . t)) (signatureHelp (signatureInformation (parameterInformation (labelOffsetSupport . t)))) (documentLink (dynamicRegistration . t) (tooltipSupport . t)) (hover (contentFormat . ["markdown" "plaintext"])) (foldingRange (dynamicRegistration . t)) (callHierarchy (dynamicRegistration . :json-false)) (publishDiagnostics (relatedInformation . t) (tagSupport (valueSet . [1 2])) (versionSupport . t))) (window (workDoneProgress . t))) :initializationOptions nil :workDoneToken "1") :id 1) #f(compiled-function (response) #<bytecode 0x6a982d>) detached nil nil nil nil)
lsp-request-async("initialize" (:processId nil :rootPath "d:/code/VC++/vsproject/helloworld" :clientInfo (:name "emacs" :version "GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)\n of 2018-06-20") :rootUri "file:///d%3A/code/VC%2B%2B/vsproject/helloworld" :capabilities ((workspace (workspaceEdit (documentChanges . t) (resourceOperations . ["create" "rename" "delete"])) (applyEdit . t) (symbol (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]))) (executeCommand (dynamicRegistration . :json-false)) (didChangeWatchedFiles (dynamicRegistration . t)) (workspaceFolders . t) (configuration . t)) (textDocument (declaration (linkSupport . t)) (definition (linkSupport . t)) (implementation (linkSupport . t)) (typeDefinition (linkSupport . t)) (synchronization (willSave . t) (didSave . t) (willSaveWaitUntil . t)) (documentSymbol (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])) (hierarchicalDocumentSymbolSupport . t)) (formatting (dynamicRegistration . t)) (rangeFormatting (dynamicRegistration . t)) (rename (dynamicRegistration . t) (prepareSupport . t)) (codeAction (dynamicRegistration . t) (isPreferredSupport . t) (codeActionLiteralSupport (codeActionKind (valueSet . ["" "quickfix" "refactor" "refactor.extract" "refactor.inline" "refactor.rewrite" "source" "source.organizeImports"])))) (completion (completionItem (snippetSupport . t) (documentationFormat . ["markdown"]) (resolveAdditionalTextEditsSupport . t)) (contextSupport . t)) (signatureHelp (signatureInformation (parameterInformation (labelOffsetSupport . t)))) (documentLink (dynamicRegistration . t) (tooltipSupport . t)) (hover (contentFormat . ["markdown" "plaintext"])) (foldingRange (dynamicRegistration . t)) (callHierarchy (dynamicRegistration . :json-false)) (publishDiagnostics (relatedInformation . t) (tagSupport (valueSet . [1 2])) (versionSupport . t))) (window (workDoneProgress . t))) :initializationOptions nil :workDoneToken "1") #f(compiled-function (response) #<bytecode 0x6a982d>) :mode detached)
lsp--start-workspace(#s(lsp-session :folders ("d:/code/VC++/vsproject/helloworld" "d:/code/python" "d:/code/iar/iarwork/source" "e:/gitrep/Machine-Learning-From-Scratch") :folders-blacklist nil :server-id->folders #<hash-table equal 0/65 0x6a6d91> :folder->servers #<hash-table equal 1/65 0x6a8c8d> :metadata #<hash-table equal 0/65 0x6a8f65>) #s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil) "d:/code/VC++/vsproject/helloworld" nil)
lsp--start-connection(#s(lsp-session :folders ("d:/code/VC++/vsproject/helloworld" "d:/code/python" "d:/code/iar/iarwork/source" "e:/gitrep/Machine-Learning-From-Scratch") :folders-blacklist nil :server-id->folders #<hash-table equal 0/65 0x6a6d91> :folder->servers #<hash-table equal 1/65 0x6a8c8d> :metadata #<hash-table equal 0/65 0x6a8f65>) #s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil) "d:/code/VC++/vsproject/helloworld")
#f(compiled-function (client) #<bytecode 0x6a7815>)(#s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil))
mapcar(#f(compiled-function (client) #<bytecode 0x6a7815>) (#s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil)))
-map(#f(compiled-function (client) #<bytecode 0x6a7815>) (#s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil)))
lsp--ensure-lsp-servers(#s(lsp-session :folders ("d:/code/VC++/vsproject/helloworld" "d:/code/python" "d:/code/iar/iarwork/source" "e:/gitrep/Machine-Learning-From-Scratch") :folders-blacklist nil :server-id->folders #<hash-table equal 0/65 0x6a6d91> :folder->servers #<hash-table equal 1/65 0x6a8c8d> :metadata #<hash-table equal 0/65 0x6a8f65>) (#s(lsp--client :language-id nil :add-on? nil :new-connection (:connect #f(compiled-function (filter sentinel name environment-fn) #<bytecode 0x3efaf9>) :test\? #f(compiled-function () #<bytecode 0x3efb11>)) :ignore-regexps nil :ignore-messages nil :notification-handlers #<hash-table equal 0/65 0x3efb1d> :request-handlers #<hash-table equal 0/65 0x3f0a0d> :response-handlers #<hash-table eql 0/65 0x3f0d09> :prefix-function nil :uri-handlers #<hash-table equal 0/65 0x3f0fe1> :action-handlers #<hash-table equal 0/65 0x3f1001> :major-modes (c-mode c++-mode objc-mode) :activation-fn nil :priority -1 :server-id clangd :multi-root nil :initialization-options nil :custom-capabilities nil :library-folders-fn nil :before-file-open-fn nil :initialized-fn nil :remote? nil :completion-in-comments? nil :path->uri-fn nil :uri->path-fn nil :environment-fn nil :after-open-fn nil :async-request-handlers #<hash-table equal 0/65 0x3f0819> :download-server-fn nil :download-in-progress? nil :buffers nil)) "d:/code/VC++/vsproject/helloworld" nil)
lsp--try-project-root-workspaces(nil nil)
lsp(nil)
funcall-interactively(lsp nil)
call-interactively(lsp record nil)
command-execute(lsp record)
execute-extended-command(nil "lsp" "lsp")
funcall-interactively(execute-extended-command nil "lsp" "lsp")
call-interactively(execute-extended-command nil nil)
command-execute(execute-extended-command)
不知如何解决?网上找了半天没找到 lsp-log 显示已经连接到clangd server了 另外有没有小伙伴可以解释一下 lsp,lsp-mode它们之间的区别是什么?