Repository: go
Issue: x/tools/gopls: gopls does not reset workspace/configuration if missing from the client
Labels: gopls,Tools,BugReport

### gopls version

master head, following experiment is based on commit `6efe0f4b404b25e02999c3e34db08771f855fc28`

### go env

```shell
NA
```


### What did you do?

Locate semantic token information from gopls of a string or a number. Toggle feature `noSemanticString` or `noSemanticNumber`.

### What did you see happen?

By default, number's token info is returned from the gopls, you can see `semantic token type = number`.

<img width="1312" alt="image" src="https://github.com/user-attachments/assets/64c3f1b6-e468-4320-91fd-07cd07093cbf" />

Then if I set `"ui.noSemanticNumber": true,` the semantic token info goes away. WAI

<img width="1283" alt="image" src="https://github.com/user-attachments/assets/c25bfa6d-186d-4557-a0b1-011974ce91e1" />

If I set the `"ui.noSemanticNumber": false,`, the semantic token info comes back. WAI

<img width="1262" alt="image" src="https://github.com/user-attachments/assets/df841c55-3ffc-4872-b75d-7ea9a48a7246" />

Set it to `"ui.noSemanticNumber": true,`, the token info goes away. WAI. Then if I comment this out. What I expect is, the semantic token information will come back. Because, no setting means default value `"ui.noSemanticNumber": false,`.



### What did you expect to see?

<img width="1318" alt="image" src="https://github.com/user-attachments/assets/e037a0be-513b-49fa-a31f-bf66b8ce6bc8" />

As a result it does not come back. 

### Editor and settings

_No response_

### Logs

I will focus on the last two `workspace/configuration` logs

Where I set it to true
```
[Trace - 5:26:49 PM] Sending response 'workspace/configuration - (14)'. Processing request took 0ms
Result: [
    {
        "ui.semanticTokens": true,
        "ui.noSemanticNumber": true,
        "ui.inlayhint.hints": {
            "assignVariableTypes": false,
            "compositeLiteralFields": false,
            "compositeLiteralTypes": false,
            "constantValues": false,
            "functionTypeParameters": false,
            "parameterNames": false,
            "rangeVariableTypes": false
        },
        "ui.vulncheck": "Off",
        "linkifyShowMessage": true
    }
]
```
Where I comment it out
```
[Trace - 5:27:44 PM] Sending response 'workspace/configuration - (16)'. Processing request took 0ms
Result: [
    {
        "ui.semanticTokens": true,
        "ui.inlayhint.hints": {
            "assignVariableTypes": false,
            "compositeLiteralFields": false,
            "compositeLiteralTypes": false,
            "constantValues": false,
            "functionTypeParameters": false,
            "parameterNames": false,
            "rangeVariableTypes": false
        },
        "ui.vulncheck": "Off",
        "linkifyShowMessage": true
    }
]
```


I think what happened is, when gopls saw `"ui.noSemanticNumber": X,` in the json, gopls will apply this `X` in memory. WAI.
But when gopls saw `"ui.noSemanticNumber": X,` is missing in the json, gopls do nothing. In this case, gopls should set the `ui.noSemanticNumber = false`  because false is the default value.

@findleyr