*vim-lsp-settings.txt*
                                                            *vim-lsp-settings*

           -------------------------------------------------------
             Auto configurations for Language Server for vim-lsp
           -------------------------------------------------------

Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Repository: https://github.com/mattn/vim-lsp-settings
License: MIT

==============================================================================
CONTENTS                                           *vim-lsp-settings-contents*
  1. Introduction..............................|vim-lsp-settings-introduction|
  2. Installation..............................|vim-lsp-settings-installation|
  3. Install Language Server...............................|:LspInstallServer|
  4. Uninstall Language Server...........................|:LspUninstallServer|
  5. Configuration............................|vim-lsp-settings-configuration|

==============================================================================
INTRODUCTION                                     *vim-lsp-settings-introduction*

vim-lsp-settings is a plugin to improve vim-lsp.

* Easy to install Language Servers.
* Easy to uninstall Language Servers.
* Auto-configuration for Language Servers.
* Extra useful commands.

==============================================================================
INSTALLATION                                     *vim-lsp-settings-installation*

Manual installation:
  Copy the files to your .vim directory (_vimfiles on Windows).

 Run :PluginInstall

NeoBundle: add below to .vimrc
>
 NeoBundle 'mattn/vim-lsp-settings'
<
 Run :NeoBundleInstall

vim-plug: add below to .vimrc
>
 Plug 'mattn/vim-lsp-settings'
<
 Run :PlugInstall


==============================================================================
INSTALL LANGUAGE SERVER                                      *:LspInstallServer*

To install Language Server, you need to open the source file. The filetype
should be set correctly. Then |:LspInstallServer|. |:LspInstallServer| can be
taken an argument for the name of Language Server installable.
>
 :LspInstallServer pyls
<
If you want to update Language Server, please do |:LspInstallServer| again.

==============================================================================
UNINSTALL LANGUAGE SERVER                                  *:LspUninstallServer*

To uninstall Language Server, do |:LspUninstallServer|.
>
 :LspUninstallServer pyls
<
==============================================================================
CONFIGURATION                                   *vim-lsp-settings-configuration*

vim-lsp-settings have two way configurations. One way is write with Vim
script. You can modify configuration like below:
>
 let g:lsp_settings = {
 \  'r-languageserver': {
 \    'cmd': ['c:\Program Files\R\R-3.6.2\bin\R.exe', '--slave', '-e', 'languageserver::run()'],
 \  },
 \  'sqls1': {
 \    'initialization_options': function('s:sqls_selector'),
 \   },
 \  'perl-languageserver': {
 \    'disabled': 0,
 \   },
 \  'efm-langserver': {
 \    'blocklist': ['', 'twitvim'],
 \    'disabled': 0,
 \   },
 \  'yaml-language-server': {
 \    'workspace_config': {
 \      'yaml': {
 \        'schemas': {
 \          'https://mattn.github.io/efm-langserver/schema.json': '/efm-langserver/config.yaml'
 \        },
 \        'completion': v:true,
 \        'hover': v:true,
 \        'validate': v:true,
 \      }
 \    }
 \  },
 \}

<
Tips: If you want to only add/replace arguments for the server,
>
 let g:lsp_settings = {
 \  'some-langserver': {
 \    'args': ['foo', 'bar', 'baz'],
 \  },
 \}
<

If you want to add extra schemas for yaml-language-server or
json-language-server, do |:LspSettingsLocalEdit| or |:LspSettingsGlobalEdit|
and put schemas property like below:

>
 {
   "yaml-language-server": {
     "schemas": [
       {
         "fileMatch":["my-config.yaml"],
         "url": "https://example.com/my-config-schema.json"
       },
       {
         "fileMatch":["your-config.yaml"],
         "url": "https://example.com/your-config-schema.json"
       }
     ]
   }
 }
<

                                           *g:lsp_settings_enable_suggestions*
g:lsp_settings_enable_suggestions
  Default: 1
  Set 0 only if you'd like to opt-out "Please do :LspInstallServer to enable
  Language Server" suggestion messages.

                                                  *g:lsp_settings_servers_dir*
g:lsp_settings_servers_dir
  Default:
      %LOCALAPPDATA%\vim-lsp-settings\servers (Windows)
      $HOME/.local/share/vim-lsp-settings/servers (Non-Windows)
      $XDG_DATA_HOME/vim-lsp-settings/servers ($XDG_DATA_HOME defined Non-Windows)
  When value defined, store server file under these directory.

                                          *g:lsp_settings_global_settings_dir*
g:lsp_settings_global_settings_dir
  Default:
      %LOCALAPPDATA%\vim-lsp-settings (Windows)
      $HOME/.local/share/vim-lsp-settings (Non-Windows)
      $XDG_DATA_HOME/vim-lsp-settings ($XDG_DATA_HOME defined Non-Windows)
  When value defined, store global settings under these directory.

                                              *g:lsp_settings_deny_local_keys*
g:lsp_settings_deny_local_keys
  Default: ['cmd']
  vim-lsp-settings load local settings from .vim-lsp-settings but it might be
  dangerous when the git repository contains the directory same named.
  This variable is specified name of settings like 'cmd' to drop items in the
  settings.

                                                 *g:lsp_settings_filetype_xxx*
g:lsp_settings_filetype_xxx
  xxx is a filetype name like typescript with: >
    g:lsp_settings_filetype_typescript
<
  This variable can specify default language server. If the variable is a
  |string|, vim-lsp-settings load the langage server name. If the variable is
  a |list|, all of the language server names are loaded.  If the variable have
  one element and type of the element is |function|, vim-lsp-settings call it
  and the result is evaluated lazy.

:LspSettingsLocalEdit [root]                           *:LspSettingsLocalEdit*
  Edit local settings. Accepts an optional explicit [root] directory that
  contains the .vim-lsp-settings config directory.
  [root] is path to the vim-lsp-settings plugin if omitted.

:LspSettingsGlobalEdit                                *:LspSettingsGlobalEdit*
  Edit global settings.


You can use the :LspSettingsStatus command to inspect the current config.


:LspSettingsStatus                                        *:LspSettingsStatus*
  Print a status dump of information about the language server configured for
  the current buffer.

==============================================================================
vim:tw=78:ts=8:ft=help:norl:noet:fen:fdl=0:
