uqbar-project/wollok-lsp-ide

Versión 1.66.x rompió la lectura/actualización de settings

Closed this issue · 1 comments

Eso, hay que refactorizar la lectura y escritura de los settings que fue pisada por los últimos cambios del archivo server.ts de VSC en la versión 1.66.x. Hoy no se está llamando a initializeSettings y settingsChanged, porque de hacerlo te saltaría un mensaje de error

/home/dodain/workspace/wollok-dev/wollok-lsp-ide/server/node_modules/vscode-jsonrpc/lib/common/connection.js:477
                        responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));
                                               ^

ResponseError: Unhandled method workspace/configuration
    at handleResponse (/home/dodain/workspace/wollok-dev/wollok-lsp-ide/server/node_modules/vscode-jsonrpc/lib/common/connection.js:477:48)
    at processMessageQueue (/home/dodain/workspace/wollok-dev/wollok-lsp-ide/server/node_modules/vscode-jsonrpc/lib/common/connection.js:292:17)
    at Immediate.<anonymous> (/home/dodain/workspace/wollok-dev/wollok-lsp-ide/server/node_modules/vscode-jsonrpc/lib/common/connection.js:276:13)
    at processImmediate (node:internal/timers:464:21) {
  code: -32601,
  data: undefined
}

El tema es que esta definición

connection.onDidChangeConfiguration((change) => {

ya no tiene sentido, porque cuando cambiás la definición desde el cliente la referencia a change siempre es null.

Hay que leerla cuando cambia el documento, una paja pero bueno, te asegurás de que el modelo lo pullee el server como quiere Bäumer:

export const validateTextDocument = (connection: Connection) => async (textDocument: TextDocument): Promise<void> => {
  const settings = await getDocumentSettings(connection)
  console.info(JSON.stringify(settings)) // acá viene la data posta de los settings