yegappan / lsp

Language Server Protocol (LSP) plugin for Vim9
MIT License
458 stars 49 forks source link

Not seeing diagnostics from eslint #472

Closed trev-dev closed 5 months ago

trev-dev commented 5 months ago

I am able to get diagnostics from Volar, but not Eslint in a vue file. I get both with Neovim. Same project root.

Eslint also doesn't seem to work on its own in a JavaScript file

Vim: 9.1

Plugin Config

## LSP {{{
packadd lsp

def GetEnvString(varname: string): string
  var value = getenv(varname)
  return value == v:null ? varname : value
enddef

var javaData = getenv('HOME')
  .. '/.cache/jdtls'
  .. fnamemodify(getcwd(), ':p:gs?/?-?:s?-??:s?-$??')

# Where an LSP server may be can vary from system to system.  Use environment
# variables to declare them.
var lspServers = [
  {
    name: 'volar',
    filetype: ['vue'],
    path: GetEnvString('VOLAR'),
    args: ['--stdio'],
    initializationOptions: {
      typescript: {
        tsdk: GetEnvString('TSLIB')
      }
    }
  },
  {
    name: 'eslint',
    filetype: ['javascript', 'vue'],
    path: GetEnvString('ESLINTSERVER'),
    args: ['--stdio']
  }
]

g:LspOptionsSet({
  ignoreMissingServer: true,
  diagSignErrorText: '»',
  diagSignInfoText: '»',
  diagSignHintText: '»',
  diagSignWarningText: '»',
  showInlayHints: true
})

g:LspAddServer(lspServers)

# }}}

Language-Servers

Filetype: 'vue'
Server Name: 'volar'
Server Path: '/nix/store/p03ximkhadkdm09l4ll01vjakqfxca9a-volar-1.6.5/bin/vue-language-server'
Status: Running

Filetype: 'vue'
Server Name: 'eslint'
Server Path: '/nix/store/xfa2a7mvp2n8f80n2cbypfvz61g13hhl-vscode-langservers-extracted-4.8.0/bin/vscode-eslint-language-server'
Status: Running

eslint settings (from package.json)

  "eslintConfig": {
    "root": true,
    "env": {
      "es6": true,
      "node": true
    },
    "extends": [
      "eslint:recommended",
      "plugin:vue/vue3-recommended"
    ],
    "globals": {
      "Atomics": "readonly",
      "SharedArrayBuffer": "readonly",
      "_": false
    },
    "rules": {
      "no-console": "off",
      "eol-last": [
        "error",
        "always"
      ],
      "indent": [
        "error",
        2
      ],
      "quotes": [
        "error",
        "single"
      ],
      "semi": [
        "error",
        "always"
      ]
    }
  },

Edit: I was able to get some diagnostic errors from the client via :LspServer show messages:

03/11/24 22:01:48: [Error]: TypeError: Cannot read properties of null (reading 'workingDirectory')
    at /nix/store/xfa2a7mvp2n8f80n2cbypfvz61g13hhl-vscode-langservers-extracted-4.8.0/lib/node_modules/vscode-langservers-extracted/lib/eslint-language-server/eslintServer.js:1:20208

Looks like we may not be able to find the root.