Skip to content

Conversation

@ndonfris
Copy link
Owner

nightly release 1.1.1-pre.5 changes

  • still using LspDocument, but now parameterized TextDocuments with our LspDocument wrapper.
    • changes below are located in src/server.ts
    • documents.onDidOpen(async ({ document: LspDocument }) => {})
    • documents.onDidChangeContent(({ document }) => {})
    • documents.onDidClose(({ document }) => {})
  • Diagnostic support improved significantly
    • Improves Diagnostic server handler performance by sending analysis to background event
    • fish_lsp_max_diagnostics support added to Diagnostic handler
    • added "command not found" 7001 diagnostic support
    • Debounces requests for long running analysis in large files
    • env variable set -gx fish_lsp_disabled_handlers diagnostic will completely disable the server from calculating Diagnostic[] entries that would be sent on documents.onDidChangeContent
  • Updated docs for 1.1.1-pre.5

Links

Install

ndonfris and others added 14 commits November 21, 2025 20:09
…lize()` + 100% coverage

- 100% test coverage for `src/utils/file-operations.ts` in
`tests/file-operations.test.ts`

- `expandNormalize()` method added to `SyncFileHelper` for expanding
paths and then performing `path.normalize(expanded)`

- updated `package.json` scripts `yarn test:*`/`yarn test` so that
`USER=test_user` inside `tests/*.test.ts`
… unknown command

- `src/utils/progress-notification.ts` was refactored to barebones
builder class for passing around & initializing `progress` reporter

- `7001` diagnostic code for warning user of `unknown command` was added

---
perf(src/server.ts): speed up server
- server now directly calls `connection.sendDiagnostic()` for displaying
  diagnostics in the client (displays much faster)
- `src/diagnostics/cache.ts` no longer debounces intervals, just
  directly caches diagnostics for the current document
- `server.didChangeTextDocument()` no longer shows any `progress`
  reporting. However, `server.didOpenTextDocument()` kept its progress
  reporting

---
docs(src/analyze.ts): added thorough ts-doc comments
- `src/snippets/fishlspEnvVariables.json` adds 7001 diagnostic to env
  variables
- other docs added like `src/diagnostics/error-codes.ts` for 7001

---
test: removed old diagnostic cache test cases
…ound process

- fix(src/config.ts): `config.fish_lsp_show_client_popups` defaults to
`true` now

- fix(src/utils/progress-notification.ts): allows for mutliple progress
instances to be specified at once while keeping track of which ones
belong to who

- fix(src/server.ts): Major changes to the `server.onInitialized()`
logic and behavior. Now correctly displays progress during server
startup process a single time, and correctly includes both
`progress.report(percentage, message)` in its output

- fix(src/utils/workspace-manager.ts): removed synchronous calls from
`WorkspaceManager.handleOpenDocument()` with commments
…rmal server logs

`fish-lsp info --time-startup` correctly expands both
`$__fish_config_dir` and `$__fish_data_dir` to their actual locations.

It also correctly treats the --time-startup operation like command:
```sh
nvim {$__fish_config_dir,$__fish_data_dir}/config.fish
```
would behave.

To 1:1 match the normal `fish-lsp start` logs, pass
`--use-workspace=$__fish_data_dir` to the `--time-startup` switch.

Matches server/logging behavior on branch:
feat/debounce-progress-notification
…ync token` creation

* we use a queue to store the `progress.begin()` `progress.report()`
  `progress.end()` requests that could be passed to the
  `async ProgressNotification()` that might not be initailized yet if
  the client starts up slow.

* the queue is flushed after the `async token` has succesfully made it
  back from the client, and meaning the client is succesfully initalized

* uses `connection.sendNotification()` instead of wrapper class the
  `vscode-languageserver` provides.

-----
@todo: chore(src/utils/workspace.ts): probably could be simplified in
-----       how it handles the single workspace mode
- `config.fish_lsp_single_workspace_support` variable now is used for
considering if our startup background analysis should be limited to the
current open workspace or `fish_lsp_all_indexed_workspaces`.

- `fish_lsp_single_workspace_support` previously limited definition
request fallback behavior by (if it was enabled) it would prevent the
server from trying to use fish child_process to resolve a command's
path. Now, fish_lsp_single_workspace_support does not effect this
fallback operation at all.
- `docs/CHANGELOG.md` for 1.1.1-pre.3

- removed `config.fish_lsp_semantic_handler_type` env variable
…te.ts

docs(src/snippets/fishlspEnvVariables.json): improved `fish_lsp_max_diagnostics` description

chore: lint comments

docs: update README.md `fish-lsp env` output
@ndonfris ndonfris added this to the v1.1.1 milestone Nov 22, 2025
@ndonfris ndonfris added the enhancement New feature or request label Nov 22, 2025
@ndonfris ndonfris marked this pull request as ready for review November 22, 2025 02:48
@ndonfris ndonfris self-assigned this Nov 22, 2025
fix: lints for `1.1.1-pre.5`

chore: update deps

- bumped `[email protected]`
@ndonfris ndonfris force-pushed the refactor/vscode-langaugeserver-textdocument.dependency branch from 788f003 to f1b3c92 Compare November 22, 2025 03:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants