Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Can´t establish a success session with gopls #118

Open
Kortivex opened this issue Apr 23, 2024 · 2 comments
Open

Can´t establish a success session with gopls #118

Kortivex opened this issue Apr 23, 2024 · 2 comments

Comments

@Kortivex
Copy link

Expected Behavior

We want to establish a new WebSocket connection to gopls with the ace-linter client.

Actual Behavior

Establish the connection with the WebSocket using a custom implementation or goplsws and the session is wrongly established and the linting for example not work properly.

Steps to Reproduce the Problem

  1. Try to connect to gopls (WebSocket):
import {LanguageClientConfig} from "ace-linters/types/types/language-service";
import {servFeatures} from "./config";

export let servers: LanguageClientConfig[] = [
   {
       module: () => import("ace-linters/build/language-client"),
       modes: "golang",
       type: "socket",
       socket: new WebSocket("ws://localhost:3030"),
       features: servFeatures,
       initializationOptions: {}
   },
]
export var golangContent = `
// You can edit this code!
// Click here and start typing.
package main

import "fmt"

func main() {
  fmt.Println("Hello, 世界")ssss
}

`;
import "ace-code/esm-resolver";
import {AceLanguageClient} from "ace-linters/build/ace-language-client";
import {addFormatCommand, createEditorWithLSP} from "../../editor/creation";
import {golangContent} from "../../content-examples/golang-example";
import {LanguageProvider} from "ace-linters";
import {servers} from "./servers";

let modes = [
    {
        name: "golang",
        mode: "ace/mode/golang",
        content: golangContent
    },
]

let languageProviders: LanguageProvider = AceLanguageClient.for(servers);

let i = 0;
for (let mode of modes) {
    createEditorWithLSP(mode, i, languageProviders);
    i++;
}

addFormatCommand(languageProviders);
import * as ace from "ace-code";
import "ace-code/src/ext/language_tools";
import event from "ace-code/src/lib/event";
import {HashHandler} from "ace-code/src/keyboard/hash_handler";
import keyUtil from "ace-code/src/lib/keys";
import * as theme from "ace-code/src/theme/textmate";
import type {LanguageProvider} from "ace-linters";

export function createEditorWithLSP(mode: any, i: number, languageProvider: LanguageProvider): ace.Ace.Editor {
   let el: HTMLDivElement = document.createElement("div");
   let modeName: HTMLParagraphElement = createModeNameText(el, mode.name);
   let closeButton: HTMLSpanElement = createCloseButton(el);
   let editorContainer: HTMLDivElement = document.createElement("div");
   editorContainer.setAttribute("id", "container" + i);
   editorContainer.style.height = "600px";
   el.appendChild(editorContainer);
   el.style.width = "90%";
   el.style.float = "left";
   document.body.appendChild(el);

   let editor: ace.Ace.Editor = ace.edit("container" + i, {
       mode: mode.mode,
       value: mode.content,
       relativeLineNumbers: false,
       enableAutoIndent: true,
       enableBasicAutocompletion: true,
       enableLiveAutocompletion: true,
       enableSnippets: true,
       theme: theme,
       customScrollbar: true,
   });

   editor.setTheme("ace/theme/cloud_editor_dark");

   languageProvider.registerEditor(editor);

   let options = mode.options ?? {};
   languageProvider.setSessionOptions(editor.session, options);

   closeButton.onclick = (): void => {
       languageProvider.closeDocument(editor.session);
       editor.destroy();
       editor.container.remove();
       modeName.remove();
       closeButton.remove();
   }
   return editor;
}

export function createCloseButton(el: HTMLDivElement): HTMLSpanElement {
   let closeButton: HTMLSpanElement = document.createElement("span");
   closeButton.innerText = "\u00D7";
   closeButton.style.cursor = "pointer";
   el.appendChild(closeButton);
   return closeButton;
}

export function createModeNameText(el: HTMLDivElement, name: string): HTMLParagraphElement {
   let modeName: HTMLParagraphElement = document.createElement("p");
   modeName.innerText = name;
   modeName.style.margin = "0";
   modeName.style.paddingRight = "10px";
   modeName.style.float = "left";
   el.appendChild(modeName);
   return modeName;
}

