Skip to content

Editor settings

The editor settings supported by ty's language server, as well as the settings specific to ty's VS Code extension.

disableLanguageServices

Whether to disable the language services for the ty language server like code completion, hover, go to definition, etc.

This is useful if you want to use ty exclusively for type checking and want to use another language server for features like code completion, hover, go to definition, etc.

Default value: false

Type: boolean

Example usage:

{
  "ty.disableLanguageServices": true
}
require('lspconfig').ty.setup({
  settings = {
    ty = {
      disableLanguageServices = true,
    },
  },
})

-- For Neovim 0.11.0 and later:
vim.lsp.config('ty', {
  settings = {
    ty = {
      disableLanguageServices = true,
    },
  },
})
{
  "lsp": {
    "ty": {
      "settings": {
        "ty": {
          "disableLanguageServices": true
        }
      }
    }
  }
}

python.ty.disableLanguageServices

Deprecated

This option has been deprecated. Use ty.disableLanguageServices instead.

Whether to disable the language services that ty provides like code completion, hover, go to definition, etc.

This is useful if you want to use ty exclusively for type checking in combination with another language server for features like code completion, hover, go to definition, etc.

Default value: false

Type: boolean

Example usage:

{
  "python.ty.disableLanguageServices": true
}

diagnosticMode

Determines the scope of the diagnostics reported by the language server.

  • openFilesOnly: Diagnostics are reported only for files that are currently open in the editor.
  • workspace: Diagnostics are reported for all files in the workspace.

Default value: "openFilesOnly"

Type: "workspace" | "openFilesOnly"

Example usage:

{
  "ty.diagnosticMode": "workspace"
}
require('lspconfig').ty.setup({
  settings = {
    ty = {
      diagnosticMode = 'workspace',
    },
  },
})

-- For Neovim 0.11.0 and later:
vim.lsp.config('ty', {
  settings = {
    ty = {
      diagnosticMode = 'workspace',
    },
  },
})
{
  "lsp": {
    "ty": {
      "settings": {
        "ty": {
          "diagnosticMode": "workspace"
        }
      }
    }
  }
}

inlayHints

These settings control the inline hints that ty provides in an editor.

variableTypes

Whether to show the types of variables as inline hints.

Default value: true

Type: boolean

Example usage:

{
  "ty.inlayHints.variableTypes": false
}
require('lspconfig').ty.setup({
  settings = {
    ty = {
      inlayHints = {
        variableTypes = false,
      },
    },
  },
})

-- For Neovim 0.11.0 and later:
vim.lsp.config('ty', {
  settings = {
    ty = {
      inlayHints = {
        variableTypes = false,
      },
    },
  },
})
{
  "lsp": {
    "ty": {
      "settings": {
        "ty": {
          "inlayHints": {
            "variableTypes": false
          }
        }
      }
    }
  }
}

callArgumentNames

Whether to show argument names in call expressions as inline hints.

Default value: true

Type: boolean

Example usage:

{
  "ty.inlayHints.callArgumentNames": false
}
require('lspconfig').ty.setup({
  settings = {
    ty = {
      inlayHints = {
        callArgumentNames = false,
      },
    },
  },
})

-- For Neovim 0.11.0 and later:
vim.lsp.config('ty', {
  settings = {
    ty = {
      inlayHints = {
        callArgumentNames = false,
      },
    },
  },
})
{
  "lsp": {
    "ty": {
      "settings": {
        "ty": {
          "inlayHints": {
            "callArgumentNames": false
          }
        }
      }
    }
  }
}

experimental

These settings control the experimental language features that ty provides in an editor.

rename

Whether to enable the experimental support for renaming symbols in the editor.

Default value: false

Type: boolean

Example usage:

{
  "ty.experimental.rename": true
}
require('lspconfig').ty.setup({
  settings = {
    ty = {
      experimental = {
        rename = true,
      },
    },
  },
})

-- For Neovim 0.11.0 and later:
vim.lsp.config('ty', {
  settings = {
    ty = {
      experimental = {
        rename = true,
      },
    },
  },
})
{
  "lsp": {
    "ty": {
      "settings": {
        "ty": {
          "experimental": {
            "rename": true
          }
        }
      }
    }
  }
}

VS Code specific

The following settings are specific to ty's VS Code extension.

importStrategy

Strategy for loading the ty executable.

  • fromEnvironment finds ty in the environment, falling back to the bundled version
  • useBundled uses the version bundled with the extension

Default value: "fromEnvironment"

Type: "fromEnvironment" | "useBundled"

Example usage:

{
  "ty.importStrategy": "useBundled"
}

interpreter

A list of paths to Python interpreters. Even though this is a list, only the first interpreter is used.

The interpreter path is used to find the ty executable when ty.importStrategy is set to fromEnvironment.

Default value: []

Type: string[]

Example usage:

{
  "ty.interpreter": ["/home/user/.local/bin/python"]
}

path

A list of path to ty executables.

The extension uses the first executable that exists. This setting takes precedence over the ty.importStrategy setting.

Default value: []

Type: string[]

Example usage:

{
  "ty.path": ["/home/user/.local/bin/ty"]
}

trace.server

The detail level at which messages between the language server and the editor (client) are logged.

This setting is useful for debugging issues with the language server. Refer to the troubleshooting guide in ty's VS Code extension for more information.

Default value: "off"

Type: "off" | "messages" | "verbose"

Example usage:

{
  "ty.trace.server": "messages"
}

Initialization options

The following settings are required when ty is initialized in an editor. These settings are static so changing them requires restarting the editor to take effect.

For VS Code users, these settings are defined in the ty.* namespace as usual, but for other editors, they would need to be provided in a separate field of the configuration that corresponds to the initialization options. Refer to the examples below for how to set these options in different editors.

logFile

Path to the file to which the language server writes its log messages. By default, ty writes log messages to stderr.

Default value: null

Type: string

Example usage:

{
  "ty.logFile": "/path/to/ty.log"
}
require('lspconfig').ty.setup({
  init_options = {
    logFile = '/path/to/ty.log',
  },
})

-- For Neovim 0.11.0 and later:
vim.lsp.config('ty', {
  init_options = {
    logFile = '/path/to/ty.log',
  },
})
{
  "lsp": {
    "ty": {
      "initialization_options": {
        "logFile": "/path/to/ty.log"
      }
    }
  }
}

logLevel

The log level to use for the language server.

Default value: "info"

Type: "trace" | "debug" | "info" | "warn" | "error"

Example usage:

{
  "ty.logLevel": "debug"
}
require('lspconfig').ty.setup({
  init_options = {
    logLevel = 'debug',
  },
})

-- For Neovim 0.11.0 and later:
vim.lsp.config('ty', {
  init_options = {
    logLevel = 'debug',
  },
})
{
  "lsp": {
    "ty": {
      "initialization_options": {
        "logLevel": "debug"
      }
    }
  }
}