aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* 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.
* Add 23.05 to the AppDataMichael Davis2023-05-18
|
* Add changelog notes for the 23.05 releaseMichael Davis2023-05-18
|
* Bump the version to 23.05Michael Davis2023-05-18
|
* Fix completion on paths containing spaces (#6779)Ivan Gulakov2023-05-18
| | | | | | | | | | | There was an issue with autocompletion of a path with a space in it. Before: :o test\ dir -> <TAB> -> test\ dirfile1 After: :o test\ dir -> <TAB> -> test\ dir\file1
* automatically disable TS when parsing takes longer than 500msPascal Kuthe2023-05-18
|
* async picker syntax highlightingPascal Kuthe2023-05-18
|
* cleanup integration testsPascal Kuthe2023-05-18
|
* don't move cursor while forward deleting in append modePascal Kuthe2023-05-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, when forward deleting (`delete_char_forward` bound to `del`, `delete_word_forward`, `kill_to_line_end`) the cursor is moved to the left in append mode (or generally when the cursor is at the end of the selection). For example in a document `|abc|def` (|indicates selection) if enter append mode the cursor is moved to `c` and the selection becomes: `|abcd|ef`. When deleting forward (`del`) `d` is deleted. The expectation would be that the selection doesn't shrink so that `del` again deletes `e` and then `f`. This would look as follows: `|abcd|ef` `|abce|f` `|abcf|` `|abc |` This is inline with how other editors like kakoune work. However, helix currently moves the selection backwards leading to the following behavior: `|abcd|ef` `|abc|ef` `|ab|ef` `ef` This means that `delete_char_forward` essentially acts like `delete_char_backward` after deleting the first character in append mode. To fix the problem the cursor must be moved to the right while deleting forward (first fix in this commit). Furthermore, when the EOF char is reached a newline char must be inserted (just like when entering appendmode) to prevent the cursor from moving to the right
* cleanup delete_by_selection_insert_mode functionPascal Kuthe2023-05-18
|
* fix panic when deleting overlapping rangesPascal Kuthe2023-05-18
| | | | | | | | | | | | | Some deletion operations (especially those that use indentation) can generate overlapping deletion ranges when using multiple cursors. To fix that problem a new `Transaction::delete` and `Transaction:delete_by_selection` function were added. These functions merge overlapping deletion ranges instead of generating an invalid transaction. This merging of changes is only possible for deletions and not for other changes and therefore require its own function. The function has been used in all commands that currently delete text by using `Transaction::change_by_selection`.
* clarify comments about completion savepointsPascal Kuthe2023-05-18
| | | | Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* only resolve completion items oncePascal Kuthe2023-05-18
|