export function addFormatCommand(languageProvider: LanguageProvider): void {
   let menuKb = new HashHandler([
       {
           bindKey: "Ctrl-Shift-B",
           name: "format",
           exec: function (): void {
               languageProvider.format();
           }
       }
   ]);
   event.addCommandKeyListener(window, function (e, hashId, keyCode): void {
       let keyString = keyUtil.keyCodeToString(keyCode);
       let command = menuKb.findKeyCommand(hashId, keyString);
       if (command) {
           command.exec();
           e.preventDefault();
       }
   });
}
  1. Connection to gopls established.
  2. Start to change/edit the file in the browser with the ace client.
  3. Start to see errors when the ace client sends those changes:
  • The main error:
JSON Server: [Error - Received] 10:03:37.907 AM #1 JSON RPC parse error: DocumentURI scheme is not 'file': session1.golang
{"jsonrpc":"2.0","error":{"code":-32700,"message":"JSON RPC parse error: DocumentURI scheme is not 'file': session1.golang"},"id":1}
  • Full log:
MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 0,
    _buffers: [],
    _compressed: false,
    _payloadLength: 1088,
    _mask: <Buffer 52 b8 9a f9>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"capabilities":{"textDocument":{"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"synchronization":{"dynamicRegistration":true,"willSave":false,"didSave":false,"willSaveWaitUntil":false},"formatting":{"dynamicRegistration":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":false,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":false,"preselectSupport":false},"contextSupport":false},"signatureHelp":{"signatureInformation":{"documentationFormat":["markdown","plaintext"],"activeParameterSupport":true}},"documentHighlight":{"dynamicRegistration":true},"semanticTokens":{"multilineTokenSupport":false,"overlappingTokenSupport":false,"tokenTypes":[],"tokenModifiers":[],"formats":["relative"],"requests":{"full":{"delta":false},"range":true},"augmentsSyntaxTokens":true}},"workspace":{"didChangeConfiguration":{"dynamicRegistration":true}}},"initializationOptions":{},"processId":null,"rootUri":"","workspaceFolders":null}}'
}
MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 712,
    _buffers: [Array],
    _compressed: false,
    _payloadLength: 86,
    _mask: <Buffer 2d e0 7e 1c>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}}'
}
MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 404,
    _buffers: [Array],
    _compressed: false,
    _payloadLength: 300,
    _mask: <Buffer c5 46 97 54>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"session1.golang","version":1,"languageId":"golang","text":"\\n// You can edit this code!\\n// Click here and start typing.\\npackage main\\n\\nimport \\"fmt\\"\\n\\nfunc main() {\\n  fmt.Println(\\"Hello, 世界\\")ssss\\n\n\\n"}}}'
}
MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 296,
    _buffers: [Array],
    _compressed: false,
    _payloadLength: 102,
    _mask: <Buffer 07 c0 2a 94>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","method":"textDocument/didClose","params":{"textDocument":{"uri":"session1.golang"}}}'
}
MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 0,
    _buffers: [],
    _compressed: false,
    _payloadLength: 288,
    _mask: <Buffer 7c c9 a5 53>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"session1.golang","languageId":"golang","text":"\\n// You can edit this code!\\n// Click here and start typing.\\npackage main\\n\\nimport \\"fmt\\"\\n\\nfunc main() {\\n  fmt.Println(\\"Hello, 世界\\")ssss\\n}\\n\\n"}}}'
}
JSON Server: [Trace - 10:03:36.462 AM] Sending request 'initialize - (0)'.
Params: {"capabilities":{"textDocument":{"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"synchronization":{"dynamicRegistration":true,"willSave":false,"didSave":false,"willSaveWaitUntil":false},"formatting":{"dynamicRegistration":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":false,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":false,"preselectSupport":false},"contextSupport":false},"signatureHelp":{"signatureInformation":{"documentationFormat":["markdown","plaintext"],"activeParameterSupport":true}},"documentHighlight":{"dynamicRegistration":true},"semanticTokens":{"multilineTokenSupport":false,"overlappingTokenSupport":false,"tokenTypes":[],"tokenModifiers":[],"formats":["relative"],"requests":{"full":{"delta":false},"range":true},"augmentsSyntaxTokens":true}},"workspace":{"didChangeConfiguration":{"dynamicRegistration":true}}},"initializationOptions":{},"processId":274438,"rootUri":"","workspaceFolders":null}


[Trace - 10:03:36.464 AM] Received response 'initialize - (0)' in 2ms.
Result: {"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{}},"completionProvider":{"triggerCharacters":["."]},"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",","]},"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":true,"codeLensProvider":{},"documentLinkProvider":{},"workspaceSymbolProvider":true,"documentFormattingProvider":true,"renameProvider":true,"foldingRangeProvider":true,"selectionRangeProvider":true,"executeCommandProvider":{"commands":["gopls.add_dependency","gopls.add_import","gopls.add_telemetry_counters","gopls.apply_fix","gopls.change_signature","gopls.check_upgrades","gopls.diagnose_files","gopls.edit_go_directive","gopls.fetch_vulncheck_result","gopls.gc_details","gopls.generate","gopls.go_get_package","gopls.list_imports","gopls.list_known_packages","gopls.maybe_prompt_for_telemetry","gopls.mem_stats","gopls.regenerate_cgo","gopls.remove_dependency","gopls.reset_go_mod_diagnostics","gopls.run_go_work_command","gopls.run_govulncheck","gopls.run_tests","gopls.start_debugging","gopls.start_profile","gopls.stop_profile","gopls.test","gopls.tidy","gopls.toggle_gc_details","gopls.update_go_sum","gopls.upgrade_dependency","gopls.vendor","gopls.views","gopls.workspace_stats"]},"callHierarchyProvider":true,"semanticTokensProvider":{"legend":{"tokenTypes":[],"tokenModifiers":[]},"range":true,"full":true},"inlayHintProvider":{},"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":"workspace/didChangeWorkspaceFolders"}}},"serverInfo":{"name":"gopls","version":"{\"GoVersion\":\"go1.22.2\",\"Path\":\"golang.org/x/tools/gopls\",\"Main\":{\"Path\":\"golang.org/x/tools/gopls\",\"Version\":\"v0.15.2\",\"Sum\":\"h1:4JKt4inO8JaFW3l/Fh9X1k/5JQn+iUOpdc4/Lpi0mOs=\",\"Replace\":null},\"Deps\":[{\"Path\":\"github.com/BurntSushi/toml\",\"Version\":\"v1.2.1\",\"Sum\":\"h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=\",\"Replace\":null},{\"Path\":\"github.com/google/go-cmp\",\"Version\":\"v0.6.0\",\"Sum\":\"h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\",\"Replace\":null},{\"Path\":\"golang.org/x/exp/typeparams\",\"Version\":\"v0.0.0-20221212164502-fae10dda9338\",\"Sum\":\"h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y=\",\"Replace\":null},{\"Path\":\"golang.org/x/mod\",\"Version\":\"v0.15.0\",\"Sum\":\"h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=\",\"Replace\":null},{\"Path\":\"golang.org/x/sync\",\"Version\":\"v0.6.0\",\"Sum\":\"h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=\",\"Replace\":null},{\"Path\":\"golang.org/x/telemetry\",\"Version\":\"v0.0.0-20240209200032-7b892fcb8a78\",\"Sum\":\"h1:vcVnuftN4J4UKLRcgetjzfU9FjjgXUUYUc3JhFplgV4=\",\"Replace\":null},{\"Path\":\"golang.org/x/text\",\"Version\":\"v0.14.0\",\"Sum\":\"h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=\",\"Replace\":null},{\"Path\":\"golang.org/x/tools\",\"Version\":\"v0.18.1-0.20240311201521-78fbdeb61842\",\"Sum\":\"h1:No0LMXYFkp3j4oEsPdtY8LUQz33gu79Rm9DE+izMeGQ=\",\"Replace\":null},{\"Path\":\"golang.org/x/vuln\",\"Version\":\"v1.0.1\",\"Sum\":\"h1:KUas02EjQK5LTuIx1OylBQdKKZ9jeugs+HiqO5HormU=\",\"Replace\":null},{\"Path\":\"honnef.co/go/tools\",\"Version\":\"v0.4.6\",\"Sum\":\"h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8=\",\"Replace\":null},{\"Path\":\"mvdan.cc/gofumpt\",\"Version\":\"v0.6.0\",\"Sum\":\"h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo=\",\"Replace\":null},{\"Path\":\"mvdan.cc/xurls/v2\",\"Version\":\"v2.5.0\",\"Sum\":\"h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8=\",\"Replace\":null}],\"Settings\":[{\"Key\":\"-buildmode\",\"Value\":\"exe\"},{\"Key\":\"-compiler\",\"Value\":\"gc\"},{\"Key\":\"DefaultGODEBUG\",\"Value\":\"httplaxcontentlength=1,httpmuxgo121=1,panicnil=1,tls10server=1,tlsrsakex=1,tlsunsafeekm=1\"},{\"Key\":\"CGO_ENABLED\",\"Value\":\"1\"},{\"Key\":\"CGO_CFLAGS\",\"Value\":\"-I/opt/altair-libs -O0 -g\"},{\"Key\":\"CGO_CPPFLAGS\",\"Value\":\"\"},{\"Key\":\"CGO_CXXFLAGS\",\"Value\":\"\"},{\"Key\":\"CGO_LDFLAGS\",\"Value\":\"-L/opt/altair-libs -llmx-altair -laljdk\"},{\"Key\":\"GOARCH\",\"Value\":\"amd64\"},{\"Key\":\"GOOS\",\"Value\":\"linux\"},{\"Key\":\"GOAMD64\",\"Value\":\"v1\"}],\"Version\":\"v0.15.2\"}"}}


[Trace - 10:03:36.464 AM] Sending notification 'workspace/didChangeConfiguration'.
Params: {"settings":{}}


[Trace - 10:03:36.464 AM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"session1.golang","version":1,"languageId":"golang","text":"\n// You can edit this code!\n// Click here and start typing.\npackage main\n\nimport \"fmt\"\n\nfunc main() {\n  fmt.Println(\"Hello, 世界\")ssss\n}\n\n"}}


[Trace - 10:03:36.465 AM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"session1.golang"}}


[Trace - 10:03:36.465 AM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"session1.golang","languageId":"golang","text":"\n// You can edit this code!\n// Click here and start typing.\npackage main\n\nimport \"fmt\"\n\nfunc main() {\n  fmt.Println(\"Hello, 世界\")ssss\n}\n\n"}}



