aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* build(deps): bump regex from 1.8.1 to 1.8.2 (#7119)dependabot[bot]2023-05-23
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump pulldown-cmark from 0.9.2 to 0.9.3 (#7118)dependabot[bot]2023-05-23
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat(languages): recognise `Cargo.lock` as TOMLyvt2023-05-22
|
* Recognise XAML files as XML (#7083)Chris2023-05-20
|
* fix(docs): Remove `config` from language configuration docs (#7082)LeoniePhiline2023-05-20
|
* Add command to merge non-consecutive ranges (#7053)Szabin2023-05-19
| | | | | | | | | | | * Add command for merging non-consecutive ranges * Add `merge_selections` command to book * Simplify `merge_ranges` Heeded the advice of @the-mikedavis to stop iterating over all ranges and simply merge the first and the last range, as the invariants of `Selection` guarantee that the list of ranges is always sorted and never empty. * Clarify doc comment of `merge_ranges`
* fix off-by-one git-commit rulers (#7072)Charles Hall2023-05-19
| | | Characters should maximally reside *inside* the ruler, not on top of it.
* nix: add overlay for convenient package usage (#7078)Yt2023-05-19
|
* Merge pull request #2507 from Philipp-M/multiple-language-serversBlaž Hrastnik2023-05-19
|\ | | | | Add support for multiple language servers per language
| * Rebase cleanup/fixes and use lsp::CompletionItem in item_to_transaction directlyPhilipp Mildenberger2023-05-18
| |
| * Clarify language-servers documentation for mergeable LSP features ↵Philipp Mildenberger2023-05-18
| | | | | | | | (`diagnostics`, `code-action`, `completion`, `document-symbols` and `workspace-symbols`)
| * Sort language servers table in languages.toml and rename language server 'R' ↵Philipp Mildenberger2023-05-18
| | | | | | | | to 'r'
| * Apply all review suggestions (doc_id -> id, error message, unnecessary if)Philipp Mildenberger2023-05-18
| | | | | | | | Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * Simplify gutter diagnostics rendering by using partition_point instead of ↵Philipp Mildenberger2023-05-18
| | | | | | | | | | | | binary search Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * Some minor clarity/cosmetic improvementsPhilipp Mildenberger2023-05-18
| | | | | | | | Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * Add function `Editor::language_server_by_id` and refactor/simplify related ↵Philipp Mildenberger2023-05-18
| | | | | | | | code, also don't 'crash' in completion menu if language_server somehow disappeared
| * Remove TODO comment in helix_lsp::Registry::restart and add doc-comment on ↵Philipp Mildenberger2023-05-18
| | | | | | | | top of function instead
| * Reorder id generation for Clients to stay close to the old behaviorPhilipp Mildenberger2023-05-18
| |
| * Reduce boilerplate by 'use lsp::*' in Client::supports_feature, and remove ↵Philipp Mildenberger2023-05-18
| | | | | | | | TODO comment
| * Fix lsp_restart across multiple different document scopes (language servers ↵Philipp Mildenberger2023-05-18
| | | | | | | | weren't restarted, if not of the same scope id), and fix some smaller rebase issues
| * Fix crash with filtered diagnostics in gutter (e.g. when diagnostics aren't ↵Philipp Mildenberger2023-05-18
| | | | | | | | visible)
| * Remove offset_encoding in CodeActionOrCommandItem, as it can be retrieved on ↵Philipp Mildenberger2023-05-18
| | | | | | | | demand
| * Maintain language servers TOML array order in `doc.language_servers`Philipp Mildenberger2023-05-18
| |
| * Filter language servers also by capabilities in ↵Philipp Mildenberger2023-05-18
| | | | | | | | | | | | | | | | | | `doc.language_servers_with_feature` * Add `helix_lsp::client::Client::supports_feature(&self, LanguageServerFeature)` * Extend `doc.language_servers_with_feature` to use this method as filter as well * Add macro `language_server_with_feature!` to reduce boilerplate for non-mergeable language server requests (like goto-definition) * Refactored most of the `find_map` code to use the either the macro or filter directly via `doc.language_servers_with_feature`
| * Fix docgen againPhilipp Mildenberger2023-05-18
| |
| * Filter out already seen language servers in requests that can be sent to ↵Philipp Mildenberger2023-05-18
| | | | | | | | multiple language servers (code-action, completion, symbol pickers)
| * Optimize gutter diagnostics and simplify shown_diagnosticsPhilipp Mildenberger2023-05-18
| |
| * Use let else instead of variable and fix some error messagesPhilipp Mildenberger2023-05-18
| | | | | | | | Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * Remove offset_encoding in CompletionItemPhilipp Mildenberger2023-05-18
| |
| * Refactor doc language servers to a HashMap, and the config to use a Vec to ↵Philipp Mildenberger2023-05-18
| | | | | | | | retain order
| * Remove symbol picker is_empty checkPhilipp Mildenberger2023-05-18
| |
| * Simplify 'lsp_stop' commandPhilipp Mildenberger2023-05-18
| |
| * Fix docgen and lsp-stop documentationPhilipp Mildenberger2023-05-18
| |
| * Remove boilerplate in the goto methods by generically composing functionsPhilipp Mildenberger2023-05-18
| |
| * Format/fix language docs a bitPhilipp Mildenberger2023-05-18
| |
| * Refactor doc.shown_diagnostics to avoid an extra HashSetPhilipp Mildenberger2023-05-18
| | | | | | | | Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * Add method doc.supports_language_server for better readabilityPhilipp Mildenberger2023-05-18
| |
| * Simplify Display implementation for LanguageServerFeaturePhilipp Mildenberger2023-05-18
| |
| * Refactored doc.language_servers and doc.language_servers_with_feature to ↵Philipp Mildenberger2023-05-18
| | | | | | | | | | | | return an iterator and refactor LanguageServerFeature handling to a HashMap (language server name maps to features) Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * Use DoubleEndedIterator instead of collect to Vec for reversingPhilipp Mildenberger2023-05-18
| | | | | | | | Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * Fix error messages when no language server is availablePhilipp Mildenberger2023-05-18
| | | | | | | | Co-authored-by: Skyler Hawthorne <skyler@dead10ck.com>
| * Simplify Display implementation of LanguageServerFeaturePhilipp Mildenberger2023-05-18
| | | | | | | | Co-authored-by: Ivan Tham <pickfire@riseup.net>
| * Fix sorting issues of the editor wide diagnostics and apply diagnostics ↵Philipp Mildenberger2023-05-18
| | | | | | | | | | | | related review suggestions Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
| * str instead of StringPhilipp Mildenberger2023-05-18
| |
| * Remove unnecessary completion support check (likely an artifact)Philipp Mildenberger2023-05-18
| |
| * Fix issue with ltex-ls, filtering params is not what we want herePhilipp Mildenberger2023-05-18
| |
| * Fix hardcoded offset_encodingPhilipp Mildenberger2023-05-18
| |
| * Fix some lints/docgen hintsPhilipp Mildenberger2023-05-18
| |
| * Fix 'WorkspaceConfiguration' request with empty configuration section stringsPhilipp Mildenberger2023-05-18
| |
| * Adds support for multiple language servers per language.Philipp Mildenberger2023-05-18
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Language Servers are now configured in a separate table in `languages.toml`: ```toml [langauge-server.mylang-lsp] command = "mylang-lsp" args = ["--stdio"] config = { provideFormatter = true } [language-server.efm-lsp-prettier] command = "efm-langserver" [language-server.efm-lsp-prettier.config] documentFormatting = true languages = { typescript = [ { formatCommand ="prettier --stdin-filepath ${INPUT}", formatStdin = true } ] } ``` The language server for a language is configured like this (`typescript-language-server` is configured by default): ```toml [[language]] name = "typescript" language-servers = [ { name = "efm-lsp-prettier", only-features = [ "format" ] }, "typescript-language-server" ] ``` or equivalent: ```toml [[language]] name = "typescript" language-servers = [ { name = "typescript-language-server", except-features = [ "format" ] }, "efm-lsp-prettier" ] ``` Each requested LSP feature is priorized in the order of the `language-servers` array. For example the first `goto-definition` supported language server (in this case `typescript-language-server`) will be taken for the relevant LSP request (command `goto_definition`). If no `except-features` or `only-features` is given all features for the language server are enabled, as long as the language server supports these. If it doesn't the next language server which supports the feature is tried. The list of supported features are: - `format` - `goto-definition` - `goto-declaration` - `goto-type-definition` - `goto-reference` - `goto-implementation` - `signature-help` - `hover` - `document-highlight` - `completion` - `code-action` - `workspace-command` - `document-symbols` - `workspace-symbols` - `diagnostics` - `rename-symbol` - `inlay-hints` Another side-effect/difference that comes with this PR, is that only one language server instance is started if different languages use the same language server.