* Add TypeSpec support
Adds support for TypeSpec <https://typespec.io> in helix.
* Resolve PR comments
* Pull in LICENSE
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* feat: pertty header
* 更新 themes.md
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Document use of filter columns in pickers.
Filtering on columns was implemented in #9647.
The only documentation I could find on this feature
was the PR itself, and the video demo used a different syntax.
* Note that column filters are space-separated.
* Note that picker filters can be abbreviated.
* Specify correct picker in docs.
* Clarify picker filter prefix shortenting.
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Move picker docs to their own section.
* Update book/src/pickers.md
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Improve docs on picker registers, keybinds, and syntax.
* Clarify wording around picker queries.
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
---------
Co-authored-by: Ryan Roden-Corrent <ryan@rcorre.net>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
We can track the ranges in the input text that correspond to each column
and use this information during rendering to apply a new theme key that
makes the "active column" stand out. This makes it easier to tell at
a glance which column you're entering.
`menu::Item` is replaced with column configurations for each picker
which control how a column is displayed and whether it is passed to
nucleo for filtering. (This is used for dynamic pickers so that we can
filter those items with the dynamic picker callback rather than nucleo.)
The picker has a new lucene-like syntax that can be used to filter the
picker only on certain criteria. If a filter is not specified, the text
in the prompt applies to the picker's configured "primary" column.
Adding column configurations for each picker is left for the child
commit.
* Fix multiple broken links in the documentation
* Apply code review suggestion
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* auto save after delay
* configable
* clearer names
* init
* working with some odd behaviour
* working with greater consistency
* Apply reviewer suggestions
- Remove unneccessary field
- Remove blocking save
* Improve auto-save configuration
Auto save can be configured to trigger on focus loss:
```toml
auto-save.focus-lost = true|false
```
and after a time delay (in milli seconds) since last keypress:
```toml
auto-save.after-delay.enable = true|false
auto-save.after-delay.timeout = [0, u64::MAX] # default: 3000
```
* Remove boilerplate and unnecessary types
* Remove more useless types
* Update docs for auto-save.after-delay
* Fix wording of (doc) comments relating to auto-save
* book: Move auto-save descriptions to separate section
---------
Co-authored-by: Miguel Perez <miguelvojito@gmail.com>
Co-authored-by: Miguel Perez <perezoji@cs.fsu.edu>
Previously, the link would point to the now moved "How to install the default language servers" page. The link now directly points to the up-to-date page.
* Add completion/signature bindings to keymap.md
PR #9974 added alt-p/alt-n keybindings to scroll through signatures.
This wasn't very discoverable, as it's not in the docs or the command palette.
This also removes a broken link for "comment mode" in the table of contents.
* Update keymap.md
* add textobjects queries comment and function
* update doc for hurl lang support
* switch entry.inner to entry.outer
* switch to function.inside
---------
Co-authored-by: Tobias Eiß <te@clarilab.de>
The prior URL invites you to create a new wiki page. I think https://github.com/helix-editor/helix/wiki/Language-Server-Configurations is the correct place to point to now.
There might be more issues related to changes in wiki structure that are not caught by some CI link check because of this (it's a valid URL, just not what you want to direct to lol)
* Update the tree sitter to support Typst 0.11 and changed the lsp to Tinymist
* Fixed
* Added typst-lsp & tinymist
---------
Co-authored-by: Idobenhamo <idobenhamo@users.noreply.github.com>
Add support for .xtc/.xoa/.xpc files
* XTC stand for Xena Traffic Configuration
* XOA stand for Xena OpenAutomation
* XPC stand for Xena Port Configuration
Theses three file time seems to be the most common file extension I
encountered in the wild
* feat(lang): add LDIF support
* style: no unnecessary glob
* Update runtime/queries/ldif/highlights.scm
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* feat: Add `Ohm` language support
Hope this commit makes it into release :)
* Update runtime/queries/ohm/highlights.scm
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* chore: final newline
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* feat: add support for ember .hbs (glimmer) templates
* adjust highlights to helix
* highlight this correctly in block statements
* correctly highlight attributes
* correctly highlight hash_pair
* add newline to highlights.scm
* refactor: use #any-of and #eq instead of #match
* chore: add newline to languages.toml
* Adding initial support for ada language, based off #7790 PR from tomekw
* More translation to helix-specific tree-sitter scm labels, add ada gpr switch to ada LSP
* Generate ada in lang-support.md using cargo xtask docgen
* Update tree-sitter definitions according to comments
* Remove .gpr glob from languages.toml
* Fix unit in languages.toml for ada, update locals.scm to helix needs
* feat: add 'file-abs-path' to statusline (#4434)
* cleanup implementation
* rename to be non-abbreviated names
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Added `jsonc` language with support for comments
The `vscode-json-language-server` accepts `jsonc` as a language id.
Allowing the use of comments within JSON files.
* fix: Update `injdection-rejex` to be unique
* fix: use includes to remove redundant queries
* ci: Generate language-support docs
* Add Groovy grammar
* Rewrite Neovim captures into Helix for Groovy
* Simplify Groovy injections
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Remove Neovim's spell from Groovy highlights
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Apply suggestions to languages.toml
* Escape backslash in groovy highlights.scm
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* languages: add docker-compose language
it uses docker-compose-langserver as lsp
And yaml for syntax highlighting, indents and injections
* languages: add luajit as a shebang of lua
This helps to provide syntax highlighting and
other lua goodies when writing luajit
* book(update): run cargo xtask docgen
* since #8006 full filenames uses glob
* neovim like scroll function
* clear line annotations outside of move_vertically/_visual
* add nvim scroll function to commands
* assign nvim-scroll to C-d and C-u (half page scrolls)
* dont remove backspace and space mapping
* move non-softwrap logic to seperate function, call this in nvim-scroll fn
* Revert "move non-softwrap logic to seperate function, call this in nvim-scroll fn"
This reverts commit e4905729c3.
* Revert "clear line annotations outside of move_vertically/_visual"
This reverts commit 1df3fefe55.
* add TODO for when inline diagnostics gets merged
* move nvim-scroll logic into scroll(), dont respect scrolloff
* run cargo fmt
* run cargo clippy
* update documenation for Ctrl-d and Ctrl-u remap
Before there was no document about what the `diff` gutter is displaying
or what the colors mean.
These docs clarify it's a `git` diff and makes it easier to
cross-reference the theme if you aren't sure what the colors mean or
want to change them.
* Added required-root-patterns for situational lsp activation using globbing
* Replaced filter_map with flatten
* updated book to include required-root-patterns option
* fixed wrong function name for path
* Added globset to helix-core. Moved globset building to config parsing.
* Normalize implements AsRef
* cargo fmt
* Revert "cargo fmt"
This reverts commit ca8ce123e8.
* languages: add CEL language and grammar
* languages: add spicedb schema language
* chore: docgen
* runtime/queries: refine spicedb & cel highlights
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* languages: update spicedb
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Replace FileType::Suffix with FileType::Glob
Suffix is rather limited and cannot be used to match files which have
semantic meaning based on location + file type (for example, Github
Action workflow files). This patch adds support for a Glob FileType to
replace Suffix, which encompasses the existing behavior & adds
additional file matching functionality.
Globs are standard Unix-style path globs, which are matched against the
absolute path of the file. If the configured glob for a language is a
relative glob (that is, it isn't an absolute path or already starts with
a glob pattern), a glob pattern will be prepended to allow matching
relative paths from any directory.
The order of file type matching is also updated to first match on globs
and then on extension. This is necessary as most cases where
glob-matching is useful will have already been matched by an extension
if glob matching is done last.
* Convert file-types suffixes to globs
* Use globs for filename matching
Trying to match the file-type raw strings against both filename and
extension leads to files with the same name as the extension having the
incorrect syntax.
* Match dockerfiles with suffixes
It's common practice to add a suffix to dockerfiles based on their
context, e.g. `Dockerfile.dev`, `Dockerfile.prod`, etc.
* Make env filetype matching more generic
Match on `.env` or any `.env.*` files.
* Update docs
* Use GlobSet to match all file type globs at once
* Update todo.txt glob patterns
* Consolidate language Configuration and Loader creation
This is a refactor that improves the error handling for creating
the `helix_core::syntax::Loader` from the default and user language
configuration.
* Fix integration tests
* Add additional starlark file-type glob
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Add text object queries for dart
* Update runtime/queries/dart/textobjects.scm
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Clean up internal capture name
---------
Co-authored-by: Sébastien Blondiau <sebastien.blondiau@iot-d.com>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* highlights(bash): rework keywords section
* Use more specified scope when possible for keywords like @keyword.repeat.
* Add more keywords like "local" or "unsetenv".
Limitation:
* Bash doesn't allow you to have a local variable outside of a function, so maybe we need to have better queries to not highlight the local in this case.
* If we name a function with a keyword (such as unset or local), it will use the highlight scope "keyword" instead of "function".
* indents(css, make): add basic queries
* Despite the fact that queries look simple, they improve indentation in some edge cases that helix couldn't handle correctly by default.
* info: no grammar compile
Added instructions on how to compile without compiling grammars
* Update book/src/install.md
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
---------
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Make the pluralization of files and selections consistent to emphasize
the 1-to-1 relation between files and selections. The prior wording
with plural "files" and singular "selection" can mislead users into
thinking the command can open multiple files from a single selection.