{"jsonrpc":"2.0","result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{}},"completionProvider":{"triggerCharacters":["."]},"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",","]},"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":true,"codeLensProvider":{},"documentLinkProvider":{},"workspaceSymbolProvider":true,"documentFormattingProvider":true,"renameProvider":true,"foldingRangeProvider":true,"selectionRangeProvider":true,"executeCommandProvider":{"commands":["gopls.add_dependency","gopls.add_import","gopls.add_telemetry_counters","gopls.apply_fix","gopls.change_signature","gopls.check_upgrades","gopls.diagnose_files","gopls.edit_go_directive","gopls.fetch_vulncheck_result","gopls.gc_details","gopls.generate","gopls.go_get_package","gopls.list_imports","gopls.list_known_packages","gopls.maybe_prompt_for_telemetry","gopls.mem_stats","gopls.regenerate_cgo","gopls.remove_dependency","gopls.reset_go_mod_diagnostics","gopls.run_go_work_command","gopls.run_govulncheck","gopls.run_tests","gopls.start_debugging","gopls.start_profile","gopls.stop_profile","gopls.test","gopls.tidy","gopls.toggle_gc_details","gopls.update_go_sum","gopls.upgrade_dependency","gopls.vendor","gopls.views","gopls.workspace_stats"]},"callHierarchyProvider":true,"semanticTokensProvider":{"legend":{"tokenTypes":[],"tokenModifiers":[]},"range":true,"full":true},"inlayHintProvider":{},"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":"workspace/didChangeWorkspaceFolders"}}},"serverInfo":{"name":"gopls","version":"{\"GoVersion\":\"go1.22.2\",\"Path\":\"golang.org/x/tools/gopls\",\"Main\":{\"Path\":\"golang.org/x/tools/gopls\",\"Version\":\"v0.15.2\",\"Sum\":\"h1:4JKt4inO8JaFW3l/Fh9X1k/5JQn+iUOpdc4/Lpi0mOs=\",\"Replace\":null},\"Deps\":[{\"Path\":\"github.com/BurntSushi/toml\",\"Version\":\"v1.2.1\",\"Sum\":\"h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=\",\"Replace\":null},{\"Path\":\"github.com/google/go-cmp\",\"Version\":\"v0.6.0\",\"Sum\":\"h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\",\"Replace\":null},{\"Path\":\"golang.org/x/exp/typeparams\",\"Version\":\"v0.0.0-20221212164502-fae10dda9338\",\"Sum\":\"h1:2O2DON6y3XMJiQRAS1UWU+54aec2uopH3x7MAiqGW6Y=\",\"Replace\":null},{\"Path\":\"golang.org/x/mod\",\"Version\":\"v0.15.0\",\"Sum\":\"h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=\",\"Replace\":null},{\"Path\":\"golang.org/x/sync\",\"Version\":\"v0.6.0\",\"Sum\":\"h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=\",\"Replace\":null},{\"Path\":\"golang.org/x/telemetry\",\"Version\":\"v0.0.0-20240209200032-7b892fcb8a78\",\"Sum\":\"h1:vcVnuftN4J4UKLRcgetjzfU9FjjgXUUYUc3JhFplgV4=\",\"Replace\":null},{\"Path\":\"golang.org/x/text\",\"Version\":\"v0.14.0\",\"Sum\":\"h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=\",\"Replace\":null},{\"Path\":\"golang.org/x/tools\",\"Version\":\"v0.18.1-0.20240311201521-78fbdeb61842\",\"Sum\":\"h1:No0LMXYFkp3j4oEsPdtY8LUQz33gu79Rm9DE+izMeGQ=\",\"Replace\":null},{\"Path\":\"golang.org/x/vuln\",\"Version\":\"v1.0.1\",\"Sum\":\"h1:KUas02EjQK5LTuIx1OylBQdKKZ9jeugs+HiqO5HormU=\",\"Replace\":null},{\"Path\":\"honnef.co/go/tools\",\"Version\":\"v0.4.6\",\"Sum\":\"h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8=\",\"Replace\":null},{\"Path\":\"mvdan.cc/gofumpt\",\"Version\":\"v0.6.0\",\"Sum\":\"h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo=\",\"Replace\":null},{\"Path\":\"mvdan.cc/xurls/v2\",\"Version\":\"v2.5.0\",\"Sum\":\"h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8=\",\"Replace\":null}],\"Settings\":[{\"Key\":\"-buildmode\",\"Value\":\"exe\"},{\"Key\":\"-compiler\",\"Value\":\"gc\"},{\"Key\":\"DefaultGODEBUG\",\"Value\":\"httplaxcontentlength=1,httpmuxgo121=1,panicnil=1,tls10server=1,tlsrsakex=1,tlsunsafeekm=1\"},{\"Key\":\"CGO_ENABLED\",\"Value\":\"1\"},{\"Key\":\"CGO_CFLAGS\",\"Value\":\"-I/opt/altair-libs -O0 -g\"},{\"Key\":\"CGO_CPPFLAGS\",\"Value\":\"\"},{\"Key\":\"CGO_CXXFLAGS\",\"Value\":\"\"},{\"Key\":\"CGO_LDFLAGS\",\"Value\":\"-L/opt/altair-libs -llmx-altair -laljdk\"},{\"Key\":\"GOARCH\",\"Value\":\"amd64\"},{\"Key\":\"GOOS\",\"Value\":\"linux\"},{\"Key\":\"GOAMD64\",\"Value\":\"v1\"}],\"Version\":\"v0.15.2\"}"}},"id":0}
MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 0,
    _buffers: [],
    _compressed: false,
    _payloadLength: 52,
    _mask: <Buffer 81 0c 0a 55>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","method":"initialized","params":{}}'
}
MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 0,
    _buffers: [],
    _compressed: false,
    _payloadLength: 86,
    _mask: <Buffer d7 82 8c 0f>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}}'
}
JSON Server: [Trace - 10:03:36.580 AM] Sending notification 'initialized'.
Params: {}



