* inject language based on file extension
Nodes can now be captured with "injection.filename". If this capture
contains a valid file extension known to Helix, then the content will
be highlighted as that language.
* inject language by shebang
Nodes can now be captured with "injection.shebang". If this capture
contains a valid shebang line known to Helix, then the content will
be highlighted as the language the shebang calls for.
* add documentation for language injection
* nix: fix highlights
The `@` is now highlighted properly on either side of the function arg.
Also, extending the phases with `buildPhase = prev.buildPhase + ''''`
is now highlighted properly.
Fix highlighting of `''$` style escapes (requires tree-sitter-nix bump)
Fix `inherit` highlighting.
* simplify injection_for_match
Split out injection pair logic into its own method to make the overall
flow easier to follow.
Also transform the top-level function into a method on a
HighlightConfiguration.
* markdown: add shebang injection query
* Rewrite and refactor all documentation
* Rewrite and refactor the guides
* update runtime directory instructions for windows
* Update the Ubuntu 3rd party repo section with 22.10
* Merge from upstream
* Rewrite and refactor all documentation
* Apply suggestions from code review
Apply the suggestions that can be committed from the GitHub web interface.
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Add Windows themes folder
Co-authored-by: digidoor <37601466+digidoor@users.noreply.github.com>
* Apply the rest of the suggestions from the code review
* Revert "Apply the rest of the suggestions from the code review"
This reverts commit 498be1b7a1.
* Revert "Merge branch 'rewrite-and-refactor-all-documentation' of github.com:David-Else/helix into rewrite-and-refactor-all-documentation"
This reverts commit 7c8404248f, reversing
changes made to d932969cfc.
* Apply code review suggestions
* Changes after re-reading all documents
* Missed a full stop
* Code review suggestions and remove macOS and Windows specific sections
* Add OpenBSD to heading
* Add back macOS and Windows sections and further simplify and improve
* Change wording to nightly
* Remove README installation section and turn into a link
* Simplify building from source and follow code review suggestions
* Code review revisions
* Fix copy paste mistake
* Apply the latest code review suggestions
* More small code review items
* Change minor modes for code review
* Fix link and typos
* Add note that you need a c++ compiler to install the tree-sitter grammars
* Add pacman example
* Make sure all headings are lower case
* Revert to the original passage adding a reference to Windows that was missing
* Update book/src/guides/adding_languages.md
Fix grammar typo
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Update book/src/install.md
Fix tree sitter typo
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Remove TOC links to main heading
---------
Co-authored-by: CptPotato <3957610+CptPotato@users.noreply.github.com>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Co-authored-by: digidoor <37601466+digidoor@users.noreply.github.com>
* WIP: Rework indentation system
* Add ComplexNode for context-aware indentation (including a proof of concept for assignment statements in rust)
* Add switch statements to Go indents.toml (fixes the second half of issue #1523)
Remove commented-out code
* Migrate all existing indentation queries.
Add more options to ComplexNode and use them to improve C/C++ indentation.
* Add comments & replace Option<Vec<_>> with Vec<_>
* Add more detailed documentation for tree-sitter indentation
* Improve code style in indent.rs
* Use tree-sitter queries for indentation instead of TOML config.
Migrate existing indent queries.
* Add documentation for the new indent queries.
Change xtask docgen to look for indents.scm instead of indents.toml
* Improve code style in indent.rs.
Fix an issue with the rust indent query.
* Move indentation test sources to separate files.
Add `#not-kind-eq?`, `#same-line?` and `#not-same-line` custom predicates.
Improve the rust and c indent queries.
* Fix indent test.
Improve rust indent queries.
* Move indentation tests to integration test folder.
* Improve code style in indent.rs.
Reuse tree-sitter cursors for indentation queries.
* Migrate HCL indent query
* Replace custom loading in indent tests with a designated languages.toml
* Update indent query file name for --health command.
* Fix single-space formatting in indent queries.
* Add explanation for unwrapping.
Co-authored-by: Triton171 <triton0171@gmail.com>
* feat(book/src/languages.md)
Add a section in the book about language-specific settings and the languages.toml file.
* Update book/src/languages.md
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
* feat(book/src/guides/adding_languages.md)
Add book section on adding a new language to the compile-time/root languages.toml file.
* Update book/src/guides/adding_languages.md
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Update book/src/guides/adding_languages.md
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* refactor(revise book/src/languages.md)
Change the book page on language settings to match suggestions by archseer and mention both toml files.
Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Add treesitter textobject queries
Only for Go, Python and Rust for now.
* Add tree-sitter textobjects
Only has functions and class objects as of now.
* Fix tests
* Add docs for tree-sitter textobjects
* Add guide for creating new textobject queries
* Add parameter textobject
Only parameter.inside is implemented now, parameter.around
will probably require custom predicates akin to nvim' `make-range`
since we want to select a trailing comma too (a comma will be
an anonymous node and matching against them doesn't work similar
to named nodes)
* Simplify TextObject cell init
* Add convenience/clarity wrapper for Range initialization
* Add keycode parse and display methods
* Add remapping functions and tests
* Implement key remapping
* Add remapping book entry
* Use raw string literal for toml
* Add command constants
* Make command functions private
* Map directly to commands
* Match key parsing/displaying to Kakoune
* Formatting pass
* Update documentation
* Formatting
* Fix example in the book
* Refactor into single config file
* Formatting
* Refactor configuration and add keymap newtype wrappers
* Address first batch of PR comments
* Replace FromStr with custom deserialize