Commit Graph

708 Commits

Author SHA1 Message Date
Martin Weinelt
61a89956e3
book: Mention Helix package in nixpkgs (#7064) 2023-05-26 04:33:20 -05:00
Blaž Hrastnik
0266ec6ba3
Update language support doc 2023-05-26 13:43:41 +09:00
LeoniePhiline
41f52d74fe
fix(docs): Remove config from language configuration docs (#7082) 2023-05-19 19:27:21 -05:00
Szabin
70e4cdbd8e
Add command to merge non-consecutive ranges (#7053)
* 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`
2023-05-20 01:31:39 +02:00
Philipp Mildenberger
f8fa0d8a10 Clarify language-servers documentation for mergeable LSP features (diagnostics, code-action, completion, document-symbols and workspace-symbols) 2023-05-18 22:11:38 +02:00
Philipp Mildenberger
7d20740b5b Fix docgen and lsp-stop documentation 2023-05-18 21:48:32 +02:00
Philipp Mildenberger
d963050621 Format/fix language docs a bit 2023-05-18 21:48:32 +02:00
Philipp Mildenberger
74e21e1b25 Fix some lints/docgen hints 2023-05-18 21:48:32 +02:00
Philipp Mildenberger
71551d395b Adds support for multiple language servers per language.
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.
2023-05-18 21:48:30 +02:00
Kitsu
92c328c088
Add wbc and wbc! commands (#6947) 2023-05-09 22:21:29 +02:00
Ollie Charles
8424f387b5
Remove tree-sitter-cabal (#6996) 2023-05-09 21:31:22 +02:00
David Else
69332ae3b2
Add Flathub as third party repository (#6994) 2023-05-09 15:38:36 +02:00
Dave Powers
5ae30f1993
Fix keymap select / extend mode anchor link (#6974) 2023-05-05 09:43:56 -05:00
taupiqueur
c49faf5681
Add language server command for Crystal (#6948) 2023-05-03 09:43:37 +09:00
sscheele
f52e81b1f3
Update docs for move_visual_line_* (#6918) 2023-04-30 14:26:18 -05:00
Timothy DeHerrera
9c6c63a2be
inject language based on file extension & shebang (#3970)
* 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
2023-04-28 18:21:34 +09:00
jorge
204d1eba4b
feat(commands): add clear-register typable command (#5695)
Co-authored-by: Jorge <chorcheus@tutanota.com>
2023-04-27 21:57:05 +02:00
ap29600
9cdc6b2e8a
Change Odin grammar to ap29600/tree-sitter-odin (#6766)
* Change Odin grammar to `ap29600/tree-sitter-odin`

The previously adopted grammar, `MineBill/tree-sitter-odin`, is unmaintained and mentions my repository as an alternative source.

* update queries

* docgen

* fix queries

* Update runtime/queries/odin/highlights.scm

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* remove `ERROR` query for `odin`

* track the latest rev in `ap29600/tree-sitter-odin`

* runtime/queries/odin/highlights.scm: update rune highlight class

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

---------

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2023-04-27 16:32:21 +02:00
Vitalii Solodilov
2836ea2ac4
feat: add a config option to exclude declaration from LSP references (#6886)
* feat: added the config option to exclude declaration from reference query

Fixes: #5344

* fix: review

* fix: review
2023-04-27 16:30:15 +02:00
Wesley
903bdaae87
Set PerlNavigator as the language server for Perl (#6860) 2023-04-27 01:28:54 +02:00
Atticus Sebastiani
228a4af35f
make :u alias :update (#6835)
* Gave the command update the alias u

* Re added trailing newline

* generated docs
2023-04-23 04:07:34 +02:00
Michael T. Mordowanec
a1044a6c68
Change soft-wrap.wrap_at_text_width to kebab case in documentation (#6842)
Solves #6803.
2023-04-21 16:45:50 -05:00
David Else
83c307a66a
Improve and update the installation documentation (#6809) 2023-04-20 00:56:18 +02:00
VuiMuich
4cdba7cccd
Add standalone language support for just (#6453)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2023-04-14 17:03:21 +02:00
Michael
161fef2166
Add DTD language support (#6644)
- Added syntax highlighting for the DTD subset of the XML spec.
- Included .dtd and .ent as common file extensions
2023-04-12 15:28:51 -05:00
lefp
fff8543b58
Add OpenCL tree-sitter and LSP config (#6473) 2023-04-12 14:42:41 -05:00
Matouš Dzivjak
70de5026b8
feat(languages): Support markdoc (#6432)
Add basic support for [markdoc](https://markdoc.dev/).

For language server, see: https://github.com/markdoc-extra/markdoc-ls
For tree sitter, see: https://github.com/markdoc-extra/tree-sitter-markdoc
2023-04-12 10:28:03 -05:00
Ollie Charles
92c5f5f18c
Initial Cabal language support (#6485) 2023-04-12 08:38:11 -05:00
tippfehlr
5106a124ed
Fix file-picker.follow-symlinks config option name in docs (#6685) 2023-04-10 10:09:45 -05:00
Nico Bos
894c2b9edb
Add Windows install instructions using Winget (#6602) 2023-04-09 14:57:41 -05:00
Alireza Alavi
78b516430a
Fix minor grammar issue in 'from-vim' docs (#6667) 2023-04-09 14:23:57 -05:00
karei
1148ce1fd9
Add support for Robot Framework files (#6611)
* Add support for Robot Framework files

* Run docgen
2023-04-07 08:19:48 +08:00
Clara Hobbs
4b32b544fc
Add textobject queries for Julia (#6588)
* Add textobjects queries for Julia

* Update docs for Julia textobject queries
2023-04-07 00:35:05 +08:00
Erasin Wang
c22ebfe62e
Add Hurl Support (#6450)
* Add http Support

It's like [vscode-restclient](https://github.com/Huachao/vscode-restclient)

- https://github.com/erasin/tree-sitter-http/tree/main/tests

* Add Hurl Support
2023-04-07 00:26:41 +08:00
Pascal Kuthe
9fe3adcff9
add option to enable/disable lsp snippets 2023-03-31 15:19:36 +09:00
Clara Hobbs
d284444eb4
Add indents.scm for Julia (#6490)
* Add indents.scm for Julia

* Update documentation for new indent support
2023-03-31 10:32:36 +09:00
Pascal Kuthe
5b3dd6a678 implement proper lsp-workspace support
fix typo

Co-authored-by: LeoniePhiline <22329650+LeoniePhiline@users.noreply.github.com>
2023-03-29 12:57:30 +09:00
Pascal Kuthe
2d10a429eb add workspace config and manual LSP root management
fixup documentation

Co-authored-by: LeoniePhiline <22329650+LeoniePhiline@users.noreply.github.com>

fixup typo

Co-authored-by: LeoniePhiline <22329650+LeoniePhiline@users.noreply.github.com>
2023-03-29 12:57:30 +09:00
Filip Dutescu
d59b80514e
feat(debug): highlight current line (#5957)
Add new theme highlight keys, for setting the colour of the breakpoint
character and the current line at which execution has been paused at.
The two new keys are `ui.highlight.frameline` and `ui.debug.breakpoint`.
Highlight according to those keys, both the line at which debugging
is paused at and the breakpoint indicator.

Add an indicator for the current line at which execution is paused
at, themed by the `ui.debug.active` theme scope. Update various themes
to showcase how the new functionality works.

Better icons are dependent on #2869, and as such will be handled in the
future, once it lands.

Closes: #5952

Signed-off-by: Filip Dutescu <filip.dutescu@gmail.com>
2023-03-29 12:52:19 +09:00
Michael Davis
d7431db55c
Update tree-sitter-git-commit, add comment textobject (#6439)
The update includes a fix for comments in commit messages where there
was no space separating the '#' and the comment text.

The comment textobject can be useful occasionally to jump to the
summary part of the commit edit message.
2023-03-27 15:27:38 +09:00
JJ
c8fde8b6f9
Initial Nim language support (#6123) 2023-03-26 17:06:48 -05:00
Juan C. Müller
5d7c90c5cf
Add language support for rego (OpenPolicyAgent) (#6415) 2023-03-26 16:49:37 -05:00
Tom Burdick
685ae2365a
Add vhdl language support (#5826)
Simple highlight query file with keywords and builtin types
matching. Many VHDL types however are defined in std libraries
which do not currently get matched on.

This is because the grammar doesn't consider them builtin types.
2023-03-25 12:10:54 -05:00
Erasin Wang
851ac6cdd3
Add theme keys for (un)checked markup list items (#6434) 2023-03-25 11:41:31 -05:00
Juan C. Müller
6acd200028
Fix spelling of diagnostics (#6418) 2023-03-24 11:26:41 +09:00
zetashift
0e0c16e6fa
Add initial Smithy support (#6370) 2023-03-21 17:12:24 -05:00
Gautam Panchal
3da63fa481
Add instructions for installing via AppImage (#6368) 2023-03-20 18:36:27 -05:00
Aaron Bull Schaefer
203cf1a919
Document ui.highlight theme key (#6372)
This scope was added via bf5b9a9f35
2023-03-20 21:55:48 +08:00
angelodlfrtr
ac2a7731a6
Add language support for Cap’n Proto format (#6325) 2023-03-18 09:17:02 -05:00
Erasin Wang
fb56a4bb75
Improve tree-sitter queries for vlang (#6279)
- Update hightlight
- add indents
- add textobject
- add injections
2023-03-15 16:22:24 -05:00
Jonatan Pettersson
d479adfdc6
Add undercurl config option #6196 (#6253)
If set to 'true' this option will force terminal undercurl support.
2023-03-14 11:53:38 +09:00
Erasin Wang
221a4ac883
Theme onelight add inlay-hint (#6276)
- fix: add `markup.strikethrough` for theme.md 
- add virtual.inlay-hint
- fix ui.virtual.wrap
- rename light-white to grey-300
2023-03-12 11:56:54 -05:00
Poliorcetics
bdcd4d9411
Feat: LSP Type Hints (#5934)
* misc: missing inline, outdated link

* doc: Add new theme keys and config option to book

* fix: don't panic in Tree::try_get(view_id)

Necessary for later, where we could be receiving an LSP response
for a closed window, in which case we don't want to crash while
checking for its existence

* fix: reset idle timer on all mouse events

* refacto: Introduce Overlay::new and InlineAnnotation::new

* refacto: extract make_job_callback from Context::callback

* feat: add LSP display_inlay_hint option to config

* feat: communicate inlay hints support capabilities of helix to LSP server

* feat: Add function to request range of inlay hint from LSP

* feat: Save inlay hints in document, per view

* feat: Update inlay hints on document changes

* feat: Compute inlay hints on idle timeout

* nit: Add todo's about inlay hints for later

* fix: compute text annotations for current view in view.rs, not document.rs

* doc: Improve Document::text_annotations() description

* nit: getters don't use 'get_' in front

* fix: Drop inlay hints annotations on config refresh if necessary

* fix: padding theming for LSP inlay hints

* fix: tracking of outdated inlay hints should not be dependant on document revision (because of undos and such)

* fix: follow LSP spec and don't highlight padding as virtual text

* config: add some LSP inlay hint configs
2023-03-11 11:32:14 +09:00
Dimitar Gyurov
1661e4b5e1
Add a version-control statusline element (#5682) 2023-03-10 16:42:42 -06:00
Philipp Mildenberger
98415f288f
Improved yuck highlighting (and parser), and introduced a tag.builtin scope (#6242) 2023-03-10 10:32:45 -06:00
Pascal Kuthe
d63e570e0a treat replace/insertmode consistently, default to insert 2023-03-10 16:54:17 +09:00
paul-scott
ce1fb9e64c
Generalised to multiple runtime directories with priorities (#5411)
* Generalised to multiple runtime directories with priorities

This is an implementation for #3346.

Previously, one of the following runtime directories were used:

1. `$HELIX_RUNTIME`
2. sibling directory to `$CARGO_MANIFEST_DIR`
3. subdirectory of user config directory
4. subdirectory of path to helix executable

The first directory provided / found to exist in this order was used as a
root for all runtime file searches (grammars, themes, queries).

This change lowers the priority of `$HELIX_RUNTIME` so that the user
config runtime has higher priority. More significantly, all of these
directories are now searched for runtime files, enabling a user to override
default or system-level runtime files. If the same file name appears
in multiple runtime directories, the following priority is now used:

1. sibling directory to `$CARGO_MANIFEST_DIR`
2. subdirectory of user config directory
3. `$HELIX_RUNTIME`
4. subdirectory of path to helix executable

One exception to this rule is that a user can have a `themes`
directory directly in the user config directory that has higher piority
to `themes` directories in runtime directories. That behaviour has been
preserved.

As part of implementing this feature `theme::Loader` was simplified
and the cycle detection logic of the theme inheritance was improved to
cover more cases and to be more explicit.

* Removed AsRef usage to avoid binary growth

* Health displaying ;-separated runtime dirs

* Changed HELIX_RUNTIME build from src instructions

* Updated doc for more detail on runtime directories

* Improved health symlink printing and theme cycle errors

The health display of runtime symlinks now prints both ends of the
link.

Separate errors are given when theme file is not found and when the
only theme file found would form an inheritence cycle.

* Satisfied clippy on passing Path

* Clarified highest priority runtime directory purpose

* Further clarified multiple runtime details in book

Also gave markdown headings to subsections.

Fixed a error with table indentation not building
table that also appears present on master.

---------

Co-authored-by: Paul Scott <paul.scott@anu.edu.au>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
2023-03-09 23:50:43 +09:00
Clément Delafargue
8dd1ab4899
Softwrapping improvements (#5893)
* use max_line_width + 1 during softwrap to account for newline char

Helix softwrap implementation always wraps lines so that the newline
character doesn't get cut off so he line wraps one chars earlier then
in other editors. This is necessary, because newline chars are always
selecatble in helix and must never be hidden.

However That means that `max_line_width` currently wraps one char
earlier than expected. The typical definition of line width does not
include the newline character and other helix commands like `:reflow`
also don't count the newline character here.

This commit makes softwrap use `max_line_width + 1` instead of
`max_line_width` to correct the impedance missmatch.

* fix typos

Co-authored-by: Jonathan Lebon <jonathan@jlebon.com>

* Add text-width to config.toml

* text-width: update setting documentation

* rename leftover config item

* remove leftover max-line-length occurrences

* Make `text-width` optional in editor config

When it was only used for `:reflow` it made sense to have a default
value set to `80`, but now that soft-wrapping uses this setting, keeping
a default set to `80` would make soft-wrapping behave more aggressively.

* Allow softwrapping to ignore `text-width`

Softwrapping wraps by default to the viewport width or a configured
`text-width` (whichever's smaller). In some cases we only want to set
`text-width` to use for hard-wrapping and let longer lines flow if they
have enough space. This setting allows that.

* Revert "Make `text-width` optional in editor config"

This reverts commit b247d526d6.

* soft-wrap: allow per-language overrides

* Update book/src/configuration.md

Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>

* Update book/src/languages.md

Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>

* Update book/src/configuration.md

Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>

---------

Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
Co-authored-by: Jonathan Lebon <jonathan@jlebon.com>
Co-authored-by: Alex Boehm <alexb@ozrunways.com>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
2023-03-08 11:02:11 +09:00
Pascal Kuthe
48b6aa9a69
Add command for resetting diff hunks (#5736) 2023-03-08 10:49:14 +09:00
Davide Galassi
f976c004e2
Allow LSP server to be stopped (#5964) 2023-03-07 18:34:31 -06:00
David Else
707457c632
Rewrite and refactor all documentation (#5534)
* 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>
2023-03-06 18:27:17 +09:00
cinerea0
5ebe1014ac
docs: describe tab-width and unit subkeys (#5862) 2023-03-06 18:20:24 +09:00
Roberto Vidal
725d9aecf0
Add support for reStructuredText (#6180) 2023-03-04 20:36:01 -06:00
Nick
bf872366fd
Document the file-modification-indicator statusline element (#6036) 2023-03-04 11:34:17 -06:00
Matthias Q
2bd8bc8d84
feat(prql): add prql support (#6126) 2023-03-03 13:12:37 -06:00
lesleyrs
8dab8a0a03 Add shift-backspace keybind alias for backspace (#4937)
When the Kitty Keyboard Protocol is enabled, S-backspace is
distinguished from backspace with no modifiers. This is awkward when
typing because it's very easy to accidentally hold shift and press
backspace temporarily when typing capital letters.

Kakoune (which is also a Kitty Keyboard Protocol application) treats
S-backspace as backspace too:
3150e9b3cd/src/input_handler.cc (L1275)
2023-02-28 12:35:52 +09:00
Mathieu Agopian
a976786a4f
book: Document <space>h and <space>g (#6124) 2023-02-27 21:03:56 -06:00
Mathieu Agopian
98a3d46912
Add elm treesitter textobjects (#6084) 2023-02-25 12:55:44 -06:00
Matthew Toohey
a4049e6f55
feat: add nasm language (#6068) 2023-02-25 12:53:37 -06:00
Sophie Dankel
f69bb41169
Add language support for sway (#6023) 2023-02-25 12:47:54 -06:00
Erasin
864ee8fdef
Add GNU gettext PO grammar (#5996) 2023-02-20 17:04:17 -06:00
Philipp Mildenberger
b89b2eaf68
Added yuck language support (for eww) (#6064) 2023-02-20 16:42:54 -06:00
Jummit
5ff2cb24e2
Add support for the uxntal language (#6047) 2023-02-19 12:32:42 -06:00
Guillaume
78a1e2db60
feat: show current language when no argument is provided (#5895) 2023-02-16 23:48:35 +09:00
vwkd
72e5704f52
docs: clarify join_selections_space (#5969) 2023-02-13 13:46:47 -06:00
A-Walrus
8b09b00942
Add :toggle-option command (#4085)
This command toggles the value of boolean options
2023-02-13 11:40:31 +09:00
Erasin
c71b4c5579
Update grammar for godot (#5944)
* update grammar for gdscript.
* add comment injections for gdscript.
* add indent for gdscript
* add file-type support for godot-resource
2023-02-12 14:03:02 -06:00
ath3
1840d775c8
Added tree-sitter-hosts (#4950) 2023-02-10 11:32:04 -06:00
ath3
189c3c2ddc
Add tree-sitter-passwd (#4959) 2023-02-10 11:12:46 -06:00
Matthew Toohey
05c5207265
feat: add pem language (#5797) 2023-02-07 17:24:26 -06:00
Jaeho Choi
0eba0db4a0
docs: Fix PowerShell runtime linking command (#5822) 2023-02-05 13:31:20 -06:00
Alex
d6e2434f73
Add ui.virtual.wrap to theme docs (#5823) 2023-02-04 10:33:53 -06:00
William Etheredge
f7bd7b5eaf
Add :character-info command (#4000) 2023-02-03 08:24:46 -06:00
Brett Lyons
d8f482e11e
Add MSBuild language based on XML grammar (#5793) 2023-02-03 08:24:22 -06:00
Skyler Hawthorne
06d095f31c provide option to completely disable lsp 2023-02-02 14:53:18 -05:00
Pascal Kuthe
6ed2348078
Hide duplicate symlinks from the picker (#5658)
* hide duplicate symlinks from the picker

* Apply suggestions from code review

Co-authored-by: g-re-g <123515925+g-re-g@users.noreply.github.com>

* minor stylistic fix

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

---------

Co-authored-by: g-re-g <123515925+g-re-g@users.noreply.github.com>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2023-02-02 11:14:02 -06:00
Pascal Kuthe
4dcf1fe66b
rework positioning/rendering and enable softwrap/virtual text (#5420)
* rework positioning/rendering, enables softwrap/virtual text

This commit is a large rework of the core text positioning and
rendering code in helix to remove the assumption that on-screen
columns/lines correspond to text columns/lines.

A generic `DocFormatter` is introduced that positions graphemes on
and is used both for rendering and for movements/scrolling.
Both virtual text support (inline, grapheme overlay and multi-line)
and a capable softwrap implementation is included.

fix picker highlight

cleanup doc formatter, use word bondaries for wrapping

make visual vertical movement a seperate commnad

estimate line gutter width to improve performance

cache cursor position

cleanup and optimize doc formatter

cleanup documentation

fix typos

Co-authored-by: Daniel Hines <d4hines@gmail.com>

update documentation

fix panic in last_visual_line funciton

improve soft-wrap documentation

add extend_visual_line_up/down commands

fix non-visual vertical movement

streamline virtual text highlighting, add softwrap indicator

fix cursor position if softwrap is disabled

improve documentation of text_annotations module

avoid crashes if view anchor is out of bounds

fix: consider horizontal offset when traslation char_idx -> vpos

improve default configuration

fix: mixed up horizontal and vertical offset

reset view position after config reload

apply suggestions from review

disabled softwrap for very small screens to avoid endless spin

fix wrap_indicator setting

fix bar cursor disappearring on the EOF character

add keybinding for linewise vertical movement

fix: inconsistent gutter highlights

improve virtual text API

make scope idx lookup more ergonomic

allow overlapping overlays

correctly track char_pos for virtual text

adjust configuration

deprecate old position fucntions

fix infinite loop in highlight lookup

fix gutter style

fix formatting

document max-line-width interaction with softwrap

change wrap-indicator example to use empty string

fix: rare panic when view is in invalid state (bis)

* Apply suggestions from code review

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* improve documentation for positoning functions

* simplify tests

* fix documentation of Grapheme::width

* Apply suggestions from code review

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* add explicit drop invocation

* Add explicit MoveFn type alias

* add docuntation to Editor::cursor_cache

* fix a few typos

* explain use of allow(deprecated)

* make gj and gk extend in select mode

* remove unneded debug and TODO

* mark tab_width_at #[inline]

* add fast-path to move_vertically_visual in case softwrap is disabled

* rename first_line to first_visual_line

* simplify duplicate if/else

---------

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2023-02-01 02:03:19 +09:00
Antonius Naumann
56c0810c68
Change default language server for 'v' from 'vls' to 'v ls' (#5677) 2023-01-25 09:56:51 -06:00
Eloi Torrents
7e191f5915
Support sagemath language (#5649) 2023-01-23 12:10:27 -06:00
Doug Kelkhoff
2b58ff4d7c
Add configuration for min width of line-numbers gutter (#4724) 2023-01-21 14:20:59 -06:00
yashpalgoyal1304
edd0ba7f19
book: Link MSYS2 proper command page (#5601) 2023-01-20 10:05:34 -06:00
Pascal Kuthe
1b69c7b4af
doc: add build instructions for musl-libc (#5572) 2023-01-18 10:01:17 -06:00
gibbz00
deae13f404
Primary cursor colors by mode (#5130)
* (theme) feat: mode based primary cursor colors

* docs/themes: mode based primary cursor colors
2023-01-18 14:18:49 +09:00
Clément Delafargue
9530fab4b6 doc: expand documentation on configuring minor modes
Fixes #3835, #4811
2023-01-17 12:05:19 -06:00
Clément Delafargue
a02dd17e82 doc: make the order of unimpaired mappings consistent
Most mappings are next `]` then previous `[`, except for a few ones.

Fixes #5145
2023-01-17 12:05:19 -06:00
Clément Delafargue
7bdba4a6bf doc: add missing whitespace.render sub-key 2023-01-16 10:02:15 -06:00
Clément Delafargue
425d7e5f1b doc: add a note about nested bindings in key remapping
It was not clear (to me) that minor modes were configurable in the
keymap configuration.
2023-01-16 10:02:15 -06:00
Clément Delafargue
b6331394a3 book: fix the injection-regex example
The regex uses anchors, while all of the language
configs packaged with helix don't use them.
2023-01-13 09:42:05 -06:00
Clément Delafargue
1f6809c9ce Language support for dhall
https://dhall-lang.org/
2023-01-13 09:42:05 -06:00
Matthias Wahl
e65f28d41a
Add language support for ponylang (#5416)
See https://www.ponylang.io
2023-01-10 19:54:19 -06:00
Chickenkeeper
486c3ab0d5
Fix Broken Attribute Highlights (#5349)
* Update highlights.scm

* Update highlights.scm

* Update themes.md
2023-01-09 11:26:08 +09:00
Michael Davis
b368df5785
Use tree-sitter-ruby for crystal (#5205) 2023-01-09 02:12:04 +09:00
Michal Melewski
a39a2ce9a8
book: Recommend '--locked' for cargo installs (#5438) 2023-01-07 22:55:35 -05:00
Biswapriyo Nath
6ae092acce
book: Clarify install commands for msys2 in Windows (#5363) 2023-01-07 14:46:45 +09:00
Dom H
532531c3ca
Add runtime queries for tfvars (based on hcl) (#5396) 2023-01-06 06:59:13 -06:00
Howard Halim
0196cccb0c
Fix typos (#5415) 2023-01-06 06:44:34 -06:00
Nick
c9ed42cdec
Add a status line element that shows just the basename of the file (#5318) 2022-12-31 08:18:14 -06:00
DylanBulfin
1107296ca9
Add command to merge consecutive ranges in selection (#5047) 2022-12-22 20:27:20 -06:00
Jonathan LEI
24cd7f6adf Make prompt suggestions greyed out 2022-12-17 13:59:05 -06:00
g-s-k
042d03269e
Add support for MATLAB/Octave files (#5192) 2022-12-17 13:44:08 -06:00
Jonas Everaert
aecb524e50
Crystal language support (#4993) 2022-12-17 13:34:00 -06:00
Ifiok Jr
9c9c775a27
Fix a typo in the docs (#5191) 2022-12-18 00:09:14 +09:00
Blaž Hrastnik
ec9aa66902
Remove redraw to fix build 2022-12-15 22:23:06 +09:00
Roberto Vidal
f916915b53
add redraw command (#4354)
* add redraw command

* update docs

* Update helix-term/src/commands/typed.rs

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* update docs

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2022-12-15 17:59:34 +09:00
gavincrawford
012fc12f97
Add Bash indents (#5149) 2022-12-14 08:42:11 -06:00
Erasin
436296b76c
Add Mermaid.js for markdown support (#5147) 2022-12-14 07:51:00 -06:00
Alexander Schlögl
0b96021643
Add :pipe-to typable command that ignores shell output (#4931) 2022-12-11 20:06:24 -06:00
Slug
c5bfb792b2
update(theme): adjust base16_transparent and dark_high_contrast (#5105) 2022-12-11 12:14:10 -06:00
Ollie Charles
0e8ea13696
Add Haskell text objects (#5061) 2022-12-10 14:03:18 -06:00
Felipe S. S. Schneider
d14de27709
Add support for the BibTeX file format (#5064) 2022-12-08 22:33:08 -06:00
TotalKrill
16e13b9789
allow specifying environment for language servers in language.toml (#4004)
Signed-off-by: Stephen Wakely <fungus.humungus@gmail.com>
Co-authored-by: Stephen Wakely <fungus.humungus@gmail.com>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
2022-12-08 22:09:23 -06:00
Pascal Kuthe
af532147c9
Add command/keybinding to jump between hunks (#4650)
* add command and keybding to jump to next/prev hunk

* add textobject for change

* Update helix-vcs/src/diff.rs

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* select entire hunk instead of first char

* fix selection range

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2022-12-06 23:18:33 +09:00
nosa
7210c58a51
Change default TS object bindings (#3782)
* Change default TS object bindings

Changes 'match inside/around' bindings for:
- type definition from `c` to `t`
- comments from `o` to `c`
- tests from `t` to `T`

Also changes those for the `]` / `[` bindings.

* Update docs for changed keybinds

Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2022-12-06 10:13:41 +09:00
Blaž Hrastnik
03ca18b377
Update language support docs 2022-12-05 15:02:13 +09:00
Pascal Kuthe
5a3ff74221
Show (git) diff signs in gutter (#3890)
* Show (git) diff signs in gutter (#3890)

Avoid string allocation when git diffing

Incrementally diff using changesets

refactor diffs to be provider indepndent and improve git implementation

remove dependency on zlib-ng

switch to asynchronus diffing with similar

Update helix-vcs/Cargo.toml

fix toml formatting

Co-authored-by: Ivan Tham <pickfire@riseup.net>

fix typo in documentation

use ropey reexpors from helix-core

fix crash when creating new file

remove useless use if io::Cursor

fix spelling mistakes

implement suggested improvement to repository loading

improve git test isolation

remove lefover comments

Co-authored-by: univerz <univerz@fu-solution.com>

fixed spelling mistake

minor cosmetic changes

fix: set self.differ to None if decoding the diff_base fails

fixup formatting

Co-authored-by: Ivan Tham <pickfire@riseup.net>

reload diff_base when file is reloaded from disk

switch to imara-diff

Fixup formatting

Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>

Redraw buffer whenever a diff is updated.

Only store hunks instead of changes for individual lines to easily allow
jumping between them

Update to latest gitoxide version

Change default diff gutter position

Only update gutter after timeout

* update diff gutter synchronously, with a timeout

* Apply suggestions from code review

Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>

* address review comments and ensure lock is always aquired

* remove configuration for redraw timeout

Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2022-12-01 17:35:23 +09:00
Michael Davis
67415e096e
Fix file-types declaration for racket (#4915)
Both the racket and scheme entries used the rkt file-extension. This
commit removes that entry for scheme and so that the racket entry takes
precedence. We explicitly point to the scheme grammar now and setup
queries that inherit from scheme. This should enable using the racket
language server configuration.
2022-11-30 23:27:08 +09:00
Lennard Hofmann
fc811726e0
Update tree-sitter-java and add Java textobjects (#4886) 2022-11-26 10:17:10 -06:00
alois31
26ec1cf39a
Add QML language support (#4842)
Fixes https://github.com/helix-editor/helix/issues/2771
2022-11-22 21:49:02 -06:00
Sora
420e33a600
Implement simple indents.scm for Elixir (#4821) 2022-11-20 18:36:19 -06:00
Filipe Azevedo
8dac863a5b
Add :reload-all command (#4663) 2022-11-20 12:39:26 -06:00
Blaž Hrastnik
767b179839
Update lang-support doc 2022-11-18 10:53:08 +09:00
Gaurav Tyagi
91ff903bf3
Add global error/warning count statusline element (#4569) 2022-11-14 19:46:07 -06:00
Jonathan
1233c9a989
Add support for Bicep files (#4403) 2022-11-14 19:43:22 -06:00
wes adams
fd585c1ee4
Statusline indicator to show number of selected chars (#4682)
Co-authored-by: wes adams <wadams@grayshift.com>
2022-11-12 11:31:09 -06:00
Philip Giuliani
e17ad2722a
Enable elixir-ls for heex language (#4679) 2022-11-10 09:21:31 -06:00
Matthias Deiml
dee5b2a983
Add LSP workspace command picker (#3140)
* Add workspace command picker

* Make command typable

* Add optional argument to lsp-workspace-command
2022-11-09 18:17:09 +09:00
Zhizhen He
0c30aeea5b
fix typo (#4656) 2022-11-08 11:02:49 -06:00
0xflotus
75d7e0555e
fix: small error (#4651) 2022-11-08 08:29:48 -06:00
Doug Kelkhoff
7ed9e9cf25
Dynamically resize line number gutter width (#3469)
* dynamically resize line number gutter width

* removing digits lower-bound, permitting spacer

* removing max line num char limit; adding notes; qualified successors; notes

* updating tests to use new line number width when testing views

* linenr width based on document line count

* using min width of 2 so line numbers relative is useful

* lint rolling; removing unnecessary type parameter lifetime

* merge change resolution

* reformat code

* rename row_styler to style; add int_log resource

* adding spacer to gutters default; updating book config entry

* adding view.inner_height(), swap for loop for iterator

* reverting change of current! to view! now that doc is not needed
2022-11-08 21:19:59 +09:00
seshotake
ed7ea8c9ba
add highlights for env and ini file formats (#4536) 2022-10-31 19:23:09 -05:00
hh9527
9df4358492
Support WIT grammar (#4525) 2022-10-31 18:48:01 -05:00
Konstantin Podsvirov
f41f28b662
Update windows install instructions (#4530) 2022-10-30 11:55:31 -05:00
Matthew Toohey
f054a3f3ed
feat(lang): add xml (#4518) 2022-10-29 15:41:28 -05:00
Jaden
b5e7501935
feat(lang): add kdl grammar (#4481) 2022-10-29 10:33:23 -05:00
rsteube
26f21da531
language: added vhs (#4486) 2022-10-28 08:22:41 -05:00
James O. D. Hunt
ac0fe29867
commands: Make no arg ':theme' show name (#3740)
Most commands that accept an argument show their current value if no
argument is specified. The `:theme` command previously displayed an
error message in the status bar if not provided with an argument:

```
Theme name not provided
```

It now shows the current theme name in the status bar if no argument is
specified.

Signed-off-by: James O. D. Hunt <jamesodhunt@gmail.com>

Signed-off-by: James O. D. Hunt <jamesodhunt@gmail.com>
2022-10-26 11:59:50 +09:00
Gaurav Tyagi
ba9e50e93b
Add :update that will write the changes if the file has been modified. (#4426)
* add command update that will write the changes if file hasn been modified

* add docs

* update the docs
2022-10-26 11:58:49 +09:00
Michael Davis
17daf6ac0a
Change syntax for suffix file-types configurations (#4414)
The change in d801a6693c to search for
suffixes in `file-types` is too permissive: files like the tutor or
`*.txt` files are now mistakenly interpreted as R or perl,
respectively.

This change changes the syntax for specifying a file-types entry that
matches by suffix:

```toml
file-types = [{ suffix = ".git/config" }]
```

And changes the file-type detection to first search for any non-suffix
patterns and then search for suffixes only with the file-types entries
marked explicitly as suffixes.
2022-10-22 09:34:15 +09:00
Sora
664064b3cc
Add textobjects.scm for zig (#4409) 2022-10-21 17:32:29 -05:00
Charlie Groves
7e29ee6dae
Autosave all when the terminal loses focus (#3178)
* Autosave all when the terminal loses focus

* Correct comment on focus config

Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>

* Need a block_try_flush_writes in all quit_all paths

Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
2022-10-21 10:35:02 +09:00