JSON Server: [Trace - 10:03:36.581 AM] Sending notification 'workspace/didChangeConfiguration'.
Params: {"settings":{}}



MessageEvent {
[Symbol(kTarget)]: <ref *1> WebSocket {
    _events: [Object: null prototype] {
    close: [Array],
    message: [Function],
    error: [Function]
    },
    _eventsCount: 3,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: <Buffer >,
    _closeTimer: null,
    _extensions: {},
    _paused: false,
    _protocol: '',
    _readyState: 1,
    _receiver: Receiver {
    _events: [Object],
    _writableState: [WritableState],
    _maxListeners: undefined,
    _allowSynchronousEvents: false,
    _binaryType: 'nodebuffer',
    _extensions: {},
    _isServer: true,
    _maxPayload: 104857600,
    _skipUTF8Validation: false,
    _bufferedBytes: 0,
    _buffers: [],
    _compressed: false,
    _payloadLength: 155,
    _mask: <Buffer 53 79 0e 4d>,
    _fragmented: 0,
    _masked: true,
    _fin: true,
    _opcode: 1,
    _totalPayloadLength: 0,
    _messageLength: 0,
    _fragments: [],
    _errored: false,
    _loop: false,
    _state: 6,
    _eventsCount: 6,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(websocket)]: [Circular *1]
    },
    _sender: Sender {
    _extensions: {},
    _socket: [Socket],
    _firstFragment: true,
    _compress: false,
    _bufferedBytes: 0,
    _deflating: false,
    _queue: []
    },
    _socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _closeAfterHandlingError: false,
    _events: [Object],
    _readableState: [ReadableState],
    _writableState: [WritableState],
    allowHalfOpen: true,
    _maxListeners: undefined,
    _eventsCount: 4,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Server],
    _server: [Server],
    parser: null,
    on: [Function (anonymous)],
    addListener: [Function (anonymous)],
    prependListener: [Function: prependListener],
    setEncoding: [Function: socketSetEncoding],
    _paused: false,
    timeout: 0,
    [Symbol(async_id_symbol)]: 75,
    [Symbol(kHandle)]: [TCP],
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: null,
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(shapeMode)]: true,
    [Symbol(kCapture)]: false,
    [Symbol(kSetNoDelay)]: true,
    [Symbol(kSetKeepAlive)]: false,
    [Symbol(kSetKeepAliveInitialDelay)]: 0,
    [Symbol(kBytesRead)]: 0,
    [Symbol(kBytesWritten)]: 0,
    [Symbol(websocket)]: [Circular *1]
    },
    _autoPong: true,
    _isServer: true,
    [Symbol(shapeMode)]: false,
    [Symbol(kCapture)]: false
},
[Symbol(kType)]: 'message',
[Symbol(kData)]: '{"jsonrpc":"2.0","id":1,"method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"session1.golang"},"position":{"line":8,"character":30}}}'
}
JSON Server: [Trace - 10:03:37.907 AM] Sending request 'textDocument/documentHighlight - (1)'.
Params: {"textDocument":{"uri":"session1.golang"},"position":{"line":8,"character":30}}



JSON Server: [Error - Received] 10:03:37.907 AM #1 JSON RPC parse error: DocumentURI scheme is not 'file': session1.golang



{"jsonrpc":"2.0","error":{"code":-32700,"message":"JSON RPC parse error: DocumentURI scheme is not 'file': session1.golang"},"id":1}

Specifications

  • Versions:
    • ace-code: v1.33.0
    • ace-linters: v1.2.0
    • vscode-ws-jsonrpc: v3.3.1,
    • node.js: v20.12.2
    • npm: v10.5.0
    • gopls: v0.15.2
  • Platform:
    • OS: Kubuntu 23.10 - Kernel v6.5.0

Can be a misconfiguration or bad server connection establishment?

@mkslanc
Copy link
Owner

mkslanc commented Apr 23, 2024

@Kortivex, right... My goplsws repo was a bit outdated, so I've updated it now. Also, I have written a small guide for using gopls with ace-linters. It should work now, but I can't promise it will work perfectly, especially since I don't have a good configuration for the Go server. In the future, I plan to provide a way to set normal paths for documents in linters itself, so it will work with any WebSocket server/bridge.

@Kortivex
Copy link
Author

Thanks so much for your help, I will wait impatiently for the way to set normal paths for documents in linters.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants