---
url: /reference/@cssdoc/language-server/classes/CssDocLanguageService.md
---
# Class: CssDocLanguageService

Defined in: [servers/language-server/src/service.ts:423](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L423)

The language service. Construct with the component index (rebuild it when the CSS changes).

## Constructors

### Constructor

```ts
new CssDocLanguageService(index, severities?): CssDocLanguageService;
```

Defined in: [servers/language-server/src/service.ts:432](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L432)

#### Parameters

##### index

[`CssDocIndex`](../../index/classes/CssDocIndex.md)

##### severities?

[`RuleSeverities`](../../cssdoc/type-aliases/RuleSeverities.md) = `DEFAULT_RULE_SEVERITIES`

#### Returns

`CssDocLanguageService`

## Methods

### codeActions()

```ts
codeActions(diagnostics, path?): LspCodeAction[];
```

Defined in: [servers/language-server/src/service.ts:1060](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L1060)

Quick fixes for the given diagnostics (replace a deprecated modifier with its canonical).

#### Parameters

##### diagnostics

[`LspDiagnostic`](../interfaces/LspDiagnostic.md)\[]

##### path?

`string`

#### Returns

[`LspCodeAction`](../interfaces/LspCodeAction.md)\[]

***

### completions()

```ts
completions(
   text, 
   position, 
   path?, 
   languageId?
): LspCompletion[];
```

Defined in: [servers/language-server/src/service.ts:517](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L517)

Completions at a position: cssdoc `@tags` inside a doc comment (while authoring a stylesheet),
`var(--…)` custom properties, or classes/modifiers in a `class`/`className` attribute.

#### Parameters

##### text

`string`

##### position

[`LspPosition`](../interfaces/LspPosition.md)

##### path?

`string`

##### languageId?

`string`

#### Returns

[`LspCompletion`](../interfaces/LspCompletion.md)\[]

***

### definition()

```ts
definition(
   text, 
   position, 
   path?, 
   languageId?
): LspLocation | undefined;
```

Defined in: [servers/language-server/src/service.ts:786](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L786)

Definition at a position — the CSS rule for the thing under the cursor. Mirrors [hover](#hover): it
jumps from a class *usage* (`class`/`className`, `clsx(…)`, Vue `:class`, Svelte `class:name`) to the
rule, and from a selector/property authored in a stylesheet or embedded CSS to its own rule.

#### Parameters

##### text

`string`

##### position

[`LspPosition`](../interfaces/LspPosition.md)

##### path?

`string`

##### languageId?

`string`

#### Returns

[`LspLocation`](../interfaces/LspLocation.md) | `undefined`

***

### diagnostics()

```ts
diagnostics(
   text, 
   languageId?, 
   path?
): LspDiagnostic[];
```

Defined in: [servers/language-server/src/service.ts:860](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L860)

Diagnostics for a document. For CSS the stylesheet is linted in place (doc-comment hygiene plus the
registered-property value checks); for other languages, class-attribute usage is checked against
the configured index.

#### Parameters

##### text

`string`

##### languageId?

`string`

##### path?

`string`

#### Returns

[`LspDiagnostic`](../interfaces/LspDiagnostic.md)\[]

***

### hover()

```ts
hover(
   text, 
   position, 
   path?, 
   languageId?
): LspHover | undefined;
```

Defined in: [servers/language-server/src/service.ts:589](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L589)

Hover at a position. Resolves to a documentation card in three places: while authoring a stylesheet
(a selector/property in a `.css` file), while authoring embedded CSS (inside a `<style>` block, a
`css` template, or a Markdown \`\`\`css fence — resolved against the projected CSS, which shares the
source's offsets), and over a class *usage* (`class`/`className`, `clsx(…)`, Vue `:class`, Svelte
`class:name`).

#### Parameters

##### text

`string`

##### position

[`LspPosition`](../interfaces/LspPosition.md)

##### path?

`string`

##### languageId?

`string`

#### Returns

[`LspHover`](../interfaces/LspHover.md) | `undefined`

***

### setHoverDetail()

```ts
setHoverDetail(
   detail, 
   sections?, 
   sectionOrder?
): void;
```

Defined in: [servers/language-server/src/service.ts:437](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L437)

Set the component-hover detail level (`compact` | `full` | `custom`), section map, and order.

#### Parameters

##### detail

[`HoverDetail`](../../cssdoc/type-aliases/HoverDetail.md)

##### sections?

[`HoverSections`](../../cssdoc/type-aliases/HoverSections.md) = `{}`

##### sectionOrder?

[`HoverSectionOrder`](../../cssdoc/type-aliases/HoverSectionOrder.md)

#### Returns

`void`

***

### setIndex()

```ts
setIndex(index): void;
```

Defined in: [servers/language-server/src/service.ts:448](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L448)

Replace the component index (single-scope path; e.g. after the CSS files change).

#### Parameters

##### index

[`CssDocIndex`](../../index/classes/CssDocIndex.md)

#### Returns

`void`

***

### setNaming()

```ts
setNaming(naming): void;
```

Defined in: [servers/language-server/src/service.ts:458](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L458)

Set the name-case conventions (single-scope path).

#### Parameters

##### naming

[`NamingRules`](../../cssdoc/interfaces/NamingRules.md)

#### Returns

`void`

***

### setRuleSeverities()

```ts
setRuleSeverities(severities): void;
```

Defined in: [servers/language-server/src/service.ts:453](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L453)

Set the per-rule severities (single-scope path).

#### Parameters

##### severities

[`RuleSeverities`](../../cssdoc/type-aliases/RuleSeverities.md)

#### Returns

`void`

***

### setScopes()

```ts
setScopes(scopes): void;
```

Defined in: [servers/language-server/src/service.ts:463](https://github.com/thedannywahl/cssdoc/blob/main/servers/language-server/src/service.ts#L463)

Replace all config scopes (multi-config path; one per governing `cssdoc.json`).

#### Parameters

##### scopes

`ConfigScope`\[]

#### Returns

`void`
